Skip to content

Commit 9bc1cf6

Browse files
committed
Use ErrorResponse object.
1 parent 25c3a01 commit 9bc1cf6

File tree

2 files changed

+22
-11
lines changed

2 files changed

+22
-11
lines changed

modules/lfs/shared.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,3 +67,10 @@ type PointerBlob struct {
6767
Hash string
6868
Pointer
6969
}
70+
71+
// ErrorResponse describes the error to the client.
72+
type ErrorResponse struct {
73+
Message string
74+
DocumentationURL string `json:"documentation_url,omitempty"`
75+
RequestID string `json:"request_id,omitempty"`
76+
}

services/lfs/server.go

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -238,12 +238,11 @@ func BatchHandler(ctx *context.Context) {
238238
responseObjects = append(responseObjects, responseObject)
239239
}
240240

241-
ctx.Resp.Header().Set("Content-Type", lfs_module.MediaType)
242-
243241
respobj := &lfs_module.BatchResponse{Objects: responseObjects}
244242

245-
json := jsoniter.ConfigCompatibleWithStandardLibrary
246-
enc := json.NewEncoder(ctx.Resp)
243+
ctx.Resp.Header().Set("Content-Type", lfs_module.MediaType)
244+
245+
enc := jsoniter.NewEncoder(ctx.Resp)
247246
if err := enc.Encode(respobj); err != nil {
248247
log.Error("Failed to encode representation as json. Error: %v", err)
249248
}
@@ -256,7 +255,7 @@ func UploadHandler(ctx *context.Context) {
256255
p := lfs_module.Pointer{Oid: ctx.Params("oid")}
257256
var err error
258257
if p.Size, err = strconv.ParseInt(ctx.Params("size"), 10, 64); err != nil {
259-
writeStatusMessage(ctx, http.StatusUnprocessableEntity, err)
258+
writeStatusMessage(ctx, http.StatusUnprocessableEntity, err.Error())
260259
}
261260

262261
if !p.IsValid() {
@@ -293,7 +292,7 @@ func UploadHandler(ctx *context.Context) {
293292
defer ctx.Req.Body.Close()
294293
if err := contentStore.Put(meta.Pointer, ctx.Req.Body); err != nil {
295294
if err == lfs_module.ErrSizeMismatch || err == lfs_module.ErrHashMismatch {
296-
writeStatusMessage(ctx, http.StatusUnprocessableEntity, err)
295+
writeStatusMessage(ctx, http.StatusUnprocessableEntity, err.Error())
297296
} else {
298297
writeStatus(ctx, http.StatusInternalServerError)
299298
}
@@ -334,11 +333,9 @@ func VerifyHandler(ctx *context.Context) {
334333
}
335334

336335
func decodeJSON(req *http.Request, v interface{}) error {
337-
json := jsoniter.ConfigCompatibleWithStandardLibrary
338-
339336
defer req.Body.Close()
340337

341-
dec := json.NewDecoder(req.Body)
338+
dec := jsoniter.NewDecoder(req.Body)
342339
return dec.Decode(v)
343340
}
344341

@@ -418,9 +415,16 @@ func writeStatus(ctx *context.Context, status int) {
418415
writeStatusMessage(ctx, status, http.StatusText(status))
419416
}
420417

421-
func writeStatusMessage(ctx *context.Context, status int, message interface{}) {
418+
func writeStatusMessage(ctx *context.Context, status int, message string) {
419+
ctx.Resp.Header().Set("Content-Type", lfs_module.MediaType)
422420
ctx.Resp.WriteHeader(status)
423-
fmt.Fprintf(ctx.Resp, `{"message":"%v"}`, message)
421+
422+
er := lfs_module.ErrorResponse{Message: message}
423+
424+
enc := jsoniter.NewEncoder(ctx.Resp)
425+
if err := enc.Encode(er); err != nil {
426+
log.Error("Failed to encode error response as json. Error: %v", err)
427+
}
424428
}
425429

426430
// authenticate uses the authorization string to determine whether

0 commit comments

Comments
 (0)