123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- package service
- import (
- "context"
- "encoding/json"
- "fmt"
- v1 "github.com/go-nunu/nunu-layout-advanced/api/v1"
- "github.com/spf13/viper"
- )
- type CdnService interface {
- GetToken(ctx context.Context) (string, error)
- }
- func NewCdnService(
- service *Service,
- conf *viper.Viper,
- request RequestService,
- ) CdnService {
- return &cdnService{
- Service: service,
- Url: conf.GetString("flexCdn.Url"),
- AccessKeyID: conf.GetString("flexCdn.AccessKeyID"),
- AccessKeySecret: conf.GetString("flexCdn.AccessKeySecret"),
- request: request,
- }
- }
- type cdnService struct {
- *Service
- Url string
- AccessKeyID string
- AccessKeySecret string
- request RequestService
- }
- func (s *cdnService) GetToken(ctx context.Context) (string, error) {
- formData := map[string]interface{}{
- "type": "admin",
- "accessKeyId": s.AccessKeyID,
- "accessKey": s.AccessKeySecret,
- }
- apiUrl := s.Url + "APIAccessTokenService/getAPIAccessToken"
- resBody, err := s.request.Request(ctx, formData, apiUrl, "\"X-Cloud-Access-Token\"", "")
- if err != nil {
- return "", err
- }
- var res v1.GeneralResponse[v1.FlexCdnTokenResponse]
- if err := json.Unmarshal(resBody, &res); err != nil {
- return "", fmt.Errorf("反序列化响应 JSON 失败 (内容: %s): %w", string(resBody), err)
- }
- if res.Code != 200 {
- return "", fmt.Errorf("API 错误: code %d, msg '%s'", res.Code, res.Message)
- }
- return res.Data.Token, nil
- }
|