func SavePaste(paste Paste, ren render.Render, r *http.Request, cf *swift.Connection, mc *memcache.Client) { paste.PasteId = genPasteId() payload, _ := json.Marshal(paste) seconds, err := getTTL(paste.PasteTtl) PanicIf(err) headers := swift.Headers{} now := time.Now() pasteIndex := 9999999999 - now.Unix() indexKey := fmt.Sprintf("cfpaste-%d", pasteIndex) headers["x-object-meta-pastetype"] = paste.PasteType headers["x-object-meta-pasteid"] = paste.PasteId headers["x-object-meta-pasteindex"] = fmt.Sprintf("%d", pasteIndex) if seconds != 0 { headers["x-delete-after"] = fmt.Sprintf("%d", seconds) } buf := bytes.NewBuffer(payload) _, err = cf.ObjectPut("go-cfpaste", paste.PasteId, buf, true, "", "application/json; charset=utf-8", headers) PanicIf(err) // gholt's listing index hack so that he can spy on pastes _, err = cf.ObjectPut("go-cfpaste", indexKey, bytes.NewBuffer([]byte("")), true, "", "application/json; charset=utf-8", headers) PanicIf(err) mc.Set(&memcache.Item{Key: paste.PasteId, Value: payload}) ren.JSON(200, map[string]interface{}{"pasteid": paste.PasteId}) }