iris/middleware/accesslog/json_easy.go

166 lines
3.3 KiB
Go
Raw Normal View History

// Code generated by easyjson but it's highly edited. Please manually add fields as Log is grow,
// in-short: all decode methods removed, rename of the methods, add a new line breaker,
// remove the easyjson import requirement.
package accesslog
import (
"encoding/json"
"github.com/kataras/iris/v12/core/memstore"
"github.com/mailru/easyjson/jwriter"
)
func (f *JSON) writeEasyJSON(in *Log) error {
out := &jwriter.Writer{NoEscapeHTML: !f.EscapeHTML}
out.RawByte('{')
first := true
_ = first
{
const prefix string = ",\"timestamp\":"
if first {
first = false
out.RawString(prefix[1:])
} else {
out.RawString(prefix)
}
out.Int64(int64(in.Timestamp))
}
{
const prefix string = ",\"latency\":"
out.RawString(prefix)
out.Int64(int64(in.Latency))
}
{
const prefix string = ",\"code\":"
out.RawString(prefix)
out.Int(int(in.Code))
}
{
const prefix string = ",\"method\":"
out.RawString(prefix)
out.String(string(in.Method))
}
{
const prefix string = ",\"path\":"
out.RawString(prefix)
out.String(string(in.Path))
}
if in.IP != "" {
const prefix string = ",\"ip\":"
out.RawString(prefix)
out.String(string(in.IP))
}
if len(in.Query) != 0 {
const prefix string = ",\"query\":"
out.RawString(prefix)
{
out.RawByte('[')
for v4, v5 := range in.Query {
if v4 > 0 {
out.RawByte(',')
}
easyJSONStringEntry(out, v5)
}
out.RawByte(']')
}
}
if len(in.PathParams) != 0 {
const prefix string = ",\"params\":"
out.RawString(prefix)
{
out.RawByte('[')
for v6, v7 := range in.PathParams {
if v6 > 0 {
out.RawByte(',')
}
easyJSONEntry(out, v7)
}
out.RawByte(']')
}
}
if len(in.Fields) != 0 {
const prefix string = ",\"fields\":"
out.RawString(prefix)
{
out.RawByte('[')
for v8, v9 := range in.Fields {
if v8 > 0 {
out.RawByte(',')
}
easyJSONEntry(out, v9)
}
out.RawByte(']')
}
}
if in.Logger.RequestBody {
const prefix string = ",\"request\":"
out.RawString(prefix)
out.String(string(in.Request))
}
if in.Logger.ResponseBody {
const prefix string = ",\"response\":"
out.RawString(prefix)
out.String(string(in.Response))
}
if in.BytesReceived != 0 {
const prefix string = ",\"bytes_received\":"
out.RawString(prefix)
out.Int(int(in.BytesReceived))
}
if in.BytesSent != 0 {
const prefix string = ",\"bytes_sent\":"
out.RawString(prefix)
out.Int(int(in.BytesSent))
}
out.RawByte('}')
out.RawByte(newLine)
if out.Error != nil {
return out.Error
}
f.ac.Write(out.Buffer.BuildBytes())
return nil
}
func easyJSONEntry(out *jwriter.Writer, in memstore.Entry) {
out.RawByte('{')
first := true
_ = first
{
const prefix string = ",\"key\":"
out.RawString(prefix[1:])
out.String(string(in.Key))
}
{
const prefix string = ",\"value\":"
out.RawString(prefix)
if m, ok := in.ValueRaw.(json.Marshaler); ok {
out.Raw(m.MarshalJSON())
} else {
out.Raw(json.Marshal(in.ValueRaw))
}
}
out.RawByte('}')
}
func easyJSONStringEntry(out *jwriter.Writer, in memstore.StringEntry) {
out.RawByte('{')
first := true
_ = first
{
const prefix string = ",\"key\":"
out.RawString(prefix[1:])
out.String(string(in.Key))
}
{
const prefix string = ",\"value\":"
out.RawString(prefix)
out.String(string(in.Value))
}
out.RawByte('}')
}