github.com/unionj-cloud/go-doudou@v1.3.8-0.20221011095552-0088008e5b31/cmd/internal/openapi/v3/codegen/testdata/test/pageclient.go (about) 1 package test 2 3 import ( 4 "context" 5 "encoding/json" 6 "fmt" 7 "net/http" 8 9 "github.com/go-resty/resty/v2" 10 "github.com/opentracing-contrib/go-stdlib/nethttp" 11 "github.com/opentracing/opentracing-go" 12 "github.com/pkg/errors" 13 ddhttp "github.com/unionj-cloud/go-doudou/framework/http" 14 "github.com/unionj-cloud/go-doudou/framework/registry" 15 ) 16 17 type PageClient struct { 18 provider registry.IServiceProvider 19 client *resty.Client 20 rootPath string 21 } 22 23 func (receiver *PageClient) SetRootPath(rootPath string) { 24 receiver.rootPath = rootPath 25 } 26 27 func (receiver *PageClient) SetProvider(provider registry.IServiceProvider) { 28 receiver.provider = provider 29 } 30 31 func (receiver *PageClient) SetClient(client *resty.Client) { 32 receiver.client = client 33 } 34 35 // PostPageUsers2 PageUsers2 demonstrate how to define POST and Content-Type as application/json api 36 func (receiver *PageClient) PostPageUsers2(ctx context.Context, _headers map[string]string, 37 // comments above input and output struct type parameters in vo package will display on online document 38 // not comments here 39 bodyJSON *PageQuery) (ret PageUsers2Resp, _resp *resty.Response, err error) { 40 var _err error 41 42 _req := receiver.client.R() 43 _req.SetContext(ctx) 44 if len(_headers) > 0 { 45 _req.SetHeaders(_headers) 46 } 47 _req.SetBody(bodyJSON) 48 49 _resp, _err = _req.Post("/page/users/2") 50 if _err != nil { 51 err = errors.Wrap(_err, "") 52 return 53 } 54 if _resp.IsError() { 55 err = errors.New(_resp.String()) 56 return 57 } 58 if _err = json.Unmarshal(_resp.Body(), &ret); _err != nil { 59 err = errors.Wrap(_err, "") 60 return 61 } 62 return 63 } 64 65 // PostPageUsers PageUsers demonstrate how to define POST and Content-Type as application/json api 66 func (receiver *PageClient) PostPageUsers(ctx context.Context, _headers map[string]string, 67 // comments above input and output struct type parameters in vo package will display on online document 68 // not comments here 69 bodyJSON PageQuery) (ret PageUsersResp, _resp *resty.Response, err error) { 70 var _err error 71 72 _req := receiver.client.R() 73 _req.SetContext(ctx) 74 if len(_headers) > 0 { 75 _req.SetHeaders(_headers) 76 } 77 _req.SetBody(bodyJSON) 78 79 _resp, _err = _req.Post("/page/users") 80 if _err != nil { 81 err = errors.Wrap(_err, "") 82 return 83 } 84 if _resp.IsError() { 85 err = errors.New(_resp.String()) 86 return 87 } 88 if _err = json.Unmarshal(_resp.Body(), &ret); _err != nil { 89 err = errors.Wrap(_err, "") 90 return 91 } 92 return 93 } 94 95 func NewPage(opts ...ddhttp.DdClientOption) *PageClient { 96 defaultProvider := ddhttp.NewServiceProvider("PAGE") 97 defaultClient := ddhttp.NewClient() 98 99 svcClient := &PageClient{ 100 provider: defaultProvider, 101 client: defaultClient, 102 } 103 104 for _, opt := range opts { 105 opt(svcClient) 106 } 107 108 svcClient.client.OnBeforeRequest(func(_ *resty.Client, request *resty.Request) error { 109 request.URL = svcClient.provider.SelectServer() + svcClient.rootPath + request.URL 110 return nil 111 }) 112 113 svcClient.client.SetPreRequestHook(func(_ *resty.Client, request *http.Request) error { 114 traceReq, _ := nethttp.TraceRequest(opentracing.GlobalTracer(), request, 115 nethttp.OperationName(fmt.Sprintf("HTTP %s: %s", request.Method, request.URL.Path))) 116 *request = *traceReq 117 return nil 118 }) 119 120 svcClient.client.OnAfterResponse(func(_ *resty.Client, response *resty.Response) error { 121 nethttp.TracerFromRequest(response.Request.RawRequest).Finish() 122 return nil 123 }) 124 125 return svcClient 126 }