mirror of
https://github.com/versity/versitygw.git
synced 2026-09-20 15:04:27 +00:00
feat: implements advanced routing for the admin apis. Adds the debug logging and quite mode for the separate admin server.
Adjusts the admin apis to the new advanced routing changes. Enables debug logging for the separate admin server(when a separate server is run for the admin apis). Adds the quiet mode for the separate admin server.
This commit is contained in:
@@ -1991,93 +1991,3 @@ func SendResponse(ctx *fiber.Ctx, err error, l *MetaOpts) error {
|
||||
ctx.Status(l.Status)
|
||||
return nil
|
||||
}
|
||||
|
||||
func SendXMLResponse(ctx *fiber.Ctx, resp any, err error, l *MetaOpts) error {
|
||||
if l.MetricsMng != nil {
|
||||
if l.ObjectCount > 0 {
|
||||
l.MetricsMng.Send(ctx, err, l.Action, l.ObjectCount, l.Status)
|
||||
} else {
|
||||
l.MetricsMng.Send(ctx, err, l.Action, l.ContentLength, l.Status)
|
||||
}
|
||||
}
|
||||
if err != nil {
|
||||
if l.Logger != nil {
|
||||
l.Logger.Log(ctx, err, nil, s3log.LogMeta{
|
||||
Action: l.Action,
|
||||
BucketOwner: l.BucketOwner,
|
||||
ObjectSize: l.ObjectSize,
|
||||
})
|
||||
}
|
||||
serr, ok := err.(s3err.APIError)
|
||||
if ok {
|
||||
ctx.Status(serr.HTTPStatusCode)
|
||||
return ctx.Send(s3err.GetAPIErrorResponse(serr, "", "", ""))
|
||||
}
|
||||
|
||||
fmt.Fprintf(os.Stderr, "Internal Error, %v\n", err)
|
||||
ctx.Status(http.StatusInternalServerError)
|
||||
|
||||
return ctx.Send(s3err.GetAPIErrorResponse(
|
||||
s3err.GetAPIError(s3err.ErrInternalError), "", "", ""))
|
||||
}
|
||||
|
||||
var b []byte
|
||||
|
||||
// Handle already encoded responses(text, json...)
|
||||
encodedResp, ok := resp.([]byte)
|
||||
if ok {
|
||||
b = encodedResp
|
||||
}
|
||||
|
||||
if resp != nil && !ok {
|
||||
if b, err = xml.Marshal(resp); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if len(b) > 0 {
|
||||
ctx.Response().Header.Set("Content-Length", fmt.Sprint(len(b)))
|
||||
ctx.Response().Header.SetContentType(fiber.MIMEApplicationXML)
|
||||
}
|
||||
}
|
||||
|
||||
if l.Logger != nil {
|
||||
l.Logger.Log(ctx, nil, b, s3log.LogMeta{
|
||||
Action: l.Action,
|
||||
BucketOwner: l.BucketOwner,
|
||||
ObjectSize: l.ObjectSize,
|
||||
})
|
||||
}
|
||||
|
||||
if l.EvSender != nil {
|
||||
l.EvSender.SendEvent(ctx, s3event.EventMeta{
|
||||
BucketOwner: l.BucketOwner,
|
||||
ObjectSize: l.ObjectSize,
|
||||
ObjectETag: l.ObjectETag,
|
||||
VersionId: l.VersionId,
|
||||
EventName: l.EventName,
|
||||
})
|
||||
}
|
||||
|
||||
if ok {
|
||||
if len(b) > 0 {
|
||||
ctx.Response().Header.Set("Content-Length", fmt.Sprint(len(b)))
|
||||
}
|
||||
|
||||
return ctx.Send(b)
|
||||
}
|
||||
|
||||
msglen := len(xmlhdr) + len(b)
|
||||
if msglen > maxXMLBodyLen {
|
||||
debuglogger.Logf("XML encoded body len %v exceeds max len %v",
|
||||
msglen, maxXMLBodyLen)
|
||||
ctx.Status(http.StatusInternalServerError)
|
||||
|
||||
return ctx.Send(s3err.GetAPIErrorResponse(
|
||||
s3err.GetAPIError(s3err.ErrInternalError), "", "", ""))
|
||||
}
|
||||
res := make([]byte, 0, msglen)
|
||||
res = append(res, xmlhdr...)
|
||||
res = append(res, b...)
|
||||
|
||||
return ctx.Send(res)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user