diff --git a/content-api/content-actors/src/main/scala/org/sunbird/content/util/CopyManager.scala b/content-api/content-actors/src/main/scala/org/sunbird/content/util/CopyManager.scala
index cbf52207d9aa0fc05c33d460fc4c551ba34d7292..f1c2f86cc8c8348fc0804d8548edd0618caef27c 100644
--- a/content-api/content-actors/src/main/scala/org/sunbird/content/util/CopyManager.scala
+++ b/content-api/content-actors/src/main/scala/org/sunbird/content/util/CopyManager.scala
@@ -222,7 +222,7 @@ object CopyManager {
     protected def getFileNameFromURL(fileUrl: String): String = if (!FilenameUtils.getExtension(fileUrl).isEmpty)
         FilenameUtils.getBaseName(fileUrl) + "_" + System.currentTimeMillis + "." + FilenameUtils.getExtension(fileUrl) else FilenameUtils.getBaseName(fileUrl) + "_" + System.currentTimeMillis
 
-    protected def isInternalUrl(url: String)(implicit ss: StorageService): Boolean = url.contains(ss.getContainerName())
+    protected def isInternalUrl(url: String)(implicit ss: StorageService): Boolean = url.contains(ss.getContainerName)
 
     def prepareHierarchyRequest(originHierarchy: util.Map[String, AnyRef], originNode: Node, node: Node, copyType: String, request: Request):util.HashMap[String, AnyRef] = {
         val children:util.List[util.Map[String, AnyRef]] = originHierarchy.get("children").asInstanceOf[util.List[util.Map[String, AnyRef]]]
diff --git a/content-api/content-actors/src/test/scala/org/sunbird/content/actors/TestContentActor.scala b/content-api/content-actors/src/test/scala/org/sunbird/content/actors/TestContentActor.scala
index 40778e99fb831fdb84967ae3d757a0ae7c1a004d..5c15e56d2499c525b837c32a7ff2ddcf346de031 100644
--- a/content-api/content-actors/src/test/scala/org/sunbird/content/actors/TestContentActor.scala
+++ b/content-api/content-actors/src/test/scala/org/sunbird/content/actors/TestContentActor.scala
@@ -93,7 +93,7 @@ class TestContentActor extends BaseSpec with MockFactory {
         val graphDB = mock[GraphService]
         (oec.graphService _).expects().returns(graphDB)
         (graphDB.getNodeByUniqueId(_: String, _: String, _: Boolean, _: Request)).expects(*, *, *, *).returns(Future(getValidNode()))
-        implicit val ss = mock[StorageService]
+        implicit val ss: StorageService = mock[StorageService]
         (ss.getSignedURL(_: String, _: Option[Int], _: Option[String])).expects(*, *, *).returns("cloud store url")
         val request = getContentRequest()
         request.getRequest.putAll(mapAsJavaMap(Map("fileName" -> "presigned_url", "filePath" -> "/data/cloudstore/", "type" -> "assets", "identifier" -> "do_1234")))
diff --git a/platform-modules/mimetype-manager/pom.xml b/platform-modules/mimetype-manager/pom.xml
index c97b9bbd224229225200d6946e08862697cbf58b..80a17876b0cba471dc7b39e5aaf9b5fe0501a6c0 100644
--- a/platform-modules/mimetype-manager/pom.xml
+++ b/platform-modules/mimetype-manager/pom.xml
@@ -30,7 +30,7 @@
         <dependency>
             <groupId>org.sunbird</groupId>
             <artifactId>cloud-store-sdk</artifactId>
-            <version>1.4.0</version>
+            <version>1.4.1</version>
         </dependency>
         <dependency>
             <groupId>org.scala-lang</groupId>
diff --git a/platform-modules/mimetype-manager/src/main/scala/org/sunbird/cloudstore/StorageService.scala b/platform-modules/mimetype-manager/src/main/scala/org/sunbird/cloudstore/StorageService.scala
index 0045caf82998c42f02fec4e4435bd8a6454cab70..3904888a09ad8c58c82d9a75aa4432ece5d0eab5 100644
--- a/platform-modules/mimetype-manager/src/main/scala/org/sunbird/cloudstore/StorageService.scala
+++ b/platform-modules/mimetype-manager/src/main/scala/org/sunbird/cloudstore/StorageService.scala
@@ -1,16 +1,14 @@
 package org.sunbird.cloudstore
 
-import java.io.File
-
 import org.apache.commons.lang3.StringUtils
+import org.apache.tika.Tika
 import org.sunbird.cloud.storage.BaseStorageService
-import org.sunbird.common.Platform
-import org.sunbird.cloud.storage.factory.StorageConfig
-import org.sunbird.cloud.storage.factory.StorageServiceFactory
+import org.sunbird.cloud.storage.factory.{StorageConfig, StorageServiceFactory}
+import org.sunbird.common.{Platform, Slug}
 import org.sunbird.common.exception.ServerException
-import org.sunbird.common.Slug
 
-import scala.concurrent.ExecutionContext
+import java.io.File
+import scala.concurrent.{ExecutionContext, Future}
 
 class StorageService {
 
@@ -18,20 +16,20 @@ class StorageService {
     var storageService: BaseStorageService = null
 
     @throws[Exception]
-    def getService(): BaseStorageService = {
+    def getService: BaseStorageService = {
         if (null == storageService) {
             if (StringUtils.equalsIgnoreCase(storageType, "azure")) {
                 val storageKey = Platform.config.getString("azure_storage_key")
                 val storageSecret = Platform.config.getString("azure_storage_secret")
-                storageService = StorageServiceFactory.getStorageService(new StorageConfig(storageType, storageKey, storageSecret))
+                storageService = StorageServiceFactory.getStorageService(StorageConfig(storageType, storageKey, storageSecret))
             } else if (StringUtils.equalsIgnoreCase(storageType, "aws")) {
                 val storageKey = Platform.config.getString("aws_storage_key")
                 val storageSecret = Platform.config.getString("aws_storage_secret")
-                storageService = StorageServiceFactory.getStorageService(new StorageConfig(storageType, storageKey, storageSecret))
+                storageService = StorageServiceFactory.getStorageService(StorageConfig(storageType, storageKey, storageSecret))
             } else if (StringUtils.equalsIgnoreCase(storageType, "gcloud")) {
                 val storageKey = Platform.config.getString("gcloud_client_key")
                 val storageSecret = Platform.config.getString("gcloud_private_secret")
-                storageService = StorageServiceFactory.getStorageService(new StorageConfig(storageType, storageKey, storageSecret))
+                storageService = StorageServiceFactory.getStorageService(StorageConfig(storageType, storageKey, storageSecret))
             }
 //            else if (StringUtils.equalsIgnoreCase(storageType, "cephs3")) {
 //                val storageKey = Platform.config.getString("cephs3_storage_key")
@@ -44,17 +42,13 @@ class StorageService {
         storageService
     }
 
-    def getContainerName(): String = {
-        if (StringUtils.equalsIgnoreCase(storageType, "azure"))
-            Platform.config.getString("azure_storage_container")
-        else if (StringUtils.equalsIgnoreCase(storageType, "aws"))
-            Platform.config.getString("aws_storage_container")
-        else if (StringUtils.equalsIgnoreCase(storageType, "gcloud"))
-          Platform.config.getString("gcloud_storage_bucket")
-        else if (StringUtils.equalsIgnoreCase(storageType, "cephs3"))
-            Platform.config.getString("cephs3_storage_container")
-        else
-            throw new ServerException("ERR_INVALID_CLOUD_STORAGE", "Container name not configured.")
+    def getContainerName: String = {
+      storageType match {
+        case "azure" => Platform.config.getString("azure_storage_container")
+        case "aws" => Platform.config.getString("aws_storage_container")
+        case "gcloud" => Platform.config.getString("gcloud_storage_bucket")
+        case _ => throw new ServerException("ERR_INVALID_CLOUD_STORAGE", "Container name not configured.")
+      }
     }
 
     def uploadFile(folderName: String, file: File, slug: Option[Boolean] = Option(true)): Array[String] = {
@@ -67,11 +61,11 @@ class StorageService {
     def uploadDirectory(folderName: String, directory: File, slug: Option[Boolean] = Option(true)): Array[String] = {
         val slugFile = if (slug.getOrElse(true)) Slug.createSlugFile(directory) else directory
         val objectKey = folderName + File.separator
-        val url = getService.upload(getContainerName(), slugFile.getAbsolutePath, objectKey, Option.apply(true), Option.apply(1), Option.apply(5), Option.empty)
+        val url = getService.upload(getContainerName, slugFile.getAbsolutePath, objectKey, Option.apply(true), Option.apply(1), Option.apply(5), Option.empty)
         Array[String](objectKey, url)
     }
 
-    def uploadDirectoryAsync(folderName: String, directory: File, slug: Option[Boolean] = Option(true))(implicit ec: ExecutionContext) = {
+    def uploadDirectoryAsync(folderName: String, directory: File, slug: Option[Boolean] = Option(true))(implicit ec: ExecutionContext): Future[List[String]] = {
         val slugFile = if (slug.getOrElse(true)) Slug.createSlugFile(directory) else directory
         val objectKey = folderName + File.separator
         getService.uploadFolder(getContainerName, slugFile.getAbsolutePath, objectKey, Option.apply(false), None, None, 1)
@@ -82,26 +76,34 @@ class StorageService {
         blob.contentLength
     }
 
-    def copyObjectsByPrefix(source: String, destination: String) = {
+    def copyObjectsByPrefix(source: String, destination: String): Unit = {
         getService.copyObjects(getContainerName, source, getContainerName, destination, Option.apply(true))
     }
 
-    def deleteFile(key: String, isDirectory: Option[Boolean] = Option(false)) = {
+    def deleteFile(key: String, isDirectory: Option[Boolean] = Option(false)): Unit = {
         getService.deleteObject(getContainerName, key, isDirectory)
     }
 
     def getSignedURL(key: String, ttl: Option[Int], permission: Option[String]): String = {
-        getService().getSignedURL(getContainerName, key, ttl, permission)
+      storageType match {
+        case "gcloud" => getService.getPutSignedURL(getContainerName, key, ttl, permission, Option.apply(getMimeType(key)))
+        case _ => getService.getSignedURL (getContainerName, key, ttl, permission)
+      }
     }
 
     def getUri(key: String): String = {
         try {
            getService.getUri(getContainerName, key, Option.apply(false))
         } catch {
-            case e:Exception => {
-               println("StorageService --> getUri --> Exception: " + e.getMessage)
-               ""
-            }
+            case e:Exception =>
+              println("StorageService --> getUri --> Exception: " + e.getMessage)
+              ""
         }
     }
+
+  def getMimeType(fileName: String): String = {
+    val tika: Tika = new Tika()
+    tika.detect(fileName)
+  }
+
 }
diff --git a/platform-modules/mimetype-manager/src/test/scala/org/sunbird/cloudstore/StorageServiceTest.scala b/platform-modules/mimetype-manager/src/test/scala/org/sunbird/cloudstore/StorageServiceTest.scala
index 7cd55d82e59f3f3e9188ac9f70bdc5921c33d467..071a9e20cf55f9a58c4619182a57af46d54668dc 100644
--- a/platform-modules/mimetype-manager/src/test/scala/org/sunbird/cloudstore/StorageServiceTest.scala
+++ b/platform-modules/mimetype-manager/src/test/scala/org/sunbird/cloudstore/StorageServiceTest.scala
@@ -2,16 +2,54 @@ package org.sunbird.cloudstore
 
 import org.scalatest.{AsyncFlatSpec, Matchers}
 
+import java.io.File
+
 class StorageServiceTest extends AsyncFlatSpec with Matchers {
     val ss = new StorageService
 
     "getService" should "return a Storage Service" in {
-        val service = ss.getService()
+        val service = ss.getService
         assert(service != null)
     }
 
     "getContainerName" should "return the container name" in {
-        val container = ss.getContainerName()
+        val container = ss.getContainerName
         assert(container == "sunbird-content-dev")
     }
+
+    "getSignedURL" should "return the signed url" in {
+        val objectKey = "content" + File.separator + "asset" + File.separator + "do_53245" + File.separator + "abc.png"
+        val preSignedURL = ss.getSignedURL(objectKey, Option.apply(600), Option.apply("w"))
+        assert(preSignedURL.contains(objectKey))
+    }
+
+    "getUri" should "return the signed url" in {
+        val uri = ss.getUri("content/abc.json")
+        assert(uri != null)
+    }
+
+    "getMimeType" should "return the mimetype application/epub+zip for epub" in {
+        val result = ss.getMimeType("test.alert.epub")
+        assert(result == "application/epub+zip")
+    }
+
+    "getMimeType" should "return the mimetype application/octet-stream for h5p" in {
+        val result = ss.getMimeType("test.alert.h5p")
+        assert(result == "application/octet-stream")
+    }
+
+    "getMimeType" should "return the mimetype text/csv for csv" in {
+        val result = ss.getMimeType("test.alert.csv")
+        assert(result == "text/csv")
+    }
+
+    "getMimeType" should "return the mimetype application/pdf for pdf" in {
+        val result = ss.getMimeType("test.alert.pdf")
+        assert(result == "application/pdf")
+    }
+
+    "getMimeType" should "return the mimetype application/zip for zip" in {
+        val result = ss.getMimeType("test.alert.zip")
+        assert(result == "application/zip")
+    }
 }