Commit 5217fd03 authored by Euan游根明's avatar Euan游根明

feat: 文件转换

parent 56a3c5c9
package service
import (
"encoding/json"
"errors"
"fmt"
openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
imm20200930 "github.com/alibabacloud-go/imm-20200930/v4/client"
openapiutil "github.com/alibabacloud-go/openapi-util/service"
util "github.com/alibabacloud-go/tea-utils/v2/service"
"github.com/alibabacloud-go/tea/tea"
"net/url"
"strings"
)
type Conversion struct {
AccessKeyId string
AccessKeySecret string
Endpoint string
Bucket string
}
func NewConversion() *Conversion {
return &Conversion{
Endpoint: "imm.cn-shenzhen.aliyuncs.com",
AccessKeyId: "LTAI5tFsFNAoCngNdX9g4CMW",
AccessKeySecret: "otz3kkD0s3SWhVitKP2cqiZdCkTCJd",
Bucket: "test-bucket-v1",
}
}
func (o *Conversion) CreateClient() (_result *openapi.Client, _err error) {
config := &openapi.Config{
AccessKeyId: tea.String(o.AccessKeyId),
AccessKeySecret: tea.String(o.AccessKeySecret),
}
config.Endpoint = tea.String(o.Endpoint) //imm.cn-shenzhen.aliyuncs.com
_result = &openapi.Client{}
_result, _err = openapi.NewClient(config)
return _result, _err
}
// CreateApiInfo API 相关
func (o *Conversion) CreateApiInfo() (_result *openapi.Params) {
params := &openapi.Params{
Action: tea.String("CreateOfficeConversionTask"),
Version: tea.String("2020-09-30"),
Protocol: tea.String("HTTPS"),
Method: tea.String("POST"),
AuthType: tea.String("AK"),
Style: tea.String("RPC"),
Pathname: tea.String("/"),
ReqBodyType: tea.String("json"),
BodyType: tea.String("json"),
}
return params
}
// GetBucket 获取bucket信息
func (o *Conversion) GetBucket(isPrivate bool) string {
if isPrivate {
return "oss://" + "test-bucket-v1"
}
return "oss://" + "test-bucket-v1-pub"
}
type ConversionRequest struct {
ProjectName string
SourceType string
TargetType string
SourceURI string
TargetURI string
IsPrivate bool
}
type GetTaskRequest struct {
ProjectName string
TaskType string
TaskId string
RequestDefinition bool
}
func (o *Conversion) checkParam(arg ConversionRequest) error {
if arg.SourceURI == "" {
return errors.New("SourceURI 不能为空")
}
//if arg.TargetURI == "" {
// return errors.New("TargetURI 不能为空")
//}
if arg.ProjectName == "" {
return errors.New("ProjectName 不能为空")
}
if arg.SourceType == "" {
return errors.New("SourceType 不能为空")
}
if arg.TargetType == "" {
return errors.New("TargetType 不能为空")
}
return nil
}
// DoConversion 文件转换
func (o *Conversion) DoConversion(arg ConversionRequest) (string, error) {
//校验参数
checkErr := o.checkParam(arg)
if checkErr != nil {
return "", checkErr
}
client := NewConversion()
params := client.CreateApiInfo()
sourceParseUrl, parseErr := url.Parse(arg.SourceURI)
if parseErr != nil {
return "", parseErr
}
targetParseUrl, parseTargetErr := url.Parse(arg.TargetURI)
if parseTargetErr != nil {
return "", parseTargetErr
}
// query params
queries := map[string]interface{}{}
queries["ProjectName"] = arg.ProjectName
queries["SourceURI"] = o.GetBucket(arg.IsPrivate) + sourceParseUrl.Path
queries["TargetURI"] = o.GetBucket(arg.IsPrivate) + targetParseUrl.Path
//queries["TargetURIPrefix"] = arg.TargetURIPrefix
queries["SourceType"] = arg.SourceType
queries["TargetType"] = arg.TargetType
// runtime options
runtime := &util.RuntimeOptions{}
request := &openapi.OpenApiRequest{
Query: openapiutil.Query(queries),
}
ossClient, _err := client.CreateClient()
if _err != nil {
return "", _err
}
fmt.Println("DoConversion request", queries)
// 返回值为 Map 类型,可从 Map 中获得三类数据:响应体 body、响应头 headers、HTTP 返回的状态码 statusCode。
res, err := ossClient.CallApi(params, request, runtime)
fmt.Println("DoConversion result", res)
if err != nil {
return "", err
}
return "", err
}
func (o *Conversion) CreateImClient() (_result *imm20200930.Client, _err error) {
config := &openapi.Config{
AccessKeyId: tea.String(o.AccessKeyId),
AccessKeySecret: tea.String(o.AccessKeySecret),
}
config.Endpoint = tea.String(o.Endpoint)
_result = &imm20200930.Client{}
_result, _err = imm20200930.NewClient(config)
return _result, _err
}
// CreateProject 创建项目
func (o *Conversion) CreateProject() (_err error) {
client, createError := o.CreateImClient()
if createError != nil {
return createError
}
createProjectRequest := &imm20200930.CreateProjectRequest{}
var ProjectName = "DOC_TO_PDF"
createProjectRequest.ProjectName = &ProjectName
runtime := &util.RuntimeOptions{}
tryErr := func() (_e error) {
defer func() {
if r := tea.Recover(recover()); r != nil {
_e = r
}
}()
createdResp, _err := client.CreateProjectWithOptions(createProjectRequest, runtime)
if _err != nil {
return _err
}
fmt.Println("创建项目返回参数", createdResp)
return nil
}()
if tryErr != nil {
var sdkErr = &tea.SDKError{}
if _t, ok := tryErr.(*tea.SDKError); ok {
sdkErr = _t
} else {
sdkErr.Message = tea.String(tryErr.Error())
}
// 诊断地址
var data interface{}
d := json.NewDecoder(strings.NewReader(tea.StringValue(sdkErr.Data)))
decodeError := d.Decode(&data)
if decodeError != nil {
return decodeError
}
if m, ok := data.(map[string]interface{}); ok {
fmt.Println("创建项目出现异常", m["Code"])
resultCode, assertCodeError := util.AssertAsString(m["Code"])
if assertCodeError != nil {
return assertCodeError
}
if *resultCode == "ResourceAlreadyExists" {
return nil
}
return errors.New(*resultCode)
}
errMsg, assertError := util.AssertAsString(sdkErr.Message)
if assertError != nil {
return assertError
}
fmt.Println("创建项目出现异常", &errMsg)
}
return nil
}
func (o *Conversion) GetTaskProject(args GetTaskRequest) (string, error) {
client, _err := o.CreateImClient()
if _err != nil {
return "", _err
}
getTaskRequest := &imm20200930.GetTaskRequest{}
getTaskRequest.TaskId = &args.TaskId
getTaskRequest.TaskType = &args.TaskType
runtime := &util.RuntimeOptions{}
tryErr := func() (_e error) {
defer func() {
if r := tea.Recover(recover()); r != nil {
_e = r
}
}()
// 复制代码运行请自行打印 API 的返回值
_, _err = client.GetTaskWithOptions(getTaskRequest, runtime)
if _err != nil {
return _err
}
return nil
}()
if tryErr != nil {
var error = &tea.SDKError{}
if _t, ok := tryErr.(*tea.SDKError); ok {
error = _t
} else {
error.Message = tea.String(tryErr.Error())
}
// 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
// 错误 message
fmt.Println(tea.StringValue(error.Message))
// 诊断地址
var data interface{}
d := json.NewDecoder(strings.NewReader(tea.StringValue(error.Data)))
d.Decode(&data)
if m, ok := data.(map[string]interface{}); ok {
recommend, _ := m["Recommend"]
fmt.Println(recommend)
}
_, _err = util.AssertAsString(error.Message)
if _err != nil {
return "", _err
}
}
return "", _err
}
package controllers
import (
service "doc-service/Service"
"github.com/gin-contrib/sessions"
"github.com/gin-gonic/gin"
"net/http"
......@@ -8,6 +9,14 @@ import (
type ApiController struct{}
func res(c *gin.Context, code int64, msg string, data interface{}) {
c.JSON(http.StatusOK, gin.H{
"code": code,
"msg": msg,
"data": data,
})
}
func (con ApiController) Index(c *gin.Context) {
session := sessions.Default(c)
session.Options(sessions.Options{
......@@ -27,3 +36,55 @@ func (con ApiController) Userlist(c *gin.Context) {
func (con ApiController) Plist(c *gin.Context) {
c.String(200, "我是一个api接口-Plist")
}
//文件转换
func (con ApiController) Conversion(c *gin.Context) {
ret := make(map[string]interface{}, 0)
ret["errcode"] = 0
ret["errmsg"] = nil
ret["base64"] = nil
req := service.ConversionRequest{}
req.ProjectName = c.PostForm("project_name")
req.SourceType = c.PostForm("source_type")
req.TargetType = c.PostForm("target_type")
req.SourceURI = c.PostForm("source_url")
req.TargetURI = c.PostForm("target_url")
req.IsPrivate = true
//创建项目
createErr := service.NewConversion().CreateProject()
if createErr != nil {
ret["errmsg"] = createErr.Error()
ret["errcode"] = 100010
res(c, http.StatusOK, "成功", ret)
return
}
//执行转换
result, errs := service.NewConversion().DoConversion(req)
if errs != nil {
ret["errmsg"] = errs.Error()
ret["errcode"] = 100011
}
ret["url"] = result
res(c, http.StatusOK, "成功", ret)
return
}
//获取转换结果
func (con ApiController) GetTaskProject(c *gin.Context) {
ret := make(map[string]interface{}, 0)
req := service.GetTaskRequest{}
req.ProjectName = c.Query("project_name")
req.TaskId = c.Query("task_id")
req.TaskType = c.Query("task_type")
result, errs := service.NewConversion().GetTaskProject(req)
if errs != nil {
ret["errmsg"] = errs.Error()
ret["errcode"] = 100011
}
ret["url"] = result
res(c, http.StatusOK, "成功", ret)
return
}
......@@ -3,8 +3,14 @@ module doc-service
go 1.20
require (
github.com/alibabacloud-go/darabonba-openapi/v2 v2.0.9
github.com/alibabacloud-go/imm-20200930/v4 v4.5.4
github.com/alibabacloud-go/openapi-util v0.1.1
github.com/alibabacloud-go/tea v1.2.2
github.com/alibabacloud-go/tea-utils/v2 v2.0.6
github.com/gin-contrib/sessions v1.0.1
github.com/gin-gonic/gin v1.10.0
github.com/pkg/errors v0.9.1
github.com/redis/go-redis/v9 v9.6.1
gopkg.in/ini.v1 v1.67.0
gorm.io/driver/mysql v1.5.7
......@@ -12,9 +18,15 @@ require (
)
require (
github.com/alibabacloud-go/alibabacloud-gateway-spi v0.0.4 // indirect
github.com/alibabacloud-go/debug v1.0.0 // indirect
github.com/alibabacloud-go/endpoint-util v1.1.0 // indirect
github.com/alibabacloud-go/tea-xml v1.1.3 // indirect
github.com/aliyun/credentials-go v1.3.1 // indirect
github.com/bytedance/sonic v1.12.1 // indirect
github.com/bytedance/sonic/loader v0.2.0 // indirect
github.com/cespare/xxhash/v2 v2.2.0 // indirect
github.com/clbanning/mxj/v2 v2.5.5 // indirect
github.com/cloudwego/base64x v0.1.4 // indirect
github.com/cloudwego/iasm v0.2.0 // indirect
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect
......@@ -37,6 +49,7 @@ require (
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.2 // indirect
github.com/pelletier/go-toml/v2 v2.2.2 // indirect
github.com/tjfoc/gmsm v1.4.1 // indirect
github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
github.com/ugorji/go/codec v1.2.12 // indirect
golang.org/x/arch v0.9.0 // indirect
......
This diff is collapsed.
......@@ -10,6 +10,8 @@ func ApiRoutersInit(r *gin.Engine) {
apiRouters := r.Group("/api") //middlewares.InitMiddleware
{
apiRouters.GET("/", controllers.ApiController{}.Index)
apiRouters.POST("/", controllers.ApiController{}.Conversion)
apiRouters.GET("/", controllers.ApiController{}.GetTaskProject)
}
}
// This file is auto-generated, don't edit it. Thanks.
package client
import (
"io"
"github.com/alibabacloud-go/tea/tea"
credential "github.com/aliyun/credentials-go/credentials"
)
type InterceptorContext struct {
Request *InterceptorContextRequest `json:"request,omitempty" xml:"request,omitempty" require:"true" type:"Struct"`
Configuration *InterceptorContextConfiguration `json:"configuration,omitempty" xml:"configuration,omitempty" require:"true" type:"Struct"`
Response *InterceptorContextResponse `json:"response,omitempty" xml:"response,omitempty" require:"true" type:"Struct"`
}
func (s InterceptorContext) String() string {
return tea.Prettify(s)
}
func (s InterceptorContext) GoString() string {
return s.String()
}
func (s *InterceptorContext) SetRequest(v *InterceptorContextRequest) *InterceptorContext {
s.Request = v
return s
}
func (s *InterceptorContext) SetConfiguration(v *InterceptorContextConfiguration) *InterceptorContext {
s.Configuration = v
return s
}
func (s *InterceptorContext) SetResponse(v *InterceptorContextResponse) *InterceptorContext {
s.Response = v
return s
}
type InterceptorContextRequest struct {
Headers map[string]*string `json:"headers,omitempty" xml:"headers,omitempty"`
Query map[string]*string `json:"query,omitempty" xml:"query,omitempty"`
Body interface{} `json:"body,omitempty" xml:"body,omitempty"`
Stream io.Reader `json:"stream,omitempty" xml:"stream,omitempty"`
HostMap map[string]*string `json:"hostMap,omitempty" xml:"hostMap,omitempty"`
Pathname *string `json:"pathname,omitempty" xml:"pathname,omitempty" require:"true"`
ProductId *string `json:"productId,omitempty" xml:"productId,omitempty" require:"true"`
Action *string `json:"action,omitempty" xml:"action,omitempty" require:"true"`
Version *string `json:"version,omitempty" xml:"version,omitempty" require:"true"`
Protocol *string `json:"protocol,omitempty" xml:"protocol,omitempty" require:"true"`
Method *string `json:"method,omitempty" xml:"method,omitempty" require:"true"`
AuthType *string `json:"authType,omitempty" xml:"authType,omitempty" require:"true"`
BodyType *string `json:"bodyType,omitempty" xml:"bodyType,omitempty" require:"true"`
ReqBodyType *string `json:"reqBodyType,omitempty" xml:"reqBodyType,omitempty" require:"true"`
Style *string `json:"style,omitempty" xml:"style,omitempty"`
Credential credential.Credential `json:"credential,omitempty" xml:"credential,omitempty" require:"true"`
SignatureVersion *string `json:"signatureVersion,omitempty" xml:"signatureVersion,omitempty"`
SignatureAlgorithm *string `json:"signatureAlgorithm,omitempty" xml:"signatureAlgorithm,omitempty"`
UserAgent *string `json:"userAgent,omitempty" xml:"userAgent,omitempty" require:"true"`
}
func (s InterceptorContextRequest) String() string {
return tea.Prettify(s)
}
func (s InterceptorContextRequest) GoString() string {
return s.String()
}
func (s *InterceptorContextRequest) SetHeaders(v map[string]*string) *InterceptorContextRequest {
s.Headers = v
return s
}
func (s *InterceptorContextRequest) SetQuery(v map[string]*string) *InterceptorContextRequest {
s.Query = v
return s
}
func (s *InterceptorContextRequest) SetBody(v interface{}) *InterceptorContextRequest {
s.Body = v
return s
}
func (s *InterceptorContextRequest) SetStream(v io.Reader) *InterceptorContextRequest {
s.Stream = v
return s
}
func (s *InterceptorContextRequest) SetHostMap(v map[string]*string) *InterceptorContextRequest {
s.HostMap = v
return s
}
func (s *InterceptorContextRequest) SetPathname(v string) *InterceptorContextRequest {
s.Pathname = &v
return s
}
func (s *InterceptorContextRequest) SetProductId(v string) *InterceptorContextRequest {
s.ProductId = &v
return s
}
func (s *InterceptorContextRequest) SetAction(v string) *InterceptorContextRequest {
s.Action = &v
return s
}
func (s *InterceptorContextRequest) SetVersion(v string) *InterceptorContextRequest {
s.Version = &v
return s
}
func (s *InterceptorContextRequest) SetProtocol(v string) *InterceptorContextRequest {
s.Protocol = &v
return s
}
func (s *InterceptorContextRequest) SetMethod(v string) *InterceptorContextRequest {
s.Method = &v
return s
}
func (s *InterceptorContextRequest) SetAuthType(v string) *InterceptorContextRequest {
s.AuthType = &v
return s
}
func (s *InterceptorContextRequest) SetBodyType(v string) *InterceptorContextRequest {
s.BodyType = &v
return s
}
func (s *InterceptorContextRequest) SetReqBodyType(v string) *InterceptorContextRequest {
s.ReqBodyType = &v
return s
}
func (s *InterceptorContextRequest) SetStyle(v string) *InterceptorContextRequest {
s.Style = &v
return s
}
func (s *InterceptorContextRequest) SetCredential(v credential.Credential) *InterceptorContextRequest {
s.Credential = v
return s
}
func (s *InterceptorContextRequest) SetSignatureVersion(v string) *InterceptorContextRequest {
s.SignatureVersion = &v
return s
}
func (s *InterceptorContextRequest) SetSignatureAlgorithm(v string) *InterceptorContextRequest {
s.SignatureAlgorithm = &v
return s
}
func (s *InterceptorContextRequest) SetUserAgent(v string) *InterceptorContextRequest {
s.UserAgent = &v
return s
}
type InterceptorContextConfiguration struct {
RegionId *string `json:"regionId,omitempty" xml:"regionId,omitempty" require:"true"`
Endpoint *string `json:"endpoint,omitempty" xml:"endpoint,omitempty"`
EndpointRule *string `json:"endpointRule,omitempty" xml:"endpointRule,omitempty"`
EndpointMap map[string]*string `json:"endpointMap,omitempty" xml:"endpointMap,omitempty"`
EndpointType *string `json:"endpointType,omitempty" xml:"endpointType,omitempty"`
Network *string `json:"network,omitempty" xml:"network,omitempty"`
Suffix *string `json:"suffix,omitempty" xml:"suffix,omitempty"`
}
func (s InterceptorContextConfiguration) String() string {
return tea.Prettify(s)
}
func (s InterceptorContextConfiguration) GoString() string {
return s.String()
}
func (s *InterceptorContextConfiguration) SetRegionId(v string) *InterceptorContextConfiguration {
s.RegionId = &v
return s
}
func (s *InterceptorContextConfiguration) SetEndpoint(v string) *InterceptorContextConfiguration {
s.Endpoint = &v
return s
}
func (s *InterceptorContextConfiguration) SetEndpointRule(v string) *InterceptorContextConfiguration {
s.EndpointRule = &v
return s
}
func (s *InterceptorContextConfiguration) SetEndpointMap(v map[string]*string) *InterceptorContextConfiguration {
s.EndpointMap = v
return s
}
func (s *InterceptorContextConfiguration) SetEndpointType(v string) *InterceptorContextConfiguration {
s.EndpointType = &v
return s
}
func (s *InterceptorContextConfiguration) SetNetwork(v string) *InterceptorContextConfiguration {
s.Network = &v
return s
}
func (s *InterceptorContextConfiguration) SetSuffix(v string) *InterceptorContextConfiguration {
s.Suffix = &v
return s
}
type InterceptorContextResponse struct {
StatusCode *int `json:"statusCode,omitempty" xml:"statusCode,omitempty"`
Headers map[string]*string `json:"headers,omitempty" xml:"headers,omitempty"`
Body io.Reader `json:"body,omitempty" xml:"body,omitempty"`
DeserializedBody interface{} `json:"deserializedBody,omitempty" xml:"deserializedBody,omitempty"`
}
func (s InterceptorContextResponse) String() string {
return tea.Prettify(s)
}
func (s InterceptorContextResponse) GoString() string {
return s.String()
}
func (s *InterceptorContextResponse) SetStatusCode(v int) *InterceptorContextResponse {
s.StatusCode = &v
return s
}
func (s *InterceptorContextResponse) SetHeaders(v map[string]*string) *InterceptorContextResponse {
s.Headers = v
return s
}
func (s *InterceptorContextResponse) SetBody(v io.Reader) *InterceptorContextResponse {
s.Body = v
return s
}
func (s *InterceptorContextResponse) SetDeserializedBody(v interface{}) *InterceptorContextResponse {
s.DeserializedBody = v
return s
}
type AttributeMap struct {
Attributes map[string]interface{} `json:"attributes,omitempty" xml:"attributes,omitempty" require:"true"`
Key map[string]*string `json:"key,omitempty" xml:"key,omitempty" require:"true"`
}
func (s AttributeMap) String() string {
return tea.Prettify(s)
}
func (s AttributeMap) GoString() string {
return s.String()
}
func (s *AttributeMap) SetAttributes(v map[string]interface{}) *AttributeMap {
s.Attributes = v
return s
}
func (s *AttributeMap) SetKey(v map[string]*string) *AttributeMap {
s.Key = v
return s
}
type ClientInterface interface {
ModifyConfiguration(context *InterceptorContext, attributeMap *AttributeMap) error
ModifyRequest(context *InterceptorContext, attributeMap *AttributeMap) error
ModifyResponse(context *InterceptorContext, attributeMap *AttributeMap) error
}
type Client struct {
}
func NewClient() (*Client, error) {
client := new(Client)
err := client.Init()
return client, err
}
func (client *Client) Init() (_err error) {
return nil
}
func (client *Client) ModifyConfiguration(context *InterceptorContext, attributeMap *AttributeMap) (_err error) {
panic("No Support!")
}
func (client *Client) ModifyRequest(context *InterceptorContext, attributeMap *AttributeMap) (_err error) {
panic("No Support!")
}
func (client *Client) ModifyResponse(context *InterceptorContext, attributeMap *AttributeMap) (_err error) {
panic("No Support!")
}
This diff is collapsed.
This diff is collapsed.
package debug
import (
"reflect"
"testing"
)
func assertEqual(t *testing.T, a, b interface{}) {
if !reflect.DeepEqual(a, b) {
t.Errorf("%v != %v", a, b)
}
}
package debug
import (
"fmt"
"os"
"strings"
)
type Debug func(format string, v ...interface{})
var hookGetEnv = func() string {
return os.Getenv("DEBUG")
}
var hookPrint = func(input string) {
fmt.Println(input)
}
func Init(flag string) Debug {
enable := false
env := hookGetEnv()
parts := strings.Split(env, ",")
for _, part := range parts {
if part == flag {
enable = true
break
}
}
return func(format string, v ...interface{}) {
if enable {
hookPrint(fmt.Sprintf(format, v...))
}
}
}
// This file is auto-generated, don't edit it. Thanks.
/**
* Get endpoint
* @return string
*/
package service
import (
"fmt"
"strings"
"github.com/alibabacloud-go/tea/tea"
)
func GetEndpointRules(product, regionId, endpointType, network, suffix *string) (_result *string, _err error) {
if tea.StringValue(endpointType) == "regional" {
if tea.StringValue(regionId) == "" {
_err = fmt.Errorf("RegionId is empty, please set a valid RegionId")
return tea.String(""), _err
}
_result = tea.String(strings.Replace("<product><suffix><network>.<region_id>.aliyuncs.com",
"<region_id>", tea.StringValue(regionId), 1))
} else {
_result = tea.String("<product><suffix><network>.aliyuncs.com")
}
_result = tea.String(strings.Replace(tea.StringValue(_result),
"<product>", strings.ToLower(tea.StringValue(product)), 1))
if tea.StringValue(network) == "" || tea.StringValue(network) == "public" {
_result = tea.String(strings.Replace(tea.StringValue(_result), "<network>", "", 1))
} else {
_result = tea.String(strings.Replace(tea.StringValue(_result),
"<network>", "-"+tea.StringValue(network), 1))
}
if tea.StringValue(suffix) == "" {
_result = tea.String(strings.Replace(tea.StringValue(_result), "<suffix>", "", 1))
} else {
_result = tea.String(strings.Replace(tea.StringValue(_result),
"<suffix>", "-"+tea.StringValue(suffix), 1))
}
return _result, nil
}
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
test_long_oidc_token_eyJhbGciOiJSUzI1NiIsImtpZCI6ImFQaXlpNEVGSU8wWnlGcFh1V0psQUNWbklZVlJsUkNmM2tlSzNMUlhWT1UifQ.eyJhdWQiOlsic3RzLmFsaXl1bmNzLmNvbSJdLCJleHAiOjE2NDUxMTk3ODAsImlhdCI6MTY0NTA4Mzc4MCwiaXNzIjoiaHR0cHM6Ly9vaWRjLWFjay1jbi1oYW5nemhvdS5vc3MtY24taGFuZ3pob3UtaW50ZXJuYWwuYWxpeXVuY3MuY29tL2NmMWQ4ZGIwMjM0ZDk0YzEyOGFiZDM3MTc4NWJjOWQxNSIsImt1YmVybmV0ZXMuaW8iOnsibmFtZXNwYWNlIjoidGVzdC1ycnNhIiwicG9kIjp7Im5hbWUiOiJydW4tYXMtcm9vdCIsInVpZCI6ImIzMGI0MGY2LWNiZTAtNGY0Yy1hZGYyLWM1OGQ4ZmExZTAxMCJ9LCJzZXJ2aWNlYWNjb3VudCI6eyJuYW1lIjoidXNlcjEiLCJ1aWQiOiJiZTEyMzdjYS01MTY4LTQyMzYtYWUyMC00NDM1YjhmMGI4YzAifX0sIm5iZiI6MTY0NTA4Mzc4MCwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50OnRlc3QtcnJzYTp1c2VyMSJ9.XGP-wgLj-iMiAHjLe0lZLh7y48Qsj9HzsEbNh706WwerBoxnssdsyGFb9lzd2FyM8CssbAOCstr7OuAMWNdJmDZgpiOGGSbQ-KXXmbfnIS4ix-V3pQF6LVBFr7xJlj20J6YY89um3rv_04t0iCGxKWs2ZMUyU1FbZpIPRep24LVKbUz1saiiVGgDBTIZdHA13Z-jUvYAnsxK_Kj5tc1K-IuQQU0IwSKJh5OShMcdPugMV5LwTL3ogCikfB7yljq5vclBhCeF2lXLIibvwF711TOhuJ5lMlh-a2KkIgwBHhANg_U9k4Mt_VadctfUGc4hxlSbBD0w9o9mDGKwgGmW5Q
\ No newline at end of file
package credentials
//Environmental virables that may be used by the provider
const (
ENVCredentialFile = "ALIBABA_CLOUD_CREDENTIALS_FILE"
ENVEcsMetadata = "ALIBABA_CLOUD_ECS_METADATA"
PATHCredentialFile = "~/.alibabacloud/credentials"
ENVRoleArn = "ALIBABA_CLOUD_ROLE_ARN"
ENVOIDCProviderArn = "ALIBABA_CLOUD_OIDC_PROVIDER_ARN"
ENVOIDCTokenFile = "ALIBABA_CLOUD_OIDC_TOKEN_FILE"
ENVRoleSessionName = "ALIBABA_CLOUD_ROLE_SESSION_NAME"
)
// Provider will be implemented When you want to customize the provider.
type Provider interface {
resolve() (*Config, error)
}
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
{ "this":"is", "a":"test", "file":"for", "files_test.go":"case" }
{ "with":"some", "bad":JSON, "in":"it" }
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment