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  }