Skip to content

Commit

Permalink
add audit package
Browse files Browse the repository at this point in the history
  • Loading branch information
bachue committed Sep 5, 2024
1 parent 40355bf commit 7edf448
Show file tree
Hide file tree
Showing 6 changed files with 397 additions and 1 deletion.
1 change: 1 addition & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,4 @@ generate:
go generate ./storagev2/
go generate ./iam/
go generate ./media/
go generate ./audit/
2 changes: 1 addition & 1 deletion api-specs
Submodule api-specs updated 1 files
+40 −42 audit/query_log.yml
122 changes: 122 additions & 0 deletions audit/apis/api_query_log.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
// THIS FILE IS GENERATED BY api-generator, DO NOT EDIT DIRECTLY!

package apis

import (
"context"
querylog "github.com/qiniu/go-sdk/v7/audit/apis/query_log"
auth "github.com/qiniu/go-sdk/v7/auth"
uplog "github.com/qiniu/go-sdk/v7/internal/uplog"
errors "github.com/qiniu/go-sdk/v7/storagev2/errors"
httpclient "github.com/qiniu/go-sdk/v7/storagev2/http_client"
region "github.com/qiniu/go-sdk/v7/storagev2/region"
uptoken "github.com/qiniu/go-sdk/v7/storagev2/uptoken"
"net/url"
"strings"
"time"
)

type innerQueryLogRequest querylog.Request

func (query *innerQueryLogRequest) buildQuery() (url.Values, error) {
allQuery := make(url.Values)
if query.StartTime != "" {
allQuery.Set("start_time", query.StartTime)
} else {
return nil, errors.MissingRequiredFieldError{Name: "StartTime"}
}
if query.EndTime != "" {
allQuery.Set("end_time", query.EndTime)
} else {
return nil, errors.MissingRequiredFieldError{Name: "EndTime"}
}
if query.ServiceName != "" {
allQuery.Set("service_name", query.ServiceName)
}
if len(query.EventNames) > 0 {
for _, value := range query.EventNames {
allQuery.Add("event_names", value)
}
}
if query.PrincipalId != "" {
allQuery.Set("principal_id", query.PrincipalId)
}
if query.AccessKeyId != "" {
allQuery.Set("access_key_id", query.AccessKeyId)
}
if query.Limit != "" {
allQuery.Set("limit", query.Limit)
}
if query.NextMark != "" {
allQuery.Set("next_mark", query.NextMark)
}
return allQuery, nil
}

type QueryLogRequest = querylog.Request
type QueryLogResponse = querylog.Response

// 审计日志查询
func (audit *Audit) QueryLog(ctx context.Context, request *QueryLogRequest, options *Options) (*QueryLogResponse, error) {
if options == nil {
options = &Options{}
}
innerRequest := (*innerQueryLogRequest)(request)
serviceNames := []region.ServiceName{region.ServiceApi}
if innerRequest.Credentials == nil && audit.client.GetCredentials() == nil {
return nil, errors.MissingRequiredFieldError{Name: "Credentials"}
}
pathSegments := make([]string, 0, 2)
pathSegments = append(pathSegments, "audit", "log-query")
path := "/" + strings.Join(pathSegments, "/")
var rawQuery string
if query, err := innerRequest.buildQuery(); err != nil {
return nil, err
} else {
rawQuery += query.Encode()
}
uplogInterceptor, err := uplog.NewRequestUplog("queryLog", "", "", func() (string, error) {
credentials := innerRequest.Credentials
if credentials == nil {
credentials = audit.client.GetCredentials()
}
putPolicy, err := uptoken.NewPutPolicy("", time.Now().Add(time.Hour))
if err != nil {
return "", err
}
return uptoken.NewSigner(putPolicy, credentials).GetUpToken(ctx)
})
if err != nil {
return nil, err
}
req := httpclient.Request{Method: "GET", ServiceNames: serviceNames, Path: path, RawQuery: rawQuery, Endpoints: options.OverwrittenEndpoints, Region: options.OverwrittenRegion, Interceptors: []httpclient.Interceptor{uplogInterceptor}, AuthType: auth.TokenQiniu, Credentials: innerRequest.Credentials, BufferResponse: true, OnRequestProgress: options.OnRequestProgress}
if options.OverwrittenEndpoints == nil && options.OverwrittenRegion == nil && audit.client.GetRegions() == nil {
bucketHosts := httpclient.DefaultBucketHosts()

req.Region = audit.client.GetAllRegions()
if req.Region == nil {
if options.OverwrittenBucketHosts != nil {
if bucketHosts, err = options.OverwrittenBucketHosts.GetEndpoints(ctx); err != nil {
return nil, err
}
}
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()}
if hostRetryConfig := audit.client.GetHostRetryConfig(); hostRetryConfig != nil {
allRegionsOptions.RetryMax = hostRetryConfig.RetryMax
allRegionsOptions.Backoff = hostRetryConfig.Backoff
}
credentials := innerRequest.Credentials
if credentials == nil {
credentials = audit.client.GetCredentials()
}
if req.Region, err = region.NewAllRegionsProvider(credentials, bucketHosts, &allRegionsOptions); err != nil {
return nil, err
}
}
}
var respBody QueryLogResponse
if err := audit.client.DoAndAcceptJSON(ctx, &req, &respBody); err != nil {
return nil, err
}
return &respBody, nil
}
27 changes: 27 additions & 0 deletions audit/apis/apis.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
// THIS FILE IS GENERATED BY api-generator, DO NOT EDIT DIRECTLY!

package apis

import (
httpclient "github.com/qiniu/go-sdk/v7/storagev2/http_client"
region "github.com/qiniu/go-sdk/v7/storagev2/region"
)

// API 客户端
type Audit struct {
client *httpclient.Client
}

// 创建 API 客户端
func NewAudit(options *httpclient.Options) *Audit {
return &Audit{client: httpclient.NewClient(options)}
}

// API 客户端选项
type Options struct {
OverwrittenBucketHosts region.EndpointsProvider
OverwrittenBucketName string
OverwrittenEndpoints region.EndpointsProvider
OverwrittenRegion region.RegionsProvider
OnRequestProgress func(uint64, uint64)
}
Loading

0 comments on commit 7edf448

Please sign in to comment.