github.com/unionj-cloud/go-doudou@v1.3.8-0.20221011095552-0088008e5b31/cmd/internal/openapi/v3/codegen/testdata/test/userclient.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  )
    17  
    18  type UserClient struct {
    19  	provider registry.IServiceProvider
    20  	client   *resty.Client
    21  	rootPath string
    22  }
    23  
    24  func (receiver *UserClient) SetRootPath(rootPath string) {
    25  	receiver.rootPath = rootPath
    26  }
    27  
    28  func (receiver *UserClient) SetProvider(provider registry.IServiceProvider) {
    29  	receiver.provider = provider
    30  }
    31  
    32  func (receiver *UserClient) SetClient(client *resty.Client) {
    33  	receiver.client = client
    34  }
    35  
    36  // GetUserLogin Logs user into the system
    37  func (receiver *UserClient) GetUserLogin(ctx context.Context, _headers map[string]string,
    38  	queryParams *struct {
    39  		Password *string `json:"password,omitempty" url:"password"`
    40  		Username *string `json:"username,omitempty" url:"username"`
    41  	}) (ret string, _resp *resty.Response, err error) {
    42  	var _err error
    43  
    44  	_req := receiver.client.R()
    45  	_req.SetContext(ctx)
    46  	if len(_headers) > 0 {
    47  		_req.SetHeaders(_headers)
    48  	}
    49  	_queryParams, _ := _querystring.Values(queryParams)
    50  	_req.SetQueryParamsFromValues(_queryParams)
    51  
    52  	_resp, _err = _req.Get("/user/login")
    53  	if _err != nil {
    54  		err = errors.Wrap(_err, "")
    55  		return
    56  	}
    57  	if _resp.IsError() {
    58  		err = errors.New(_resp.String())
    59  		return
    60  	}
    61  	ret = _resp.String()
    62  	return
    63  }
    64  
    65  // GetUserUsername Get user by user name
    66  func (receiver *UserClient) GetUserUsername(ctx context.Context, _headers map[string]string,
    67  	// The name that needs to be fetched. Use user1 for testing.
    68  	// required
    69  	username string) (ret User, _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("username", fmt.Sprintf("%v", username))
    78  
    79  	_resp, _err = _req.Get("/user/{username}")
    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  // PostUserCreateWithList Creates list of users with given input array
    96  // Creates list of users with given input array
    97  func (receiver *UserClient) PostUserCreateWithList(ctx context.Context, _headers map[string]string,
    98  	bodyJSON *[]User) (ret User, _resp *resty.Response, err error) {
    99  	var _err error
   100  
   101  	_req := receiver.client.R()
   102  	_req.SetContext(ctx)
   103  	if len(_headers) > 0 {
   104  		_req.SetHeaders(_headers)
   105  	}
   106  	_req.SetBody(bodyJSON)
   107  
   108  	_resp, _err = _req.Post("/user/createWithList")
   109  	if _err != nil {
   110  		err = errors.Wrap(_err, "")
   111  		return
   112  	}
   113  	if _resp.IsError() {
   114  		err = errors.New(_resp.String())
   115  		return
   116  	}
   117  	if _err = json.Unmarshal(_resp.Body(), &ret); _err != nil {
   118  		err = errors.Wrap(_err, "")
   119  		return
   120  	}
   121  	return
   122  }
   123  
   124  func NewUser(opts ...ddhttp.DdClientOption) *UserClient {
   125  	defaultProvider := ddhttp.NewServiceProvider("USER")
   126  	defaultClient := ddhttp.NewClient()
   127  
   128  	svcClient := &UserClient{
   129  		provider: defaultProvider,
   130  		client:   defaultClient,
   131  	}
   132  
   133  	for _, opt := range opts {
   134  		opt(svcClient)
   135  	}
   136  
   137  	svcClient.client.OnBeforeRequest(func(_ *resty.Client, request *resty.Request) error {
   138  		request.URL = svcClient.provider.SelectServer() + svcClient.rootPath + request.URL
   139  		return nil
   140  	})
   141  
   142  	svcClient.client.SetPreRequestHook(func(_ *resty.Client, request *http.Request) error {
   143  		traceReq, _ := nethttp.TraceRequest(opentracing.GlobalTracer(), request,
   144  			nethttp.OperationName(fmt.Sprintf("HTTP %s: %s", request.Method, request.URL.Path)))
   145  		*request = *traceReq
   146  		return nil
   147  	})
   148  
   149  	svcClient.client.OnAfterResponse(func(_ *resty.Client, response *resty.Response) error {
   150  		nethttp.TracerFromRequest(response.Request.RawRequest).Finish()
   151  		return nil
   152  	})
   153  
   154  	return svcClient
   155  }