github.com/unionj-cloud/go-doudou@v1.3.8-0.20221011095552-0088008e5b31/cmd/internal/openapi/v3/codegen/testdata/test/textclient.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 TextClient struct { 20 provider registry.IServiceProvider 21 client *resty.Client 22 rootPath string 23 } 24 25 func (receiver *TextClient) SetRootPath(rootPath string) { 26 receiver.rootPath = rootPath 27 } 28 29 func (receiver *TextClient) SetProvider(provider registry.IServiceProvider) { 30 receiver.provider = provider 31 } 32 33 func (receiver *TextClient) SetClient(client *resty.Client) { 34 receiver.client = client 35 } 36 37 // GetTextExtractFromUrl 提取文本 38 func (receiver *TextClient) GetTextExtractFromUrl(ctx context.Context, _headers map[string]string, 39 queryParams struct { 40 // required 41 Url string `json:"url,omitempty" url:"url"` 42 ClearFormat *bool `json:"clearFormat,omitempty" url:"clearFormat"` 43 }) (ret ResultString, _resp *resty.Response, err error) { 44 var _err error 45 46 _req := receiver.client.R() 47 _req.SetContext(ctx) 48 if len(_headers) > 0 { 49 _req.SetHeaders(_headers) 50 } 51 _queryParams, _ := _querystring.Values(queryParams) 52 _req.SetQueryParamsFromValues(_queryParams) 53 54 _resp, _err = _req.Get("/text/extractFromUrl") 55 if _err != nil { 56 err = errors.Wrap(_err, "") 57 return 58 } 59 if _resp.IsError() { 60 err = errors.New(_resp.String()) 61 return 62 } 63 if _err = json.Unmarshal(_resp.Body(), &ret); _err != nil { 64 err = errors.Wrap(_err, "") 65 return 66 } 67 return 68 } 69 70 // PostTextExtractFromFile 提取文本 71 func (receiver *TextClient) PostTextExtractFromFile(ctx context.Context, _headers map[string]string, 72 queryParams *struct { 73 ClearFormat *bool `json:"clearFormat,omitempty" url:"clearFormat"` 74 }, 75 file *v3.FileModel) (ret ResultString, _resp *resty.Response, err error) { 76 var _err error 77 78 _req := receiver.client.R() 79 _req.SetContext(ctx) 80 if len(_headers) > 0 { 81 _req.SetHeaders(_headers) 82 } 83 _queryParams, _ := _querystring.Values(queryParams) 84 _req.SetQueryParamsFromValues(_queryParams) 85 if file != nil { 86 _req.SetFileReader("file", file.Filename, file.Reader) 87 } 88 89 _resp, _err = _req.Post("/text/extractFromFile") 90 if _err != nil { 91 err = errors.Wrap(_err, "") 92 return 93 } 94 if _resp.IsError() { 95 err = errors.New(_resp.String()) 96 return 97 } 98 if _err = json.Unmarshal(_resp.Body(), &ret); _err != nil { 99 err = errors.Wrap(_err, "") 100 return 101 } 102 return 103 } 104 105 func NewText(opts ...ddhttp.DdClientOption) *TextClient { 106 defaultProvider := ddhttp.NewServiceProvider("TEXT") 107 defaultClient := ddhttp.NewClient() 108 109 svcClient := &TextClient{ 110 provider: defaultProvider, 111 client: defaultClient, 112 } 113 114 for _, opt := range opts { 115 opt(svcClient) 116 } 117 118 svcClient.client.OnBeforeRequest(func(_ *resty.Client, request *resty.Request) error { 119 request.URL = svcClient.provider.SelectServer() + svcClient.rootPath + request.URL 120 return nil 121 }) 122 123 svcClient.client.SetPreRequestHook(func(_ *resty.Client, request *http.Request) error { 124 traceReq, _ := nethttp.TraceRequest(opentracing.GlobalTracer(), request, 125 nethttp.OperationName(fmt.Sprintf("HTTP %s: %s", request.Method, request.URL.Path))) 126 *request = *traceReq 127 return nil 128 }) 129 130 svcClient.client.OnAfterResponse(func(_ *resty.Client, response *resty.Response) error { 131 nethttp.TracerFromRequest(response.Request.RawRequest).Finish() 132 return nil 133 }) 134 135 return svcClient 136 }