chore: add documentation links for sdk3rd clients

This commit is contained in:
Fu Diwei 2026-06-18 17:03:45 +08:00 committed by RHQYZ
parent dcd0ac6916
commit f0401db3bf
75 changed files with 181 additions and 58 deletions

View File

@ -120,7 +120,6 @@ func (d *DNSProvider) Present(ctx context.Context, domain, token, keyAuth string
return fmt.Errorf("conohavpsv3: error when list zones: %w", err)
}
// REF: https://doc.conoha.jp/reference/api-vps3/api-dns-vps3/dnsaas-create_record-v3/
response, err := d.client.DnsCreateRecordWithContext(ctx, zoneInfo.UUID, &conohavpssdk.DnsCreateRecordRequest{
Name: lo.ToPtr(info.EffectiveFQDN),
Type: lo.ToPtr("TXT"),
@ -187,7 +186,6 @@ func (d *DNSProvider) findZone(ctx context.Context, zoneName string) (*conohavps
offset := 0
limit := 10
for {
// REF: https://doc.conoha.jp/reference/api-vps3/api-dns-vps3/dnsaas-get_domains_list-v3/
request := &conohavpssdk.DnsGetDomainsListRequest{
Offset: lo.ToPtr(offset),
Limit: lo.ToPtr(limit),

View File

@ -102,7 +102,6 @@ func (d *DNSProvider) Present(ctx context.Context, domain, token, keyAuth string
return fmt.Errorf("ctyun: %w", err)
}
// REF: https://eop.ctyun.cn/ebp/ctapiDocument/search?sid=122&api=11259&data=181&isNormal=1&vid=259
request := &ctyundns.AddRecordRequest{
Domain: lo.ToPtr(dns01.UnFqdn(authZone)),
Host: lo.ToPtr(subDomain),
@ -134,7 +133,6 @@ func (d *DNSProvider) CleanUp(ctx context.Context, domain, token, keyAuth string
return fmt.Errorf("tencentcloud-eo: unknown record ID for '%s'", info.EffectiveFQDN)
}
// REF: https://eop.ctyun.cn/ebp/ctapiDocument/search?sid=122&api=11262&data=181&isNormal=1&vid=259
request := &ctyundns.DeleteRecordRequest{
RecordId: lo.ToPtr(recordID),
}

View File

@ -109,7 +109,6 @@ func (d *DNSProvider) Present(ctx context.Context, domain, token, keyAuth string
return fmt.Errorf("dynv6: error when list zones: %w", err)
}
// REF: https://dynv6.github.io/api-spec/#tag/records/operation/addRecord
response, err := d.client.AddRecordWithContext(ctx, zoneInfo.ID, &dynv6sdk.AddRecordRequest{
Type: lo.ToPtr("TXT"),
Name: lo.ToPtr(subDomain),
@ -172,7 +171,6 @@ func (d *DNSProvider) Timeout() (timeout, interval time.Duration) {
}
func (d *DNSProvider) findZone(ctx context.Context, zoneName string) (*dynv6sdk.ZoneRecord, error) {
// REF: https://dynv6.github.io/api-spec/#tag/zones/operation/findZones
zones, err := d.client.ListZonesWithContext(ctx)
if err != nil {
return nil, err

View File

@ -113,7 +113,6 @@ func (d *DNSProvider) Present(ctx context.Context, domain, token, keyAuth string
return fmt.Errorf("linode: error when list domains: %w", err)
}
// REF: https://techdocs.akamai.com/linode-api/reference/post-domain-record
response, err := d.client.CreateDomainRecordWithContext(ctx, lo.FromPtr(zoneInfo.ID), &linodesdk.CreateDomainRecordRequest{
Name: lo.ToPtr(dns01.UnFqdn(info.EffectiveFQDN)),
Type: lo.ToPtr("TXT"),
@ -194,7 +193,6 @@ func (d *DNSProvider) findZone(ctx context.Context, zoneName string) (*linodesdk
page := 1
pageSize := 100
for {
// REF: https://techdocs.akamai.com/linode-api/reference/get-domains
request := &linodesdk.ListDomainsRequest{
Page: lo.ToPtr(page),
PageSize: lo.ToPtr(pageSize),

View File

@ -98,7 +98,6 @@ func (d *DNSProvider) Present(ctx context.Context, domain, token, keyAuth string
return fmt.Errorf("qingcloud: could not find zone for domain %q: %w", domain, err)
}
// REF: https://docsv4.qingcloud.com/user_guide/development_docs/api/api_list/dns/record/#_createrecord
request := &qingcloudsdk.CreateRecordRequest{
ZoneName: lo.ToPtr(authZone),
DomainName: lo.ToPtr(info.EffectiveFQDN),
@ -141,7 +140,6 @@ func (d *DNSProvider) CleanUp(ctx context.Context, domain, token, keyAuth string
return fmt.Errorf("qingcloud: unknown record ID for '%s'", info.EffectiveFQDN)
}
// REF: https://docsv4.qingcloud.com/user_guide/development_docs/api/api_list/dns/record/#_deleterecord
if _, err := d.client.DeleteRecordWithContext(ctx, []*int64{recordID}); err != nil {
return fmt.Errorf("qingcloud: error when delete record: %w", err)
}

View File

@ -89,7 +89,7 @@ func (c *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*Uplo
Page: lo.ToPtr(listCertificatesPage),
PerPage: lo.ToPtr(listCertificatesPerPage),
}
listCertificatesResp, err := c.sdkClient.ListCertificates(listCertificatesReq)
listCertificatesResp, err := c.sdkClient.ListCertificatesWithContext(ctx, listCertificatesReq)
c.logger.Debug("sdk request 'ListCertificates'", slog.Any("request", listCertificatesReq), slog.Any("response", listCertificatesResp))
if err != nil {
return nil, fmt.Errorf("failed to execute sdk request 'ListCertificates': %w", err)

View File

@ -4,6 +4,7 @@ import (
"context"
"fmt"
"log/slog"
"strconv"
"time"
gcore "github.com/G-Core/gcorelabscdn-go/gcore/provider"
@ -58,29 +59,56 @@ func (c *Certmgr) SetLogger(logger *slog.Logger) {
}
func (c *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*UploadResult, error) {
// 新增证书
// REF: https://api.gcore.com/docs/cdn#tag/SSL-certificates/operation/add_ssl_certificates
createCertificateReq := &sslcerts.CreateRequest{
// Add SSL certificate
// REF: https://gcore.com/docs/api-reference/cdn/ssl-certificates/add-ssl-certificate
addSSLDataReq := &sslcerts.CreateRequest{
Name: fmt.Sprintf("certimate_%d", time.Now().UnixMilli()),
Cert: certPEM,
PrivateKey: privkeyPEM,
Automated: false,
ValidateRootCA: false,
}
createCertificateResp, err := c.sdkClient.Create(ctx, createCertificateReq)
c.logger.Debug("sdk request 'sslcerts.Create'", slog.Any("request", createCertificateReq), slog.Any("response", createCertificateResp))
addSSLDataResp, err := c.sdkClient.Create(ctx, addSSLDataReq)
c.logger.Debug("sdk request 'sslData.Add'", slog.Any("request", addSSLDataReq), slog.Any("response", addSSLDataResp))
if err != nil {
return nil, fmt.Errorf("failed to execute sdk request 'sslcerts.Create': %w", err)
return nil, fmt.Errorf("failed to execute sdk request 'sslData.Add': %w", err)
}
return &UploadResult{
CertId: fmt.Sprintf("%d", createCertificateResp.ID),
CertName: createCertificateResp.Name,
CertId: fmt.Sprintf("%d", addSSLDataResp.ID),
CertName: addSSLDataResp.Name,
}, nil
}
func (c *Certmgr) Replace(ctx context.Context, certIdOrName string, certPEM, privkeyPEM string) (*ReplaceResult, error) {
return nil, core.ErrUnsupported
sslId, err := strconv.ParseInt(certIdOrName, 10, 64)
if err != nil {
return nil, err
}
// Get SSL certificate details
// REF: https://gcore.com/docs/api-reference/cdn/ssl-certificates/get-ssl-certificate-details
getSSLDataDetailResp, err := c.sdkClient.Get(ctx, sslId)
c.logger.Debug("sdk request 'sslData.GetDetail'", slog.Any("params.sslId", sslId), slog.Any("response", getSSLDataDetailResp))
if err != nil {
return nil, fmt.Errorf("failed to execute sdk request 'sslData.GetDetail': %w", err)
}
// Change SSL certificate
// REF: https://gcore.com/docs/api-reference/cdn/ssl-certificates/change-ssl-certificate
changeSSLDataReq := &sslcerts.UpdateRequest{
Name: getSSLDataDetailResp.Name,
Cert: certPEM,
PrivateKey: privkeyPEM,
ValidateRootCA: false,
}
changeSSLDataResp, err := c.sdkClient.Update(ctx, sslId, changeSSLDataReq)
c.logger.Debug("sdk request 'sslData.Change'", slog.Any("request", changeSSLDataReq), slog.Any("response", changeSSLDataResp))
if err != nil {
return nil, fmt.Errorf("failed to execute sdk request 'sslData.Change': %w", err)
}
return &ReplaceResult{}, nil
}
func createSDKClient(apiToken string) (*sslcerts.Service, error) {

View File

@ -68,7 +68,7 @@ func (c *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*Uplo
}
// SSL 证书上传
// REF: https://apifox.com/apidoc/shared/a4595cc8-44c5-4678-a2a3-eed7738dab03/api-69943046
// REF: https://api.rainyun.com/#/paths/product-sslcenter/post
sslCenterCreateReq := &rainyunsdk.SslCenterCreateRequest{
Cert: certPEM,
Key: privkeyPEM,
@ -96,7 +96,7 @@ func (c *Certmgr) Replace(ctx context.Context, certIdOrName string, certPEM, pri
}
// SSL 证书替换操作
// REF: https://s.apifox.cn/a4595cc8-44c5-4678-a2a3-eed7738dab03/api-69943049
// REF: https://api.rainyun.com/#/paths/product-sslcenter-:id/put
sslCenterUpdateReq := &rainyunsdk.SslCenterUpdateRequest{
Cert: certPEM,
Key: privkeyPEM,
@ -118,8 +118,8 @@ func (c *Certmgr) tryGetResultIfCertExists(ctx context.Context, certPEM string)
}
// 获取 SSL 证书列表
// REF: https://apifox.com/apidoc/shared/a4595cc8-44c5-4678-a2a3-eed7738dab03/api-69943046
// REF: https://apifox.com/apidoc/shared/a4595cc8-44c5-4678-a2a3-eed7738dab03/api-69943048
// REF: https://api.rainyun.com/#/paths/product-sslcenter/get
// REF: https://api.rainyun.com/#/paths/product-sslcenter-:id/get
sslCenterListPage := 1
sslCenterListPerPage := 100
for {

View File

@ -56,7 +56,7 @@ func (d *Deployer) SetLogger(logger *slog.Logger) {
func (d *Deployer) Deploy(ctx context.Context, certPEM, privkeyPEM string) (*DeployResult, error) {
// 上传证书
// REF: https://api.cachefly.com/api/2.5/docs#tag/Certificates/paths/~1certificates/post
// REF: https://api.cachefly.com/api/v2/docs/api/#tag/Certificates/operation/post-certificates
createCertificateReq := &cacheflysdk.CreateCertificateRequest{
Certificate: lo.ToPtr(certPEM),
CertificateKey: lo.ToPtr(privkeyPEM),

View File

@ -97,7 +97,7 @@ func (d *Deployer) deployToCertificate(ctx context.Context, certPEM, privkeyPEM
}
// 修改证书
// REF: https://flexcdn.cloud/dev/api/service/SSLCertService?role=user#updateSSLCert
// REF: https://flexcdn.cn/developer/api/service/SSLCertService
updateSSLCertReq := &flexcdnsdk.UpdateSSLCertRequest{
SSLCertId: d.config.CertificateId,
IsOn: true,

View File

@ -10,6 +10,7 @@ import (
"github.com/G-Core/gcorelabscdn-go/gcore/provider"
"github.com/G-Core/gcorelabscdn-go/resources"
"github.com/G-Core/gcorelabscdn-go/sslcerts"
"github.com/samber/lo"
"github.com/certimate-go/certimate/pkg/core"
cmgrimpl "github.com/certimate-go/certimate/pkg/core/certmgr/providers/gcore-cdn"
@ -98,29 +99,15 @@ func (d *Deployer) Deploy(ctx context.Context, certPEM, privkeyPEM string) (*Dep
cloudCertId, _ = strconv.ParseInt(upres.CertId, 10, 64)
} else {
// 获取证书
// REF: https://api.gcore.com/docs/cdn#tag/SSL-certificates/paths/~1cdn~1sslData~1%7Bssl_id%7D/get
getCertificateDetailResp, err := d.sdkClients.SSLCerts.Get(ctx, d.config.CertificateId)
d.logger.Debug("sdk request 'sslcerts.Get'", slog.Int64("params.sslId", d.config.CertificateId), slog.Any("response", getCertificateDetailResp))
if err != nil {
return nil, fmt.Errorf("failed to execute sdk request 'sslcerts.Get': %w", err)
}
cloudCertId = d.config.CertificateId
// 更新证书
// REF: https://api.gcore.com/docs/cdn#tag/SSL-certificates/paths/~1cdn~1sslData~1%7Bssl_id%7D/get
changeCertificateReq := &sslcerts.UpdateRequest{
Name: getCertificateDetailResp.Name,
Cert: certPEM,
PrivateKey: privkeyPEM,
ValidateRootCA: false,
}
changeCertificateResp, err := d.sdkClients.SSLCerts.Update(ctx, getCertificateDetailResp.ID, changeCertificateReq)
d.logger.Debug("sdk request 'sslcerts.Update'", slog.Int64("params.sslId", getCertificateDetailResp.ID), slog.Any("request", changeCertificateReq), slog.Any("response", changeCertificateResp))
rplres, err := d.sdkCertmgr.Replace(ctx, strconv.FormatInt(cloudCertId, 10), certPEM, privkeyPEM)
if err != nil {
return nil, fmt.Errorf("failed to execute sdk request 'sslcerts.Update': %w", err)
return nil, fmt.Errorf("failed to replace certificate file: %w", err)
} else {
d.logger.Info("ssl certificate replaced", slog.Any("result", rplres))
}
cloudCertId = changeCertificateResp.ID
}
// 获取 CDN 资源详情
@ -142,14 +129,10 @@ func (d *Deployer) Deploy(ctx context.Context, certPEM, privkeyPEM string) (*Dep
SSlEnabled: true,
SSLData: int(cloudCertId),
ProxySSLEnabled: getResourceResp.ProxySSLEnabled,
ProxySSLCA: lo.Ternary(getResourceResp.ProxySSLCA != 0, &getResourceResp.ProxySSLCA, nil),
ProxySSLData: lo.Ternary(getResourceResp.ProxySSLData != 0, &getResourceResp.ProxySSLData, nil),
Options: &gcore.Options{},
}
if getResourceResp.ProxySSLCA != 0 {
updateResourceReq.ProxySSLCA = &getResourceResp.ProxySSLCA
}
if getResourceResp.ProxySSLData != 0 {
updateResourceReq.ProxySSLData = &getResourceResp.ProxySSLData
}
updateResourceResp, err := d.sdkClients.Resources.Update(ctx, d.config.ResourceId, updateResourceReq)
d.logger.Debug("sdk request 'resources.Update'", slog.Int64("params.resourceId", d.config.ResourceId), slog.Any("request", updateResourceReq), slog.Any("response", updateResourceResp))
if err != nil {

View File

@ -89,7 +89,7 @@ func (d *Deployer) Deploy(ctx context.Context, certPEM, privkeyPEM string) (*Dep
}
// RCDN SSL 绑定域名
// REF: https://apifox.com/apidoc/shared/a4595cc8-44c5-4678-a2a3-eed7738dab03/api-184214120
// REF: https://api.rainyun.com/#/paths/product-rcdn-instance-:id-ssl_bind/post
certId, _ := strconv.ParseInt(upres.CertId, 10, 64)
rcdnInstanceSslBindReq := &rainyunsdk.RcdnInstanceSslBindRequest{
CertId: certId,

View File

@ -1,3 +1,5 @@
// A simple SDK client for 1Panel v1.
// API documentation: https://1panel.cn/docs/v1/dev_manual/api_manual/
package onepanel
import (

View File

@ -1,3 +1,5 @@
// A simple SDK client for 1Panel v2.
// API documentation: https://1panel.cn/docs/v2/dev_manual/api_manual/
package v2
import (

View File

@ -1,4 +1,6 @@
package oss
// A simple SDK client for AliababaCloud OSS.
// API documentation: https://www.alibabacloud.com/help/en/oss/developer-reference/list-of-operations-by-function
package oss
import (
"crypto/md5"

View File

@ -1,3 +1,5 @@
// A simple SDK client for APISIX.
// API documentation: https://apisix.apache.org/zh/docs/apisix/admin-api/
package apisix
import (

View File

@ -1,3 +1,5 @@
// An extension SDK client for BaiduCloud SSL service.
// Based on github.com/baidubce/bce-sdk-go.
package cert
import (

View File

@ -1,3 +1,5 @@
// A simple SDK client for BaishanCloud.
// API documentation: https://portal.baishancloud.com/track/document/api/1/1249
package baishan
import (

View File

@ -1,3 +1,5 @@
// A simple SDK client for aaPanel.
// API documentation: https://www.aapanel.com/docs/api/api-list.html
package btpanel
import (
@ -162,5 +164,6 @@ func generateSignature(timestamp string, apiKey string) string {
signMd5 := md5.Sum([]byte(timestamp + keyMd5Hex))
signMd5Hex := strings.ToLower(hex.EncodeToString(signMd5[:]))
return signMd5Hex
}

View File

@ -1,3 +1,5 @@
// A simple SDK client for aaPanel Windows Go version.
// API documentation: https://www.aapanel.com/docs/api/api-list.html
package btpanelgo
import (
@ -213,5 +215,6 @@ func generateSignature(timestamp string, apiKey string) string {
signMd5 := md5.Sum([]byte(timestamp + keyMd5Hex))
signMd5Hex := strings.ToLower(hex.EncodeToString(signMd5[:]))
return signMd5Hex
}

View File

@ -1,3 +1,5 @@
// A simple SDK client for aaWAF.
// API documentation: https://github.com/aaPanel/aaWAF/blob/main/API.md
package btwaf
import (

View File

@ -1,3 +1,5 @@
// A simple SDK client for Bunny.
// API documentation: https://docs.bunny.net/api-reference
package bunny
import (

View File

@ -1,3 +1,5 @@
// A simple SDK client for CacheFly.
// API documentation: https://api.cachefly.com/api/v2/docs/api/
package cachefly
import (

View File

@ -1,3 +1,5 @@
// A simple SDK client for Cdnfly.
// API documentation: http://doc.cdnfly.com/shiyongjieshao.html
package cdnfly
import (

View File

@ -1,3 +1,5 @@
// A simple SDK client for Cloudflare.
// API documentation: https://developers.cloudflare.com/api/
package cloudflare
import (

View File

@ -1,3 +1,5 @@
// A simple SDK client for ConoHa VPS v3.
// API documentation: https://doc.conoha.jp/reference/api-vps3/
package v3
import (

View File

@ -1,3 +1,5 @@
// A simple SDK client for cPanel.
// API documentation: https://api.docs.cpanel.net/
package cpanel
import (

View File

@ -1,3 +1,5 @@
// A simple SDK client for StateCloud AccessOne.
// API documentation: https://eop.ctyun.cn/ebp/ctapiDocument/search?sid=113&vid=167
package ao
import (

View File

@ -1,3 +1,5 @@
// A simple SDK client for StateCloud CDN.
// API documentation: https://eop.ctyun.cn/ebp/ctapiDocument/search?sid=108&vid=154
package cdn
import (

View File

@ -1,3 +1,5 @@
// A simple SDK client for StateCloud CMS.
// API documentation: https://eop.ctyun.cn/ebp/ctapiDocument/search?sid=152&vid=283
package cms
import (

View File

@ -1,3 +1,5 @@
// A simple SDK client for StateCloud DNS.
// API documentation: https://eop.ctyun.cn/ebp/ctapiDocument/search?sid=122&vid=259
package dns
import (

View File

@ -1,3 +1,5 @@
// A simple SDK client for StateCloud ELB.
// API documentation: https://eop.ctyun.cn/ebp/ctapiDocument/search?sid=24&vid=82
package elb
import (

View File

@ -1,3 +1,5 @@
// A simple SDK client for StateCloud FaaS.
// API documentation: https://eop.ctyun.cn/ebp/ctapiDocument/search?sid=53&vid=40
package faas
import (

View File

@ -1,3 +1,5 @@
// A simple SDK client for StateCloud ICDN.
// API documentation: https://eop.ctyun.cn/ebp/ctapiDocument/search?sid=112&vid=166
package icdn
import (

View File

@ -1,3 +1,5 @@
// A simple SDK client for StateCloud LVDN.
// API documentation: https://eop.ctyun.cn/ebp/ctapiDocument/search?sid=125&vid=261
package lvdn
import (

View File

@ -1,3 +1,4 @@
// A mock HTTP client for uniCloud.
package unicloud
import (

View File

@ -1,3 +1,5 @@
// A simple SDK client for DigitalOcean.
// API documentation: https://docs.digitalocean.com/reference/api/
package digitalocean
import (

View File

@ -1,3 +1,5 @@
// A simple SDK client for DogeCloud.
// API documentation: https://docs.dogecloud.com/
package dogecloud
import (

View File

@ -1,3 +1,5 @@
// A simple SDK client for Dokploy.
// API documentation: https://docs.dokploy.com/docs/api
package dokploy
import (

View File

@ -1,3 +1,5 @@
// A simple SDK client for Dynv6.
// API documentation: https://dynv6.com/docs/apis
package dynv6
import (

View File

@ -1,3 +1,5 @@
// A simple SDK client for FlexCDN.
// API documentation: https://flexcdn.cn/docs/api/list
package flexcdn
import (

View File

@ -1,3 +1,5 @@
// A simple SDK client for Fly.io.
// API documentation: https://fly.io/docs/machines/api/
package flyio
import (

View File

@ -1,3 +1,5 @@
// A simple SDK client for GoEdge.
// API documentation: https://goedge.cloud/docs/API/List.md
package goedge
import (

View File

@ -1,4 +1,6 @@
package obs
// A simple SDK client for HuaweiCloud OBS.
// API documentation: https://support.huaweicloud.com/api-obs/obs_04_0005.html
package obs
import (
"crypto/md5"

View File

@ -1,3 +1,5 @@
// A simple SDK client for Kong.
// API documentation: https://developer.konghq.com/api/
package kong
import (

View File

@ -1,3 +1,4 @@
// A simple SDK client for LeCDN v3 as user.
package client
import (

View File

@ -1,3 +1,4 @@
// A simple SDK client for LeCDN v3 as admin.
package master
import (

View File

@ -1,3 +1,5 @@
// A simple SDK client for Linode.
// API documentation: https://techdocs.akamai.com/linode-api/reference/api
package linode
import (

View File

@ -1,3 +1,4 @@
// A simple SDK client for MohuaTech.
package mohua
import (

View File

@ -1,3 +1,5 @@
// A simple SDK client for Netlify.
// API documentation: https://open-api.netlify.com/
package netlify
import (

View File

@ -1,3 +1,5 @@
// A simple SDK client for NginxProxyManager.
// API documentation: https://github.com/NginxProxyManager/nginx-proxy-manager/discussions/3265
package nginxproxymanager
import (

View File

@ -1,3 +1,5 @@
// A simple SDK client for Proxmox VE.
// API documentation: https://pve.proxmox.com/pve-docs/api-viewer/index.html
package proxmoxve
import (

View File

@ -1,3 +1,5 @@
// A simple SDK client for QingCloud DNS.
// API documentation: https://docsv4.qingcloud.com/user_guide/development_docs/api/api_list/dns/api_intro/
package dns
import (

View File

@ -1,4 +1,6 @@
package lb
// An extension SDK client for QingCloud LB service.
// Based on github.com/yunify/qingcloud-sdk-go.
package lb
import (
"fmt"

3
pkg/sdk3rd/qiniu/doc.go Normal file
View File

@ -0,0 +1,3 @@
// An extension SDK client for Qiniu.
// Based on github.com/qiniu/go-sdk.
package qiniu

View File

@ -1,3 +1,5 @@
// A simple SDK client for Rainyun.
// API documentation: https://api.rainyun.com/
package rainyun
import (

View File

@ -1,3 +1,5 @@
// A simple SDK client for AcePanel.
// API documentation: https://acepanel.net/en/advanced/api
package ratpanel
import (

View File

@ -20,6 +20,7 @@ type signer struct {
func (s *signer) Sign(req *http.Request) error {
// API 签名机制:
// https://ratpanel.github.io/advanced/api#authentication-mechanism
// https://acepanel.net/en/advanced/api
payloadStr := ""
if req.Body != nil {

View File

@ -1,3 +1,5 @@
// A simple SDK client for SafeLine.
// API documentation: https://help.waf-ce.chaitin.cn/node/01973fc6-e25e-7eda-8ea8-dae97bdd4213
package safeline
import (

View File

@ -1,3 +1,5 @@
// A simple SDK client for SamWAF.
// API documentation: https://doc.samwaf.com/api/
package samwaf
import (

View File

@ -1,3 +1,4 @@
// A mock HTTP client for Synology DSM.
package synologydsm
import (

View File

@ -1,3 +1,5 @@
// An extension SDK client for UCloud CDN service.
// Based on github.com/ucloud/ucloud-sdk-go.
package ucdn
import (

View File

@ -1,3 +1,5 @@
// An extension SDK client for UCloud WAF service.
// Based on github.com/ucloud/ucloud-sdk-go.
package uewaf
import (

View File

@ -1,3 +1,5 @@
// An extension SDK client for UCloud OS service.
// Based on github.com/ucloud/ucloud-sdk-go.
package ufile
import (

View File

@ -1,3 +1,5 @@
// An extension SDK client for UCloud LB service.
// Based on github.com/ucloud/ucloud-sdk-go.
package ulb
import (

View File

@ -1,3 +1,5 @@
// An extension SDK client for UCloud PathX service.
// Based on github.com/ucloud/ucloud-sdk-go.
package upathx
import (

View File

@ -1,3 +1,5 @@
// An extension SDK client for UCloud SSL service.
// Based on github.com/ucloud/ucloud-sdk-go.
package ussl
import (

View File

@ -1,3 +1,4 @@
// A mock HTTP client for Upyun Console.
package console
import (

View File

@ -1,3 +1,5 @@
// A simple SDK client for Vercel.
// API documentation: https://vercel.com/docs/rest-api
package vercel
import (

View File

@ -1,4 +1,6 @@
package tos
// A simple SDK client for VolcEngine TOS.
// API documentation: https://www.volcengine.com/docs/6349/74837
package tos
import (
"crypto/md5"

View File

@ -1,3 +1,5 @@
// A simple SDK client for WangsuCloud CDN.
// API documentation: https://www.wangsu.com/document/api-doc/product
package cdn
import (

View File

@ -1,3 +1,5 @@
// A simple SDK client for WangsuCloud CDN.
// API documentation: https://www.wangsu.com/document/api-doc/product
package cdnpro
import (

View File

@ -1,3 +1,5 @@
// A simple SDK client for WangsuCloud CDN.
// API documentation: https://www.wangsu.com/document/api-doc/product
package certificate
import (

View File

@ -1,4 +1,6 @@
package cdn
// An extension SDK client for ZenlayerCloud CDN service.
// Based on github.com/zenlayer/zenlayercloud-sdk-go.
package cdn
import (
"github.com/zenlayer/zenlayercloud-sdk-go/zenlayercloud/common"

View File

@ -1,4 +1,6 @@
package zga
// An extension SDK client for ZenlayerCloud CDN service.
// Based on github.com/zenlayer/zenlayercloud-sdk-go.
package zga
import (
"github.com/zenlayer/zenlayercloud-sdk-go/zenlayercloud/common"