68 lines
1.9 KiB
Go
68 lines
1.9 KiB
Go
package main
|
|
|
|
import (
|
|
"bytes"
|
|
"encoding/json"
|
|
"flag"
|
|
"fmt"
|
|
"io"
|
|
"net/http"
|
|
"net/url"
|
|
"os"
|
|
"strings"
|
|
"time"
|
|
|
|
volcbase "github.com/volcengine/volc-sdk-golang/base"
|
|
)
|
|
|
|
func main() {
|
|
akFile := flag.String("ak-file", "", "file containing the Volcengine AccessKey ID")
|
|
skFile := flag.String("sk-file", "", "file containing the Volcengine SecretAccessKey")
|
|
resourceID := flag.String("resource-id", "volc.speech.dialog", "speech service resource ID")
|
|
projectName := flag.String("project", "default", "Volcengine project name")
|
|
flag.Parse()
|
|
if *akFile == "" || *skFile == "" {
|
|
panic("-ak-file and -sk-file are required")
|
|
}
|
|
target, _ := url.Parse("https://open.volcengineapi.com")
|
|
query := target.Query()
|
|
query.Set("Action", "QuotaMonitoring")
|
|
query.Set("Version", "2025-05-21")
|
|
target.RawQuery = query.Encode()
|
|
today := time.Now().Format("2006-01-02")
|
|
body, _ := json.Marshal(map[string]any{
|
|
"ProjectName": *projectName,
|
|
"ResourceID": *resourceID,
|
|
"Start": today,
|
|
"End": today,
|
|
"Mode": "daily",
|
|
"QuotaType": "concurrency",
|
|
})
|
|
request, _ := http.NewRequest(http.MethodPost, target.String(), bytes.NewReader(body))
|
|
request.Host = target.Host
|
|
request.Header.Set("Content-Type", "application/json; charset=UTF-8")
|
|
credentials := volcbase.Credentials{
|
|
AccessKeyID: readSecret(*akFile), SecretAccessKey: readSecret(*skFile),
|
|
Service: "speech_saas_prod", Region: "cn-beijing",
|
|
}
|
|
credentials.Sign(request)
|
|
response, err := (&http.Client{Timeout: 15 * time.Second}).Do(request)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
defer response.Body.Close()
|
|
responseBody, _ := io.ReadAll(io.LimitReader(response.Body, 1<<20))
|
|
var decoded map[string]any
|
|
_ = json.Unmarshal(responseBody, &decoded)
|
|
encoded, _ := json.Marshal(decoded)
|
|
fmt.Printf("status=%d response=%s\n", response.StatusCode, encoded)
|
|
}
|
|
|
|
func readSecret(path string) string {
|
|
value, err := os.ReadFile(path)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
return strings.TrimSpace(string(value))
|
|
}
|