github.com/qiniu/go-sdk/v7@v7.27.0/audit/apis/api_query_log.go (about)

     1  // THIS FILE IS GENERATED BY api-generator, DO NOT EDIT DIRECTLY!
     2  
     3  package apis
     4  
     5  import (
     6  	"context"
     7  	"net/http"
     8  	"net/url"
     9  	"strconv"
    10  	"strings"
    11  	"time"
    12  
    13  	querylog "github.com/qiniu/go-sdk/v7/audit/apis/query_log"
    14  	auth "github.com/qiniu/go-sdk/v7/auth"
    15  	uplog "github.com/qiniu/go-sdk/v7/internal/uplog"
    16  	errors "github.com/qiniu/go-sdk/v7/storagev2/errors"
    17  	httpclient "github.com/qiniu/go-sdk/v7/storagev2/http_client"
    18  	region "github.com/qiniu/go-sdk/v7/storagev2/region"
    19  	uptoken "github.com/qiniu/go-sdk/v7/storagev2/uptoken"
    20  )
    21  
    22  type innerQueryLogRequest querylog.Request
    23  
    24  func (query *innerQueryLogRequest) buildQuery() (url.Values, error) {
    25  	allQuery := make(url.Values)
    26  	if query.StartTime != "" {
    27  		allQuery.Set("start_time", query.StartTime)
    28  	} else {
    29  		return nil, errors.MissingRequiredFieldError{Name: "StartTime"}
    30  	}
    31  	if query.EndTime != "" {
    32  		allQuery.Set("end_time", query.EndTime)
    33  	} else {
    34  		return nil, errors.MissingRequiredFieldError{Name: "EndTime"}
    35  	}
    36  	if query.ServiceName != "" {
    37  		allQuery.Set("service_name", query.ServiceName)
    38  	}
    39  	if len(query.EventNames) > 0 {
    40  		for _, value := range query.EventNames {
    41  			allQuery.Add("event_names", value)
    42  		}
    43  	}
    44  	if query.PrincipalId != "" {
    45  		allQuery.Set("principal_id", query.PrincipalId)
    46  	}
    47  	if query.AccessKeyId != "" {
    48  		allQuery.Set("access_key_id", query.AccessKeyId)
    49  	}
    50  	if query.Limit != 0 {
    51  		allQuery.Set("limit", strconv.FormatInt(query.Limit, 10))
    52  	}
    53  	if query.NextMark != "" {
    54  		allQuery.Set("next_mark", query.NextMark)
    55  	}
    56  	return allQuery, nil
    57  }
    58  
    59  type (
    60  	QueryLogRequest  = querylog.Request
    61  	QueryLogResponse = querylog.Response
    62  )
    63  
    64  // 审计日志查询
    65  func (audit *Audit) QueryLog(ctx context.Context, request *QueryLogRequest, options *Options) (*QueryLogResponse, error) {
    66  	if options == nil {
    67  		options = &Options{}
    68  	}
    69  	innerRequest := (*innerQueryLogRequest)(request)
    70  	serviceNames := []region.ServiceName{region.ServiceApi}
    71  	if innerRequest.Credentials == nil && audit.client.GetCredentials() == nil {
    72  		return nil, errors.MissingRequiredFieldError{Name: "Credentials"}
    73  	}
    74  	pathSegments := make([]string, 0, 2)
    75  	pathSegments = append(pathSegments, "audit", "log-query")
    76  	path := "/" + strings.Join(pathSegments, "/")
    77  	var rawQuery string
    78  	if query, err := innerRequest.buildQuery(); err != nil {
    79  		return nil, err
    80  	} else {
    81  		rawQuery += query.Encode()
    82  	}
    83  	headers := http.Header{}
    84  	uplogInterceptor, err := uplog.NewRequestUplog("queryLog", "", "", func() (string, error) {
    85  		credentials := innerRequest.Credentials
    86  		if credentials == nil {
    87  			credentials = audit.client.GetCredentials()
    88  		}
    89  		putPolicy, err := uptoken.NewPutPolicy("", time.Now().Add(time.Hour))
    90  		if err != nil {
    91  			return "", err
    92  		}
    93  		return uptoken.NewSigner(putPolicy, credentials).GetUpToken(ctx)
    94  	})
    95  	if err != nil {
    96  		return nil, err
    97  	}
    98  	req := httpclient.Request{Method: "GET", ServiceNames: serviceNames, Path: path, RawQuery: rawQuery, Endpoints: options.OverwrittenEndpoints, Region: options.OverwrittenRegion, Interceptors: []httpclient.Interceptor{uplogInterceptor}, Header: headers, AuthType: auth.TokenQiniu, Credentials: innerRequest.Credentials, BufferResponse: true, OnRequestProgress: options.OnRequestProgress}
    99  	if options.OverwrittenEndpoints == nil && options.OverwrittenRegion == nil && audit.client.GetRegions() == nil {
   100  		bucketHosts := httpclient.DefaultBucketHosts()
   101  
   102  		req.Region = audit.client.GetAllRegions()
   103  		if req.Region == nil {
   104  			if options.OverwrittenBucketHosts != nil {
   105  				if bucketHosts, err = options.OverwrittenBucketHosts.GetEndpoints(ctx); err != nil {
   106  					return nil, err
   107  				}
   108  			}
   109  			allRegionsOptions := region.AllRegionsProviderOptions{UseInsecureProtocol: audit.client.UseInsecureProtocol(), HostFreezeDuration: audit.client.GetHostFreezeDuration(), Resolver: audit.client.GetResolver(), Chooser: audit.client.GetChooser(), BeforeSign: audit.client.GetBeforeSignCallback(), AfterSign: audit.client.GetAfterSignCallback(), SignError: audit.client.GetSignErrorCallback(), BeforeResolve: audit.client.GetBeforeResolveCallback(), AfterResolve: audit.client.GetAfterResolveCallback(), ResolveError: audit.client.GetResolveErrorCallback(), BeforeBackoff: audit.client.GetBeforeBackoffCallback(), AfterBackoff: audit.client.GetAfterBackoffCallback(), BeforeRequest: audit.client.GetBeforeRequestCallback(), AfterResponse: audit.client.GetAfterResponseCallback()}
   110  			if hostRetryConfig := audit.client.GetHostRetryConfig(); hostRetryConfig != nil {
   111  				allRegionsOptions.RetryMax = hostRetryConfig.RetryMax
   112  				allRegionsOptions.Backoff = hostRetryConfig.Backoff
   113  			}
   114  			credentials := innerRequest.Credentials
   115  			if credentials == nil {
   116  				credentials = audit.client.GetCredentials()
   117  			}
   118  			if req.Region, err = region.NewAllRegionsProvider(credentials, bucketHosts, &allRegionsOptions); err != nil {
   119  				return nil, err
   120  			}
   121  		}
   122  	}
   123  	var respBody QueryLogResponse
   124  	if err := audit.client.DoAndAcceptJSON(ctx, &req, &respBody); err != nil {
   125  		return nil, err
   126  	}
   127  	return &respBody, nil
   128  }