github.com/unionj-cloud/go-doudou@v1.3.8-0.20221011095552-0088008e5b31/cmd/internal/openapi/v3/codegen/testdata/test/petclient.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 _querystring "github.com/google/go-querystring/query" 11 "github.com/opentracing-contrib/go-stdlib/nethttp" 12 "github.com/opentracing/opentracing-go" 13 "github.com/pkg/errors" 14 ddhttp "github.com/unionj-cloud/go-doudou/framework/http" 15 "github.com/unionj-cloud/go-doudou/framework/registry" 16 v3 "github.com/unionj-cloud/go-doudou/toolkit/openapi/v3" 17 ) 18 19 type PetClient struct { 20 provider registry.IServiceProvider 21 client *resty.Client 22 rootPath string 23 } 24 25 func (receiver *PetClient) SetRootPath(rootPath string) { 26 receiver.rootPath = rootPath 27 } 28 29 func (receiver *PetClient) SetProvider(provider registry.IServiceProvider) { 30 receiver.provider = provider 31 } 32 33 func (receiver *PetClient) SetClient(client *resty.Client) { 34 receiver.client = client 35 } 36 37 // PostPet Add a new pet to the store 38 // Add a new pet to the store 39 func (receiver *PetClient) PostPet(ctx context.Context, _headers map[string]string, 40 bodyJSON Pet) (ret Pet, _resp *resty.Response, err error) { 41 var _err error 42 43 _req := receiver.client.R() 44 _req.SetContext(ctx) 45 if len(_headers) > 0 { 46 _req.SetHeaders(_headers) 47 } 48 _req.SetBody(bodyJSON) 49 50 _resp, _err = _req.Post("/pet") 51 if _err != nil { 52 err = errors.Wrap(_err, "") 53 return 54 } 55 if _resp.IsError() { 56 err = errors.New(_resp.String()) 57 return 58 } 59 if _err = json.Unmarshal(_resp.Body(), &ret); _err != nil { 60 err = errors.Wrap(_err, "") 61 return 62 } 63 return 64 } 65 66 // PutPet Update an existing pet 67 // Update an existing pet by Id 68 func (receiver *PetClient) PutPet(ctx context.Context, _headers map[string]string, 69 bodyJSON *Pet) (ret Pet, _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.Put("/pet") 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 // GetPetFindByTags Finds Pets by tags 96 // Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. 97 func (receiver *PetClient) GetPetFindByTags(ctx context.Context, _headers map[string]string, 98 queryParams *struct { 99 Tags *[]string `json:"tags,omitempty" url:"tags"` 100 }) (ret []Pet, _resp *resty.Response, err error) { 101 var _err error 102 103 _req := receiver.client.R() 104 _req.SetContext(ctx) 105 if len(_headers) > 0 { 106 _req.SetHeaders(_headers) 107 } 108 _queryParams, _ := _querystring.Values(queryParams) 109 _req.SetQueryParamsFromValues(_queryParams) 110 111 _resp, _err = _req.Get("/pet/findByTags") 112 if _err != nil { 113 err = errors.Wrap(_err, "") 114 return 115 } 116 if _resp.IsError() { 117 err = errors.New(_resp.String()) 118 return 119 } 120 if _err = json.Unmarshal(_resp.Body(), &ret); _err != nil { 121 err = errors.Wrap(_err, "") 122 return 123 } 124 return 125 } 126 127 // GetPetPetId Find pet by ID 128 // Returns a single pet 129 func (receiver *PetClient) GetPetPetId(ctx context.Context, _headers map[string]string, 130 // ID of pet to return 131 // required 132 petId int64) (ret Pet, _resp *resty.Response, err error) { 133 var _err error 134 135 _req := receiver.client.R() 136 _req.SetContext(ctx) 137 if len(_headers) > 0 { 138 _req.SetHeaders(_headers) 139 } 140 _req.SetPathParam("petId", fmt.Sprintf("%v", petId)) 141 142 _resp, _err = _req.Get("/pet/{petId}") 143 if _err != nil { 144 err = errors.Wrap(_err, "") 145 return 146 } 147 if _resp.IsError() { 148 err = errors.New(_resp.String()) 149 return 150 } 151 if _err = json.Unmarshal(_resp.Body(), &ret); _err != nil { 152 err = errors.Wrap(_err, "") 153 return 154 } 155 return 156 } 157 158 // PostPetPetIdUploadImage uploads an image 159 func (receiver *PetClient) PostPetPetIdUploadImage(ctx context.Context, _headers map[string]string, 160 queryParams *struct { 161 AdditionalMetadata *string `json:"additionalMetadata,omitempty" url:"additionalMetadata"` 162 }, 163 // ID of pet to update 164 // required 165 petId int64, 166 file *v3.FileModel) (ret ApiResponse, _resp *resty.Response, err error) { 167 var _err error 168 169 _req := receiver.client.R() 170 _req.SetContext(ctx) 171 if len(_headers) > 0 { 172 _req.SetHeaders(_headers) 173 } 174 _queryParams, _ := _querystring.Values(queryParams) 175 _req.SetQueryParamsFromValues(_queryParams) 176 _req.SetPathParam("petId", fmt.Sprintf("%v", petId)) 177 if file != nil { 178 _req.SetFileReader("file", file.Filename, file.Reader) 179 } 180 181 _resp, _err = _req.Post("/pet/{petId}/uploadImage") 182 if _err != nil { 183 err = errors.Wrap(_err, "") 184 return 185 } 186 if _resp.IsError() { 187 err = errors.New(_resp.String()) 188 return 189 } 190 if _err = json.Unmarshal(_resp.Body(), &ret); _err != nil { 191 err = errors.Wrap(_err, "") 192 return 193 } 194 return 195 } 196 197 // GetPetFindByStatus Finds Pets by status 198 // Multiple status values can be provided with comma separated strings 199 func (receiver *PetClient) GetPetFindByStatus(ctx context.Context, _headers map[string]string, 200 queryParams *struct { 201 Status *string `json:"status,omitempty" url:"status"` 202 }) (ret []Pet, _resp *resty.Response, err error) { 203 var _err error 204 205 _req := receiver.client.R() 206 _req.SetContext(ctx) 207 if len(_headers) > 0 { 208 _req.SetHeaders(_headers) 209 } 210 _queryParams, _ := _querystring.Values(queryParams) 211 _req.SetQueryParamsFromValues(_queryParams) 212 213 _resp, _err = _req.Get("/pet/findByStatus") 214 if _err != nil { 215 err = errors.Wrap(_err, "") 216 return 217 } 218 if _resp.IsError() { 219 err = errors.New(_resp.String()) 220 return 221 } 222 if _err = json.Unmarshal(_resp.Body(), &ret); _err != nil { 223 err = errors.Wrap(_err, "") 224 return 225 } 226 return 227 } 228 229 func NewPet(opts ...ddhttp.DdClientOption) *PetClient { 230 defaultProvider := ddhttp.NewServiceProvider("PET") 231 defaultClient := ddhttp.NewClient() 232 233 svcClient := &PetClient{ 234 provider: defaultProvider, 235 client: defaultClient, 236 } 237 238 for _, opt := range opts { 239 opt(svcClient) 240 } 241 242 svcClient.client.OnBeforeRequest(func(_ *resty.Client, request *resty.Request) error { 243 request.URL = svcClient.provider.SelectServer() + svcClient.rootPath + request.URL 244 return nil 245 }) 246 247 svcClient.client.SetPreRequestHook(func(_ *resty.Client, request *http.Request) error { 248 traceReq, _ := nethttp.TraceRequest(opentracing.GlobalTracer(), request, 249 nethttp.OperationName(fmt.Sprintf("HTTP %s: %s", request.Method, request.URL.Path))) 250 *request = *traceReq 251 return nil 252 }) 253 254 svcClient.client.OnAfterResponse(func(_ *resty.Client, response *resty.Response) error { 255 nethttp.TracerFromRequest(response.Request.RawRequest).Finish() 256 return nil 257 }) 258 259 return svcClient 260 }