- } else if int64(nread) < req.ContentLength {
- log.Printf("%s %s %d %d", req.Method, hash, 500, req.ContentLength)
- http.Error(resp, "request truncated", 500)
- } else {
- if err := PutBlock(buf, hash); err == nil {
- // Success; add a size hint, sign the locator if
- // possible, and return it to the client.
- return_hash := fmt.Sprintf("%s+%d", hash, len(buf))
- api_token := GetApiToken(req)
- if PermissionSecret != nil && api_token != "" {
- expiry := time.Now().Add(permission_ttl)
- return_hash = SignLocator(return_hash, api_token, expiry)
- }
- log.Printf("%s %s %d %d", req.Method, hash, 200, req.ContentLength)
- resp.Write([]byte(return_hash + "\n"))
- } else {
- ke := err.(*KeepError)
- log.Printf("%s %s %d %d", req.Method, hash, ke.HTTPCode, req.ContentLength)
- http.Error(resp, ke.Error(), ke.HTTPCode)
- }