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  }