github.com/0chain/gosdk@v1.17.11/dev/blobber/handlers.go (about) 1 package blobber 2 3 import ( 4 "encoding/json" 5 "net/http" 6 7 "github.com/0chain/gosdk/dev/blobber/model" 8 "github.com/gorilla/mux" 9 ) 10 11 func uploadAndUpdateFile(w http.ResponseWriter, req *http.Request) { 12 uploadMeta := req.FormValue("uploadMeta") 13 14 var form *model.UploadFormData 15 err := json.Unmarshal([]byte(uploadMeta), &form) 16 17 if err != nil { 18 http.Error(w, err.Error(), http.StatusBadRequest) 19 return 20 } 21 22 //nolint: errcheck 23 json.NewEncoder(w).Encode(&model.UploadResult{ 24 Filename: form.Filename, 25 ValidationRoot: form.ValidationRoot, 26 FixedMerkleRoot: form.FixedMerkleRoot, 27 }) 28 29 } 30 31 func getReference(w http.ResponseWriter, req *http.Request) { 32 33 var vars = mux.Vars(req) 34 35 alloctionID := vars["allocation"] 36 37 w.Header().Set("Content-Type", "application/json") 38 w.WriteHeader(http.StatusOK) 39 40 result, ok := referencePathResults[alloctionID] 41 42 if ok { 43 buf, _ := json.Marshal(result) 44 //nolint: errcheck 45 w.Write(buf) 46 return 47 } 48 49 rootRefs := `{"meta_data":{"chunk_size":0,"created_at":0,"hash":"","lookup_hash":"","name":"/","num_of_blocks":0,"path":"/","path_hash":"","size":0,"type":"d","updated_at":0},"Ref":{"ID":0,"Type":"d","AllocationID":"` + vars["allocation"] + `","LookupHash":"","Name":"/","Path":"/","Hash":"","NumBlocks":0,"PathHash":"","ParentPath":"","PathLevel":1,"CustomMeta":"","ValidationRoot":"","Size":0,"FixedMerkleRoot":"","ActualFileSize":0,"ActualFileHash":"","MimeType":"","WriteMarker":"","ThumbnailSize":0,"ThumbnailHash":"","ActualThumbnailSize":0,"ActualThumbnailHash":"","EncryptedKey":"","Children":null,"OnCloud":false,"CreatedAt":0,"UpdatedAt":0,"ChunkSize":0},"latest_write_marker":null}` 50 51 //nolint: errcheck 52 w.Write([]byte(rootRefs)) 53 } 54 55 func commitWrite(w http.ResponseWriter, req *http.Request) { 56 57 // var vars = mux.Vars(req) 58 59 writeMarker := &model.WriteMarker{} 60 err := json.Unmarshal([]byte(req.FormValue("write_marker")), writeMarker) 61 62 if err != nil { 63 http.Error(w, err.Error(), http.StatusBadRequest) 64 return 65 } 66 67 result := &model.CommitResult{} 68 result.AllocationRoot = writeMarker.AllocationRoot 69 result.Success = true 70 result.WriteMarker = writeMarker 71 72 err = json.NewEncoder(w).Encode(result) 73 if err != nil { 74 http.Error(w, err.Error(), http.StatusBadRequest) 75 return 76 } 77 } 78 79 func mockRespone(w http.ResponseWriter, statusCode int, respBody []byte) { 80 w.Header().Set("Content-Type", "application/json") 81 if respBody != nil { 82 _, err := w.Write(respBody) 83 if err != nil { 84 statusCode = http.StatusInternalServerError 85 } 86 } 87 88 w.WriteHeader(statusCode) 89 } 90 91 func rollback(w http.ResponseWriter, _ *http.Request) { 92 mockRespone(w, http.StatusOK, nil) 93 } 94 95 func latestWriteMarker(w http.ResponseWriter, _ *http.Request) { 96 latestByte := `{"latest_write_marker":null,"prev_write_marker":null}` 97 mockRespone(w, http.StatusOK, []byte(latestByte)) 98 }