github.com/unionj-cloud/go-doudou@v1.3.8-0.20221011095552-0088008e5b31/cmd/internal/openapi/v3/codegen/testdata/test/storeclient.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 StoreClient struct { 18 provider registry.IServiceProvider 19 client *resty.Client 20 rootPath string 21 } 22 23 func (receiver *StoreClient) SetRootPath(rootPath string) { 24 receiver.rootPath = rootPath 25 } 26 27 func (receiver *StoreClient) SetProvider(provider registry.IServiceProvider) { 28 receiver.provider = provider 29 } 30 31 func (receiver *StoreClient) SetClient(client *resty.Client) { 32 receiver.client = client 33 } 34 35 // PostStoreOrder Place an order for a pet 36 // Place a new order in the store 37 func (receiver *StoreClient) PostStoreOrder(ctx context.Context, _headers map[string]string, 38 bodyJSON *Order) (ret Order, _resp *resty.Response, err error) { 39 var _err error 40 41 _req := receiver.client.R() 42 _req.SetContext(ctx) 43 if len(_headers) > 0 { 44 _req.SetHeaders(_headers) 45 } 46 _req.SetBody(bodyJSON) 47 48 _resp, _err = _req.Post("/store/order") 49 if _err != nil { 50 err = errors.Wrap(_err, "") 51 return 52 } 53 if _resp.IsError() { 54 err = errors.New(_resp.String()) 55 return 56 } 57 if _err = json.Unmarshal(_resp.Body(), &ret); _err != nil { 58 err = errors.Wrap(_err, "") 59 return 60 } 61 return 62 } 63 64 // GetStoreOrderOrderId Find purchase order by ID 65 // For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions 66 func (receiver *StoreClient) GetStoreOrderOrderId(ctx context.Context, _headers map[string]string, 67 // ID of order that needs to be fetched 68 // required 69 orderId int64) (ret Order, _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.SetPathParam("orderId", fmt.Sprintf("%v", orderId)) 78 79 _resp, _err = _req.Get("/store/order/{orderId}") 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 // GetStoreInventory Returns pet inventories by status 96 // Returns a map of status codes to quantities 97 func (receiver *StoreClient) GetStoreInventory(ctx context.Context, _headers map[string]string) (ret map[string]int, _resp *resty.Response, err error) { 98 var _err error 99 100 _req := receiver.client.R() 101 _req.SetContext(ctx) 102 if len(_headers) > 0 { 103 _req.SetHeaders(_headers) 104 } 105 106 _resp, _err = _req.Get("/store/inventory") 107 if _err != nil { 108 err = errors.Wrap(_err, "") 109 return 110 } 111 if _resp.IsError() { 112 err = errors.New(_resp.String()) 113 return 114 } 115 if _err = json.Unmarshal(_resp.Body(), &ret); _err != nil { 116 err = errors.Wrap(_err, "") 117 return 118 } 119 return 120 } 121 122 func NewStore(opts ...ddhttp.DdClientOption) *StoreClient { 123 defaultProvider := ddhttp.NewServiceProvider("STORE") 124 defaultClient := ddhttp.NewClient() 125 126 svcClient := &StoreClient{ 127 provider: defaultProvider, 128 client: defaultClient, 129 } 130 131 for _, opt := range opts { 132 opt(svcClient) 133 } 134 135 svcClient.client.OnBeforeRequest(func(_ *resty.Client, request *resty.Request) error { 136 request.URL = svcClient.provider.SelectServer() + svcClient.rootPath + request.URL 137 return nil 138 }) 139 140 svcClient.client.SetPreRequestHook(func(_ *resty.Client, request *http.Request) error { 141 traceReq, _ := nethttp.TraceRequest(opentracing.GlobalTracer(), request, 142 nethttp.OperationName(fmt.Sprintf("HTTP %s: %s", request.Method, request.URL.Path))) 143 *request = *traceReq 144 return nil 145 }) 146 147 svcClient.client.OnAfterResponse(func(_ *resty.Client, response *resty.Response) error { 148 nethttp.TracerFromRequest(response.Request.RawRequest).Finish() 149 return nil 150 }) 151 152 return svcClient 153 }