aqi/apic/apic.go
2024-06-18 18:09:39 +08:00

90 lines
1.5 KiB
Go

package apic
import (
"context"
"encoding/json"
"net/url"
"github.com/wonli/aqi/logger"
)
// Apic is an empty implementation of the Api interface.
// Introducing this in business logic can avoid writing too much boilerplate code.
type Apic struct {
Api
}
func (a *Apic) Url() string {
return ""
}
func (a *Apic) Path() string {
return ""
}
func (a *Apic) Query() url.Values {
return nil
}
func (a *Apic) Headers() Params {
return nil
}
func (a *Apic) PostBody() Params {
return nil
}
func (a *Apic) FormData() Params {
return nil
}
func (a *Apic) WWWFormData() Params {
return nil
}
func (a *Apic) Setup(api Api, op *Options) (Api, error) {
return api, nil
}
func (a *Apic) HttpMethod() HttpMethod {
return POST
}
func (a *Apic) Debug() bool {
return false
}
func (a *Apic) UseContext(ctx context.Context) error {
return nil
}
func (a *Apic) OnRequest() error {
return nil
}
func (a *Apic) OnResponse(resp []byte) (*ResponseData, error) {
return &ResponseData{Data: resp}, nil
}
func (a *Apic) OnHttpStatusError(code int, resp []byte) error {
return nil
}
// AnyToParams converts any type to Params.
func (a *Apic) AnyToParams(d any) Params {
dByte, err := json.Marshal(d)
if err != nil {
logger.SugarLog.Errorf("Failed to convert type to byte %s", err.Error())
return nil
}
var p Params
err = json.Unmarshal(dByte, &p)
if err != nil {
logger.SugarLog.Errorf("Failed to convert to Params %s", err.Error())
return nil
}
return p
}