rpc_safe_guard_01/pkg/okapi/okapi.go
2023-07-13 17:39:26 +08:00

48 lines
1.1 KiB
Go

package okapi
import (
"bytes"
"encoding/json"
"io"
"net/http"
)
type Request struct {
AppKey string
ApiName string
ApiVersion string
Body RequestBody
}
type RequestBody struct {
OaSessionID string `json:"oa-session-id,omitempty"`
OaAppMarketID string `json:"oa-app-market-id,omitempty"`
OaAppVersion string `json:"oa-app-version,omitempty"`
OaDeviceID string `json:"oa-device-id,omitempty"`
OaSign string `json:"oa-sign,omitempty"`
Timestamp string `json:"timestamp,omitempty"`
Params map[string]interface{} `json:"params,omitempty"`
}
func (req *Request) Decode(r *http.Request) error {
reqBody, err := io.ReadAll(r.Body)
if err != nil {
return err
}
// Restore the io.ReadCloser to its original state
r.Body = io.NopCloser(bytes.NewBuffer(reqBody))
if err = r.ParseForm(); err != nil {
return err
}
req.AppKey = r.Form.Get("appkey")
req.ApiName = r.Form.Get("api")
req.ApiVersion = r.Form.Get("version")
err = json.Unmarshal(reqBody, &req.Body)
if err != nil {
return err
}
return nil
}