81 lines
2.1 KiB
Go
81 lines
2.1 KiB
Go
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/<name>/manifests/<reference> 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/<name>/manifests/<reference> 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))
|
|
}
|