媒体处理 MPC-Go SDK:开始使用

时间:2024-07-30 16:48:27

开始使用

  1. 导入依赖模块。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    import (
        "fmt"
        "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic"
        "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/config"
        "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/httphandler"
        "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/mpc/v1"
        "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/mpc/v1/model"
        "net/http"
    )
    

  2. 配置客户端属性。

    1. 默认配置
      1
      2
      # Use default configuration
      httpConfig := config.DefaultHttpConfig()
      
    2. 代理配置(可选)。
      1
      2
      3
      4
      5
      6
      7
      8
      9
      username := os.Getenv("USER_NAME")
      password := os.Getenv("USER_PASSWARD")
      // 根据需要配置网络代理
      httpConfig.WithProxy(config.NewProxy().
          WithSchema("http").
          WithHost("proxy.huaweicloud.com").
          WithPort(80).
          WithUsername(username).
          WithPassword(password))
      
    3. SSL配置(可选)
      1
      2
      // 根据需要配置是否跳过SSL证书校验
      httpConfig.WithIgnoreSSLVerification(true);
      

  3. 初始化认证信息。

    支持两种方式认证,您可以根据实际情况进行选择。

    • 使用永久AK/SK

      首先需要获取永久AK和SK,以及projectId,您可以参考开发前准备获取。

      1
      2
      3
      4
      5
      6
      7
      8
      ak := os.Getenv("SDK_AK")
      sk := os.Getenv("SDK_SK")
      projectId := os.Getenv("PROJECT_ID")
      auth := basic.NewCredentialsBuilder().
                  WithAk(ak).
                  WithSk(sk).
                  WithProjectId(projectId).
                  Build()
      
    • 使用临时AK/SK

      首先需要获得临时AK、SK和SecurityToken,您可以通过token获取或者通过委托授权获取

       1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      ak := os.Getenv("SDK_AK")
      sk := os.Getenv("SDK_SK")
      projectId := os.Getenv("PROJECT_ID")
      securityToken := os.Getenv("SECURITY_TOKEN")
      auth := basic.NewCredentialsBuilder().
                  WithAk(ak).
                  WithSk(sk).
                  WithProjectId(projectId).
                  WithSecurityToken(securityToken).
                  Build()
      
    相关参数说明如下所示:
    • ak:账号Access Key。
    • sk:账号Secret Access Key 。
    • projectId:云服务所在项目ID ,根据你想操作的项目所属区域选择对应的项目ID。
    • securityToken:采用临时AK/SK认证场景下的安全票据。

  4. 初始化客户端。

    1
    2
    3
    4
    5
    6
    7
    8
    # 初始化MPC的客户端
    client := mpc.NewMpcClient
    (
        mpcMpcClientBuilder().
            WithEndpoint(endpoint).     // endpoint值如 "https://mpc.region01.myhuaweicloud.com"
            WithCredential(auth).
            WithHttpConfig(config.DefaultHttpConfig()).  
            Build())
    

    endpoint:MPC应用区域和各服务的终端节点,具体请参见地区和终端节点

  5. 发送请求并查看响应。

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    // 初始化请求,以调用接口查询转码模板为例
    request := &model.ListTranscodingTaskRequest{    
        TaskId:&[]int64{1900293},
    }
    response, err := client.ListTranscodingTask(request)
    if err == nil {
        fmt.Printf("%+v\n",response)
    } else {
        fmt.Println(err)
    }
    

  6. 异常处理。

    表1 异常处理

    一级分类

    一级分类说明

    ServiceResponseError

    service response error

    url.Error

    connect endpoint error

    1
    2
    3
    4
    5
    6
    7
    # 异常处理
    response, err := client.ListTranscodingTask(request)
    if err == nil {
        fmt.Println(response)
    } else {
        fmt.Println(err)
    }
    

  7. 原始Http侦听器。

    在某些场景下可能对业务发出的Http请求进行Debug,需要看到原始的Http请求和返回信息,SDK提供侦听器功能来获取原始的为加密的Http请求和返回信息。

    原始信息打印仅在debug阶段使用,请不要在生产系统中将原始的Http头和Body信息打印到日志,这些信息并未加密且其中包含敏感数据;当Body体为二进制内容,即Content-Type标识为二进制时 body为"***",详细内容不输出。

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    func RequestHandler(request http.Request) {
        fmt.Println(request)
    }
    
    func ResponseHandler(response http.Response) {
        fmt.Println(response)
    }
    
    ak := os.Getenv("SDK_AK")
    sk := os.Getenv("SDK_SK")
    projectId := os.Getenv("{your project id}")
    client := mpc.NewMpcClient(
        mpc.MpcClientBuilder().
            WithEndpoint("{your endpoint}").
            WithCredential(
                basic.NewCredentialsBuilder().
                    WithAk(ak).
                    WithSk(sk).
                    WithProjectId(projectId).
                       Build()).
            WithHttpConfig(config.DefaultHttpConfig().
                WithIgnoreSSLVerification(true).
                WithHttpHandler(httphandler.
                    NewHttpHandler().
                        AddRequestHandler(RequestHandler).
                        AddResponseHandler(ResponseHandler))).Build())
    

support.huaweicloud.com/sdkreference-mpc/mpc_05_0089.html