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 }