Browse Source

add CI图片审核

tags/v0.7.11^2
jojoliang 4 years ago
parent
commit
98eab2886c
  1. 26
      ci.go
  2. 62
      example/object/ci_get.go
  3. 4
      object.go

26
ci.go

@ -4,6 +4,7 @@ import (
"context"
"encoding/json"
"encoding/xml"
"io"
"net/http"
)
@ -72,3 +73,28 @@ func (s *ObjectService) PostCI(ctx context.Context, name string, opt *CloudImage
resp, err := s.client.send(ctx, &sendOpt)
return &res, resp, err
}
type CloudImageRecognitionInfo struct {
Code int `xml:"Code,omitempty"`
Msg string `xml:"Msg,omitempty"`
HitFlag int `xml:"HitFlag,omitempty"`
Score int `xml:"Score,omitempty"`
Label string `xml:"Label,omitempty"`
Count int `xml:"Count,omitempty"`
}
type CloudImageRecognitionResult struct {
PornInfo *CloudImageRecognitionInfo `xml:"PornInfo,omitempty"`
TerroristInfo *CloudImageRecognitionInfo `xml:"TerroristInfo,omitempty"`
PoliticsInfo *CloudImageRecognitionInfo `xml:"PoliticsInfo,omitempty"`
AdsInfo *CloudImageRecognitionInfo `xml:"AdsInfo,omitempty"`
}
func GetRecognitionResult(body io.ReadCloser) *CloudImageRecognitionResult {
var res CloudImageRecognitionResult
err := xml.NewDecoder(body).Decode(&res)
if err != nil && err != io.EOF {
return nil
}
return &res
}

62
example/object/ci_get.go

@ -0,0 +1,62 @@
package main
import (
"context"
"fmt"
"net/http"
"net/url"
"os"
"github.com/tencentyun/cos-go-sdk-v5"
"github.com/tencentyun/cos-go-sdk-v5/debug"
)
func log_status(err error) {
if err == nil {
return
}
if cos.IsNotFoundError(err) {
// WARN
fmt.Println("WARN: Resource is not existed")
} else if e, ok := cos.IsCOSError(err); ok {
fmt.Printf("ERROR: Code: %v\n", e.Code)
fmt.Printf("ERROR: Message: %v\n", e.Message)
fmt.Printf("ERROR: Resource: %v\n", e.Resource)
fmt.Printf("ERROR: RequestId: %v\n", e.RequestID)
// ERROR
} else {
fmt.Printf("ERROR: %v\n", err)
// ERROR
}
}
func main() {
u, _ := url.Parse("https://test-1259654469.cos.ap-guangzhou.myqcloud.com")
b := &cos.BaseURL{BucketURL: u}
c := cos.NewClient(b, &http.Client{
Transport: &cos.AuthorizationTransport{
SecretID: os.Getenv("COS_SECRETID"),
SecretKey: os.Getenv("COS_SECRETKEY"),
Transport: &debug.DebugRequestTransport{
RequestHeader: true,
RequestBody: true,
ResponseHeader: true,
ResponseBody: true,
},
},
})
opt := &cos.ObjectGetOptions{
CIProcess: "sensitive-content-recognition",
CIDetectType: "porn,terrorist,politics,ads",
}
// Case1 Download object into ReadCloser(). the body needs to be closed
name := "test.jpg"
resp, err := c.Object.Get(context.Background(), name, opt)
log_status(err)
resp.Body.Close()
res := cos.GetRecognitionResult(resp.Body)
if res != nil {
fmt.Printf("%+v\n", res)
}
}

4
object.go

@ -35,6 +35,10 @@ type ObjectGetOptions struct {
XCosSSECustomerKeyMD5 string `header:"x-cos-server-side-encryption-customer-key-MD5,omitempty" url:"-" xml:"-"`
XCosTrafficLimit int `header:"x-cos-traffic-limit,omitempty" url:"-" xml:"-"`
// CI 图片审核
CIProcess string `header:"-" url:"ci-process" xml:"-"`
CIDetectType string `header:"-" url:"detect-type" xml:"-"`
}
// presignedURLTestingOptions is the opt of presigned url

Loading…
Cancel
Save