Unverified Commit a3ab544e authored by Mahesh Kumar Gangula's avatar Mahesh Kumar Gangula Committed by GitHub
Browse files

Merge pull request #308 from rheafernandes/large-video

Added test coverage for http util without mocking
parents 166b2ce2 d7d27b34
schema-updates 3.9.0-prod-fix 4.1.0_fixes AmiableAnil-patch-1 Gcloud_copy Gcloud_fix Remove_unwantedCode_Gcloud_fix actors-test bulk-upload-comptenecy-mapping bulk-upload-excelsheet bulk-upload-test_excel bulk_upload code-cleanup csp-migration dependabot/maven/platform-core/platform-telemetry/ch.qos.logback-logback-core-1.2.9 dependabot/maven/search-api/search-core/org.apache.httpcomponents-httpclient-4.5.13 ft-spike knowlg-friday knowlg-oneclick local-setup-fix local-setup-kube m-4.2.0 master master-data new_objecttype org-target-enhancement patch-1 patch-2 patch-3 poc_bulk_upload qs-schema rahul_bulk_upload_postgres release-3.0.0 release-3.0.1 release-3.1.0 release-3.2.0 release-3.3.0 release-3.4.0 release-3.5.0 release-3.6.0 release-3.6.0.1 release-3.7.0 release-3.8.0 release-3.9.0 release-4.0.0 release-4.1.0 release-4.10.0 release-4.10.1 release-4.2.0 release-4.3.0 release-4.4.0 release-4.5.0 release-4.6.0 release-4.7.0 release-4.7.0-debug release-4.8.0 release-4.8.0-debug release-4.9.0 release-4.9.1 release-5.0.0 release-5.0.1 release-5.1.0 release-5.1.0-content release-5.2.0 release-5.3.0 revert-718-visiblity-private-api revert-719-assessment-private-read-api revert-720-visiblity-public-search-api revert-721-visiblity-private-search-api review-4.1.0 s-debug schema-update-4.0 release-5.2.0_RC2 release-5.2.0_RC1 release-5.1.0_RC1 release-5.0.0_RC2 release-5.0.0_RC1 release-4.10.0_RC2 release-4.10.0_RC1 release-4.9.1_RC1 release-4.9.0_RC8 release-4.9.0_RC7 release-4.9.0_RC6 release-4.9.0_RC5 release-4.9.0_RC4 release-4.9.0_RC3 release-4.9.0_RC2 release-4.9.0_RC1 release-4.8.0_RC5 release-4.8.0_RC4 release-4.8.0_RC3 release-4.8.0_RC2 release-4.8.0_RC1 release-4.7.0_RC6 release-4.7.0_RC5 release-4.7.0_RC4 release-4.7.0_RC3 release-4.7.0_RC2 release-4.7.0_RC1 release-4.6.0_RC2 release-4.6.0_RC1 release-4.5.0_RC2 release-4.5.0_RC1 release-4.4.0_RC6 release-4.4.0_RC5 release-4.4.0_RC4 release-4.4.0_RC3 release-4.4.0_RC2 release-4.4.0_RC1 release-4.3.0_RC10 release-4.3.0_RC9 release-4.3.0_RC8 release-4.3.0_RC7 release-4.3.0_RC6 release-4.3.0_RC5 release-4.3.0_RC4 release-4.3.0_RC3 release-4.3.0_RC2 release-4.3.0_RC1 release-4.2.0_RC13 release-4.2.0_RC12 release-4.2.0_RC11 release-4.2.0_RC10 release-4.2.0_RC9 release-4.2.0_RC8 release-4.2.0_RC7 release-4.2.0_RC6 release-4.2.0_RC5 release-4.2.0_RC4 release-4.2.0_RC3 release-4.2.0_RC2 release-4.2.0_RC1 release-4.1.0_RC13 release-4.1.0_RC12 release-4.1.0_RC11 release-4.1.0_RC10 release-4.1.0_RC9 release-4.1.0_RC8 release-4.1.0_RC7 release-4.1.0_RC6 release-4.1.0_RC5 release-4.1.0_RC4 release-4.1.0_RC3 release-4.1.0_RC2 release-4.1.0_RC1 release-4.0.0_RC9 release-4.0.0_RC8 release-4.0.0_RC7 release-4.0.0_RC6 release-4.0.0_RC5 release-4.0.0_RC4 release-4.0.0_RC3 release-4.0.0_RC2 release-4.0.0_RC1 release-3.9.0_RC12 release-3.9.0_RC11 release-3.9.0_RC10 release-3.9.0_RC9 release-3.9.0_RC8 release-3.9.0_RC7 release-3.9.0_RC6 release-3.9.0_RC5 release-3.9.0_RC4 release-3.9.0_RC3 release-3.9.0_RC2 release-3.9.0_RC1 release-3.8.0_RC9 release-3.8.0_RC8 release-3.8.0_RC7 release-3.8.0_RC6 release-3.8.0_RC5 release-3.8.0_RC4 release-3.8.0_RC3 release-3.8.0_RC2 release-3.8.0_RC1 release-3.7.0_RC1 release-3.6.0_RC5 release-3.6.0_RC4 release-3.6.0_RC3 release-3.6.0_RC2 release-3.6.0_RC1 release-3.5.0 release-3.5.0_RC2 release-3.5.0_RC1 release-3.4.0 release-3.4.0_RC2 release-3.4.0_RC1 release-3.3.0_RC10 release-3.3.0_RC9 release-3.3.0_RC8 release-3.3.0_RC7 release-3.3.0_RC6 release-3.3.0_RC5 release-3.3.0_RC4 release-3.3.0_RC3 release-3.3.0_RC2 release-3.3.0_RC1 release-3.2.0_RC9 release-3.2.0_RC8 release-3.2.0_RC7 release-3.2.0_RC6 release-3.2.0_RC5 release-3.2.0_RC4 release-3.2.0_RC3 release-3.2.0_RC2 release-3.2.0_RC1 release-3.1.0 release-3.1.0_RC8 release-3.1.0_RC7 release-3.1.0_RC6 release-3.1.0_RC5 release-3.1.0_RC4 release-3.1.0_RC3 release-3.1.0_RC2 release-3.1.0_RC1 release-3.0.1_RC3 release-3.0.1_RC2 release-3.0.1_RC1 release-3.0.0 release-3.0.0_RC11 release-3.0.0_RC10 release-3.0.0_RC9 release-3.0.0_RC8 release-3.0.0_RC7 release-3.0.0_RC6 release-3.0.0_RC5 release-3.0.0_RC4 release-3.0.0_RC3
No related merge requests found
Showing with 63 additions and 7 deletions
+63 -7
......@@ -24,6 +24,8 @@ object UploadManager {
private val MEDIA_TYPE_LIST = List("image", "video")
private val kfClient = new KafkaClient
private val CONTENT_ARTIFACT_ONLINE_SIZE: Double = Platform.getDouble("content.artifact.size.for_online", 209715200.asInstanceOf[Double])
def upload(request: Request, node: Node)(implicit oec: OntologyEngineContext, ec: ExecutionContext): Future[Response] = {
val identifier: String = node.getIdentifier
......@@ -47,10 +49,13 @@ object UploadManager {
def updateNode(request: Request, identifier: String, mediaType: String, contentType: String, result: Map[String, AnyRef])(implicit oec: OntologyEngineContext, ec: ExecutionContext): Future[Response] = {
val updatedResult = result - "identifier"
val artifactUrl = updatedResult.getOrElse("artifactUrl", "").asInstanceOf[String]
val size: Double = updatedResult.getOrElse("size", 0.asInstanceOf[Double]).asInstanceOf[Double]
if (StringUtils.isNotBlank(artifactUrl)) {
val updateReq = new Request(request)
updateReq.getContext().put("identifier", identifier)
updateReq.getRequest.putAll(mapAsJavaMap(updatedResult))
if( size > CONTENT_ARTIFACT_ONLINE_SIZE)
updateReq.put("contentDisposition", "online-only")
if (StringUtils.equalsIgnoreCase("Asset", contentType) && MEDIA_TYPE_LIST.contains(mediaType))
updateReq.put("status", "Processing")
......
......@@ -496,4 +496,6 @@ dial_service {
}
}
content.link_dialcode.validation=true
content.link_dialcode.max_limit=10
\ No newline at end of file
content.link_dialcode.max_limit=10
# This is added to handle large artifacts sizes differently
content.artifact.size.for_online=209715200
\ No newline at end of file
......@@ -574,4 +574,6 @@ dial_service {
}
}
content.link_dialcode.validation=true
content.link_dialcode.max_limit=10
\ No newline at end of file
content.link_dialcode.max_limit=10
# This is added to handle large artifacts sizes differently
content.artifact.size.for_online=209715200
\ No newline at end of file
......@@ -472,3 +472,5 @@ collection.image.migration.enabled=true
content.tagging.backward_enable=true
content.tagging.property="subject,medium"
# This is added to handle large artifacts sizes differently
content.artifact.size.for_online=209715200
......@@ -72,12 +72,14 @@ public class HttpUtil {
Map<String, Object> metadataMap = new HashMap<>();
HttpResponse<String> response = Unirest.head(url).headers(headers).asString();
if (response.getStatus() == 200) {
metadataMap.put("Content-Length", ((Number) Long.parseLong(response.getHeaders().getOrDefault("Content-Length", response.getHeaders().get("content-length")).get(0))).longValue());
metadataMap.put("Content-Length", ((Number) Double.parseDouble(response.getHeaders().getOrDefault("Content-Length", response.getHeaders().get("content-length")).get(0))).doubleValue());
metadataMap.put("Content-Type", response.getHeaders().getOrDefault("Content-Type", response.getHeaders().get("content-type")).get(0));
return metadataMap;
} else {
throw new ClientException("ERR_API_CALL", "Fetching of file related metadata Failed with response code " + response.getStatus() + "and message: " + response.getStatusText());
throw new ClientException("ERR_API_CALL", "Fetching of file related metadata Failed with response code " + response.getStatus() + " and message: " + response.getStatusText());
}
} catch (ClientException e) {
throw new ClientException("ERR_API_CALL", "Something Went Wrong While Making API Call | Error is: " + e.getMessage());
} catch (Exception e) {
throw new ServerException("ERR_API_CALL", "Something Went Wrong While Making API Call | Error is: " + e.getMessage());
}
......
......@@ -68,4 +68,12 @@ public class Platform {
return config.hasPath(key) ? config.getStringList(key) : defaultVal;
}
public static Long getLong(String key, Long defaultVal) {
return config.hasPath(key) ? config.getLong(key) : defaultVal;
}
public static Double getDouble(String key, Double defaultVal) {
return config.hasPath(key) ? config.getDouble(key) : defaultVal;
}
}
package org.sunbird.common;
import org.junit.Test;
import org.sunbird.common.exception.ClientException;
import org.sunbird.common.exception.ServerException;
import java.util.HashMap;
import java.util.Map;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
public class HttpUtilTests {
HttpUtil httpUtil = new HttpUtil();
@Test
public void testGetMetadataValidUrl() throws Exception {
Map<String, Object> metadata = httpUtil.getMetadata("https://sunbirddev.blob.core.windows.net/sunbird-content-dev/content/assets/do_1130384356456120321307/3point4gb.mp4", new HashMap<>());
assertNotNull(metadata);
assertNotNull(metadata.get("Content-Type"));
assertNotNull(metadata.get("Content-Length"));
assertTrue(metadata.get("Content-Length") instanceof Number);
assertTrue(metadata.get("Content-Type") instanceof String);
}
@Test(expected = ClientException.class)
public void testGetMetadataInvalidUrl() throws Exception {
httpUtil.getMetadata("https://sunbirddev.blob.core.windows.net/sunbird-content-dev/content/assets/do_113038435645612032130743/3point4gb.mp4", new HashMap<>());
}
}
......@@ -470,4 +470,5 @@ collection.image.migration.enabled=true
content.tagging.backward_enable=true
content.tagging.property="subject,medium"
content.h5p.library.path="https://s3.ap-south-1.amazonaws.com/ekstep-public-dev/content/templates/h5p-library-latest.zip"
# This is added to handle large artifacts sizes differently
content.artifact.size.for_online=209715200
......@@ -105,7 +105,8 @@
"enum": [
"inline",
"online",
"attachment"
"attachment",
"online-only"
],
"default": "inline"
},
......
......@@ -105,7 +105,8 @@
"enum": [
"inline",
"online",
"attachment"
"attachment",
"online-only"
],
"default": "inline"
},
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment