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  }