package handler import ( //"mstore/app/descr" "mstore/app/operator" "mstore/app/router" ) func (hand *Handler) ManifestExists(rctx *router.Context) { name, _ := rctx.GetSubpath("name") reference, _ := rctx.GetSubpath("reference") params := &operator.ManifestExistsParams{ Name: name, Reference: reference, } ctx := rctx.GetContext() res, code, err := hand.oper.ManifestExists(ctx, params) if err != nil { hand.logg.Errorf("ManifestExist error: %v", err) } else if res.Exists { rctx.SetHeader("Content-Length", res.ContentLength) rctx.SetHeader("Content-Type", res.ContentType) rctx.SetHeader("Docker-Content-Digest", res.DockerContentDigest) } rctx.SetStatus(code) } // PUT /v2//manifests/ 201 404 func (hand *Handler) PutManifest(rctx *router.Context) { //hand.DumpHeaders("PutManifest headers", rctx) contentType := rctx.GetHeader("Content-Type") contentLength := rctx.GetHeader("Content-Length") name, _ := rctx.GetSubpath("name") reference, _ := rctx.GetSubpath("reference") params := &operator.PutManifestParams{ ContentType: contentType, ContentLength: contentLength, Name: name, Reference: reference, Reader: rctx.Request.Body, } ctx := rctx.GetContext() res, code, err := hand.oper.PutManifest(ctx, params) if err != nil { hand.logg.Errorf("PutManifest error: %v", err) } else { rctx.SetHeader("Location", res.Location) } rctx.SetStatus(code) } // GET /v2//manifests/ 200 404 func (hand *Handler) GetManifest(rctx *router.Context) { name, _ := rctx.GetSubpath("name") reference, _ := rctx.GetSubpath("reference") params := &operator.GetManifestParams{ Name: name, Reference: reference, } ctx := rctx.GetContext() res, code, err := hand.oper.GetManifest(ctx, params) if err != nil { hand.logg.Errorf("GetManifest error: %v", err) rctx.SetStatus(code) return } rctx.SetHeader("Content-Length", res.ContentLength) rctx.SetHeader("Content-Type", res.ContentType) rctx.SetHeader("Docker-Content-Digest", res.DockerContentDigest) rctx.SetStatus(code) rctx.SendBytes([]byte(res.Payload)) }