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  }