diff --git a/course-mw/course-actors-common/src/main/java/org/sunbird/learner/actors/certificate/service/CourseBatchCertificateActor.java b/course-mw/course-actors-common/src/main/java/org/sunbird/learner/actors/certificate/service/CourseBatchCertificateActor.java index 3139cf0226175a843c7e53dffd8eb5a1d79a4ef7..86190d3be54cf95dd22bf909c10dd3c1700e376e 100644 --- a/course-mw/course-actors-common/src/main/java/org/sunbird/learner/actors/certificate/service/CourseBatchCertificateActor.java +++ b/course-mw/course-actors-common/src/main/java/org/sunbird/learner/actors/certificate/service/CourseBatchCertificateActor.java @@ -24,8 +24,7 @@ import org.sunbird.learner.constants.CourseJsonKey; import org.sunbird.learner.util.CourseBatchUtil; import org.sunbird.learner.util.Util; -import static org.sunbird.common.models.util.JsonKey.CLOUD_STORE_BASE_PATH; -import static org.sunbird.common.models.util.JsonKey.CLOUD_STORE_BASE_PATH_PLACEHOLDER; +import static org.sunbird.common.models.util.JsonKey.*; import static org.sunbird.common.models.util.ProjectUtil.getConfigValue; public class CourseBatchCertificateActor extends BaseActor { @@ -123,6 +122,7 @@ public class CourseBatchCertificateActor extends BaseActor { if (MapUtils.isNotEmpty((Map<String,Object>)template.get(CourseJsonKey.NOTIFY_TEMPLATE))) { // We need to change stateImgUrl in notifyTemplate Map<String, Object> notifyData = (Map<String, Object>) template.get(CourseJsonKey.NOTIFY_TEMPLATE); + //TODO cross check the data in environments and remove this check if not required String notifyTemplateUrl = getPlaceholderUrl(notifyData,JsonKey.stateImgUrl); notifyData.replace(JsonKey.stateImgUrl,notifyTemplateUrl); template.put( @@ -146,8 +146,8 @@ public class CourseBatchCertificateActor extends BaseActor { if (MapUtils.isNotEmpty(templateDetails) && templateDetails.containsKey(key)) { // replace the actual cloud url with the template value templateUrl = (String) templateDetails.get(key); - if (templateUrl.contains(getConfigValue(CLOUD_STORE_BASE_PATH))) - templateUrl = templateUrl.replace(getConfigValue(CLOUD_STORE_BASE_PATH), getConfigValue(CLOUD_STORE_BASE_PATH_PLACEHOLDER)); + if (templateUrl.contains(getConfigValue(CLOUD_STORE_BASE_PATH) +"/"+getConfigValue(CONTENT_CLOUD_STORAGE_CONTAINER))) + templateUrl = templateUrl.replace(getConfigValue(CLOUD_STORE_BASE_PATH)+"/"+getConfigValue(CONTENT_CLOUD_STORAGE_CONTAINER), getConfigValue(CLOUD_STORE_BASE_PATH_PLACEHOLDER)); } return templateUrl; } diff --git a/course-mw/course-actors-common/src/main/java/org/sunbird/learner/actors/qrcodedownload/QRCodeDownloadManagementActor.java b/course-mw/course-actors-common/src/main/java/org/sunbird/learner/actors/qrcodedownload/QRCodeDownloadManagementActor.java index bef4d34208da4a805d4448fded8d082da843a462..94ba6eac978f8dba8963e0ab2212593f75f5fb9c 100644 --- a/course-mw/course-actors-common/src/main/java/org/sunbird/learner/actors/qrcodedownload/QRCodeDownloadManagementActor.java +++ b/course-mw/course-actors-common/src/main/java/org/sunbird/learner/actors/qrcodedownload/QRCodeDownloadManagementActor.java @@ -232,16 +232,10 @@ public class QRCodeDownloadManagementActor extends BaseActor { if (null != obj && obj instanceof List) { List<Map<String, Object>> listOfMap = (List<Map<String, Object>>) obj; if (CollectionUtils.isNotEmpty(listOfMap)) { - //TODO Resolve it and store. Assuming dial code db will have the template url with data migration script - - //check if template url contains dail storage base path,if yes then append it with cnameurl and dial bucket name + //check if template url contains dail storage base path placeholder,if yes then append it with cname url and dial bucket name String templateUrl = (String) listOfMap.get(0).get("url"); - String dailStorageBasePath = getConfigValue(DIAL_STORAGE_BASE_PATH_PLACEHOLDER); - String cnameUrl = getConfigValue(CLOUD_STORAGE_CNAME_URL); - if (templateUrl.contains(dailStorageBasePath)) - templateUrl = templateUrl.replace(dailStorageBasePath, - cnameUrl.isEmpty() ? getConfigValue(CLOUD_STORE_BASE_PATH) :cnameUrl - + "/" + getConfigValue(CLOUD_STORAGE_DIAL_BUCKET_NAME)); + String dailStorageBasePathPlaceHolder = getConfigValue(DIAL_STORAGE_BASE_PATH_PLACEHOLDER); + templateUrl = resolvePlaceholder(templateUrl, dailStorageBasePathPlaceHolder,getConfigValue(CLOUD_STORAGE_DIAL_BUCKET_NAME)); return templateUrl; } } @@ -249,6 +243,20 @@ public class QRCodeDownloadManagementActor extends BaseActor { return ""; } + private String resolvePlaceholder(String templateUrl, String placeHolder,String containerName) { + if (templateUrl.contains(placeHolder)) + templateUrl = templateUrl.replace(placeHolder, getBaseUrl() + + "/" + containerName); + return templateUrl; + } + + private String getBaseUrl() { + String baseUrl = getConfigValue(CLOUD_STORAGE_CNAME_URL); + if(StringUtils.isEmpty(baseUrl)) + baseUrl = getConfigValue(CLOUD_STORE_BASE_PATH); + return baseUrl; + } + /** * Uploading the generated csv to aws * diff --git a/course-mw/sunbird-util/sunbird-platform-core/common-util/src/main/java/org/sunbird/common/models/util/JsonKey.java b/course-mw/sunbird-util/sunbird-platform-core/common-util/src/main/java/org/sunbird/common/models/util/JsonKey.java index bcc9ea43a0c44f70812e671f930a864e812ac6e2..b4a0fd0c239477253dcb6daa8529fdf0b197a1a5 100644 --- a/course-mw/sunbird-util/sunbird-platform-core/common-util/src/main/java/org/sunbird/common/models/util/JsonKey.java +++ b/course-mw/sunbird-util/sunbird-platform-core/common-util/src/main/java/org/sunbird/common/models/util/JsonKey.java @@ -791,7 +791,7 @@ public final class JsonKey { public static final String CLOUD_STORE_BASE_PATH = "cloud_storage_base_url"; public static final String CLOUD_STORAGE_CNAME_URL= "cloud_storage_cname_url"; public static final String CLOUD_STORAGE_DIAL_BUCKET_NAME = "cloud_storage_dial_bucketname"; - public static final String DIAL_STORAGE_BASE_PATH_PLACEHOLDER="DIAL_STORAGE_BASE_PATH"; + public static final String DIAL_STORAGE_BASE_PATH_PLACEHOLDER="cloud_storage_path_prefix_dial"; public static final String CLOUD_STORE_BASE_PATH_PLACEHOLDER = "cloud_store_base_path_placeholder"; public static final String TO_URL = "toUrl"; public static final String TTL = "ttl"; diff --git a/course-mw/sunbird-util/sunbird-platform-core/common-util/src/main/resources/externalresource.properties b/course-mw/sunbird-util/sunbird-platform-core/common-util/src/main/resources/externalresource.properties index ccaf02aa00f05d32e4db06307205d17190e51426..f5f217265434c0e46a291d008bcc67fff2fc4601 100644 --- a/course-mw/sunbird-util/sunbird-platform-core/common-util/src/main/resources/externalresource.properties +++ b/course-mw/sunbird-util/sunbird-platform-core/common-util/src/main/resources/externalresource.properties @@ -207,6 +207,4 @@ sunbird_msg_91_auth= sunbird_api_mgr_base_url=https://dev.sunbirded.org/api enrollment_list_size=1000 cloud_storage_base_url=https://sunbirddev.blob.core.windows.net -cloud_storage_cname_url=https://obj.stage.sunbirded.org -cloud_storage_dial_bucketname=dial cloud_store_base_path_placeholder=$CLOUD_BASE_PATH \ No newline at end of file diff --git a/service/app/filters/ResponseFilter.scala b/service/app/filters/ResponseFilter.scala index afcf461357f17c3763965c6ffbef994a440079f9..1f8f41273805722cbd48e85de820706355c54579 100644 --- a/service/app/filters/ResponseFilter.scala +++ b/service/app/filters/ResponseFilter.scala @@ -3,6 +3,7 @@ package filters import akka.stream.Materializer import akka.util.ByteString import org.sunbird.common.models.util.JsonKey +import org.sunbird.common.models.util.JsonKey.{CLOUD_STORE_BASE_PATH, CONTENT_CLOUD_STORAGE_CONTAINER} import play.api.http.HttpEntity.Strict import play.api.mvc.{Filter, RequestHeader, Result} import org.sunbird.common.models.util.ProjectUtil.getConfigValue @@ -18,7 +19,7 @@ class ResponseFilter @Inject()(implicit val mat: Materializer, ec: ExecutionCon if (null != result.body && !result.body.isKnownEmpty){ val contentType = result.body.contentType val updatedBody = result.body.consumeData.map { x => - val y = x.utf8String.replaceAll(getConfigValue(JsonKey.CLOUD_STORE_BASE_PATH_PLACEHOLDER),getConfigValue(JsonKey.CLOUD_STORE_BASE_PATH)) + val y = x.utf8String.replaceAll(getConfigValue(JsonKey.CLOUD_STORE_BASE_PATH_PLACEHOLDER),getConfigValue(CLOUD_STORE_BASE_PATH) + "/" + getConfigValue(CONTENT_CLOUD_STORAGE_CONTAINER)) logger.info("updated body: " + y) y }