mirror of
https://github.com/OliveTin/OliveTin
synced 2025-10-29 20:37:02 +00:00
fix: #674 Use JSON options for API handler
This commit is contained in:
@@ -127,6 +127,7 @@ require (
|
||||
github.com/stoewer/go-strcase v1.3.1 // indirect
|
||||
github.com/tetratelabs/wazero v1.9.0 // indirect
|
||||
github.com/vbatts/tar-split v0.12.1 // indirect
|
||||
go.akshayshah.org/connectproto v0.6.0 // indirect
|
||||
go.lsp.dev/jsonrpc2 v0.10.0 // indirect
|
||||
go.lsp.dev/pkg v0.0.0-20210717090340-384b27a52fb2 // indirect
|
||||
go.lsp.dev/protocol v0.12.0 // indirect
|
||||
|
||||
@@ -262,6 +262,8 @@ github.com/vbatts/tar-split v0.12.1/go.mod h1:eF6B6i6ftWQcDqEn3/iGFRFRo8cBIMSJVO
|
||||
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
|
||||
go.akshayshah.org/connectproto v0.6.0 h1:tqmysQF2AfvUeYS03mRAAZTFpiQeXqhGIDnH1GO2D2U=
|
||||
go.akshayshah.org/connectproto v0.6.0/go.mod h1:uA9TR/6MhBlLn0fh8VXRyL26EKTJlimWao4jbz7JHbA=
|
||||
go.lsp.dev/jsonrpc2 v0.10.0 h1:Pr/YcXJoEOTMc/b6OTmcR1DPJ3mSWl/SWiU1Cct6VmI=
|
||||
go.lsp.dev/jsonrpc2 v0.10.0/go.mod h1:fmEzIdXPi/rf6d4uFcayi8HpFP1nBF99ERP1htC72Ac=
|
||||
go.lsp.dev/pkg v0.0.0-20210717090340-384b27a52fb2 h1:hCzQgh6UcwbKgNSRurYWSqh8MufqRRPODRBblutn4TE=
|
||||
|
||||
@@ -5,6 +5,7 @@ import (
|
||||
"encoding/json"
|
||||
|
||||
"connectrpc.com/connect"
|
||||
"google.golang.org/protobuf/encoding/protojson"
|
||||
|
||||
apiv1 "github.com/OliveTin/OliveTin/gen/olivetin/api/v1"
|
||||
apiv1connect "github.com/OliveTin/OliveTin/gen/olivetin/api/v1/apiv1connect"
|
||||
@@ -20,6 +21,7 @@ import (
|
||||
entities "github.com/OliveTin/OliveTin/internal/entities"
|
||||
executor "github.com/OliveTin/OliveTin/internal/executor"
|
||||
installationinfo "github.com/OliveTin/OliveTin/internal/installationinfo"
|
||||
connectproto "go.akshayshah.org/connectproto"
|
||||
)
|
||||
|
||||
type oliveTinAPI struct {
|
||||
@@ -870,5 +872,14 @@ func newServer(ex *executor.Executor) *oliveTinAPI {
|
||||
func GetNewHandler(ex *executor.Executor) (string, http.Handler) {
|
||||
server := newServer(ex)
|
||||
|
||||
return apiv1connect.NewOliveTinApiServiceHandler(server)
|
||||
jsonOpt := connectproto.WithJSON(
|
||||
protojson.MarshalOptions{
|
||||
EmitUnpopulated: true, // https://github.com/OliveTin/OliveTin/issues/674
|
||||
},
|
||||
protojson.UnmarshalOptions{
|
||||
DiscardUnknown: true,
|
||||
},
|
||||
)
|
||||
|
||||
return apiv1connect.NewOliveTinApiServiceHandler(server, jsonOpt)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user