implement action=raw which sends just the data-blob
[webgit] / src / actions.c
index 6ce5472..f60b444 100644 (file)
@@ -200,12 +200,26 @@ webgit_tree_action (struct webgit_query* query)
 
 
 /*
-  spew out raw data only
+  spew out raw data
 */
 static Html
 webgit_raw_action (struct webgit_query* query)
 {
-  return html("raw");
+  webgit_enter_repository (query);
+
+  unsigned char sha1[20];
+  if (get_sha1 (query->object, sha1))
+    return html("error: unknown object");
+
+  void* buf;
+  unsigned long size;
+
+  buf = read_object_with_reference (sha1, "blob", &size, NULL);
+
+  free (query->content_type);
+  query->content_type = webgit_mimetype (query->path);
+
+  return html_binary (buf, size);
 }