about summary refs log tree commit diff
path: root/src/libstore/s3-binary-cache-store.cc
diff options
context:
space:
mode:
authorEelco Dolstra <edolstra@gmail.com>2017-03-14T14·26+0100
committerEelco Dolstra <edolstra@gmail.com>2017-03-15T15·50+0100
commit45c70382ac152107d40956c6a3ab8c329086733f (patch)
treef99d8dddffd7ed5ae1b823572c9bbaf0cf2af276 /src/libstore/s3-binary-cache-store.cc
parent8b1d65bebe5af8960ba813e1233f2596a3ffebb7 (diff)
S3BinaryCacheStore: Set Content-Type
This is necessary for serving log files to browsers.
Diffstat (limited to 'src/libstore/s3-binary-cache-store.cc')
-rw-r--r--src/libstore/s3-binary-cache-store.cc14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/libstore/s3-binary-cache-store.cc b/src/libstore/s3-binary-cache-store.cc
index 1d44e68321f7..5ecf3996d7eb 100644
--- a/src/libstore/s3-binary-cache-store.cc
+++ b/src/libstore/s3-binary-cache-store.cc
@@ -148,7 +148,7 @@ struct S3BinaryCacheStoreImpl : public S3BinaryCacheStore
         : S3BinaryCacheStore(params)
         , bucketName(bucketName)
         , s3Helper(get(params, "aws-region", Aws::Region::US_EAST_1))
-        , textCompression(get(params, "text-compression", "gzip"))
+        , textCompression(get(params, "text-compression", ""))
         , logCompression(get(params, "log-compression", textCompression))
     {
         diskCache = getNarInfoDiskCache();
@@ -229,6 +229,7 @@ struct S3BinaryCacheStoreImpl : public S3BinaryCacheStore
     }
 
     void uploadFile(const std::string & path, const std::string & data,
+        const std::string & mimeType,
         const std::string & contentEncoding)
     {
         auto request =
@@ -236,6 +237,8 @@ struct S3BinaryCacheStoreImpl : public S3BinaryCacheStore
             .WithBucket(bucketName)
             .WithKey(path);
 
+        request.SetContentType(mimeType);
+
         if (contentEncoding != "")
             request.SetContentEncoding(contentEncoding);
 
@@ -261,14 +264,15 @@ struct S3BinaryCacheStoreImpl : public S3BinaryCacheStore
         stats.putTimeMs += duration;
     }
 
-    void upsertFile(const std::string & path, const std::string & data) override
+    void upsertFile(const std::string & path, const std::string & data,
+        const std::string & mimeType) override
     {
         if (path.find(".narinfo") != std::string::npos)
-            uploadFile(path, *compress(textCompression, data), textCompression);
+            uploadFile(path, *compress(textCompression, data), mimeType, textCompression);
         else if (path.find("/log") != std::string::npos)
-            uploadFile(path, *compress(logCompression, data), logCompression);
+            uploadFile(path, *compress(logCompression, data), mimeType, logCompression);
         else
-            uploadFile(path, data, "");
+            uploadFile(path, data, mimeType, "");
     }
 
     void getFile(const std::string & path,