api

package
v0.1.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 31, 2024 License: Apache-2.0 Imports: 15 Imported by: 1

Documentation

Index

Constants

View Source
const (
	HostJPushAdminV1  = "https://admin.jpush.cn"
	HostJPushDeviceV3 = "https://device.jpush.cn"
	HostJPushPushV3   = "https://api.jpush.cn"
	HostJPushReportV3 = "https://report.jpush.cn"
)

Variables

View Source
var (
	ErrNilJPushAdminAPIv1       = newNilAPIError("jpush", "admin", 1)
	ErrNilJPushDeviceAPIv3      = newNilAPIError("jpush", "device", 3)
	ErrNilJPushPushAPIv3        = newNilAPIError("jpush", "push", 3)
	ErrNilJPushGroupPushAPIv3   = newNilAPIError("jpush", "group push", 3)
	ErrNilJPushScheduleAPIv3    = newNilAPIError("jpush", "schedule", 3)
	ErrNilJPushFileAPIv3        = newNilAPIError("jpush", "file", 3)
	ErrNilJPushImageAPIv3       = newNilAPIError("jpush", "image", 3)
	ErrNilJPushReportAPIv3      = newNilAPIError("jpush", "report", 3)
	ErrNilJPushGroupReportAPIv3 = newNilAPIError("jpush", "group report", 3)
)

DefaultLogger 是在 API 没有提供自定义 Logger 时使用的默认 Logger。

Functions

This section is empty.

Types

type Client

type Client interface {
	Do(req *http.Request) (resp *http.Response, err error)
}

Client 定义了一个用于发送 HTTP 请求的客户端接口。它被设计为与标准库的 http.Client 相兼容。

var DefaultClient Client = &http.Client{Timeout: 30 * time.Second}

DefaultClient 是在 API 没有提供自定义 Client 时使用的默认 Client。

type CodeError

type CodeError struct {
	Code    int    `json:"code"`              // 错误返回码,0 表示成功,非 0 表示失败。
	Message string `json:"message,omitempty"` // 错误描述说明。
}

极光 REST API 的通用错误响应封装。

func (*CodeError) Error

func (e *CodeError) Error() string

func (*CodeError) IsSuccess

func (e *CodeError) IsSuccess() bool

func (*CodeError) String

func (e *CodeError) String() string

type FileValidator

type FileValidator struct {
	MaxSize      int64    // 最大文件大小(字节)
	AllowedMimes []string // 允许的文件 MIME 类型(如 "image/png"、"text/plain" 等)
	AllowedExts  []string // 允许的文件扩展名(如 ".png"、".txt" 等)
}

文件校验器,用于校验文件的大小、MIME 类型和扩展名等。

func (*FileValidator) Validate

func (fv *FileValidator) Validate(fileReader io.Reader, fileName string) error

校验文件合法性。

type FormField

type FormField struct {
	Name  string // 字段名称
	Value string // 字段值
}

普通表单字段。

type FormFile

type FormFile struct {
	FieldName string      // 字段名称
	FileName  string      // 文件名(如果 FileData 能获取到,该字段可选)
	FileData  interface{} // 文件路径或文件数据流(如果是文件数据流,请在上传完毕后自行关闭)
}

文件表单字段。

type HttpClient

type HttpClient interface {
	// 探测给定 URL 对应服务器支持的 HTTP 协议版本,如 "HTTP/1.0"、"HTTP/1.1"、"HTTP/2.0" 等。
	DetectProto(url string) string

	// 使用 JSON 正文 `Content-Type: application/json;charset=UTF-8` 发送 HTTP 请求。
	Request(ctx context.Context, req *Request) (resp *Response, err error)

	// 使用多部分表单数据正文 `Content-Type: multipart/form-data; boundary=...` 发送 HTTP 请求。
	FormRequest(ctx context.Context, req *Request) (resp *Response, err error)
}

HttpClient 定义了一个发送带有 JSON 或多部分表单数据正文负载的 HTTP 请求的接口。

func NewHttpClient

func NewHttpClient(client Client, logger jiguang.Logger, level HttpLogLevel) HttpClient

type HttpLogLevel

type HttpLogLevel uint8

HTTP 日志记录级别:用于指定记录 API 的 HTTP 请求和响应的日志信息的详细程度。

const (
	HttpLogLevelNone    HttpLogLevel = iota // 不记录任何日志。
	HttpLogLevelBasic                       // 仅记录请求方法、URL、响应状态和耗时。
	HttpLogLevelHeaders                     // 记录请求和响应的基本信息以及头部。
	HttpLogLevelFull                        // 记录请求和响应的头部、正文和元数据。
)

func (HttpLogLevel) IsValid

func (level HttpLogLevel) IsValid() bool

判断 level 是否是有效的 HTTP 日志记录级别。

func (HttpLogLevel) String

func (level HttpLogLevel) String() string

type MultipartFormDataBody

type MultipartFormDataBody struct {
	Fields        []FormField    // 普通表单字段列表
	Files         []FormFile     // 文件表单字段列表
	FileValidator *FileValidator // 可选的文件校验器
}

多部分表单数据的正文负载。

func (MultipartFormDataBody) Prepare

func (mfd MultipartFormDataBody) Prepare(writer *multipart.Writer) error

填充多部分表单数据的正文,包括普通字段和文件。

type Rate

type Rate struct {
	Limit     int   `json:"limit"`     // 当前在一个时间窗口内可调用次数。
	Remaining int   `json:"remaining"` // 当前的时间窗口剩余的可用次数。
	Reset     int64 `json:"reset"`     // 当前距离时间窗口重置剩余的秒数。
}

API 频率控制信息。

func ParseRate

func ParseRate(resp *http.Response) Rate

解析 HTTP 响应头以得到 API 频率控制信息。

type Request

type Request struct {
	Method string      // 请求方法
	Proto  string      // 协议版本,如 "HTTP/1.0"、"HTTP/1.1"、"HTTP/2.0" 等。
	URL    string      // 请求完整 URL
	Auth   string      // 请求授权信息
	Body   interface{} // 请求正文负载
}

极光 REST API 的 HTTP 请求原始请求封装。

type Response

type Response struct {
	StatusCode int         `json:"-"` // 状态码
	Header     http.Header `json:"-"` // 响应头部信息
	RawBody    []byte      `json:"-"` // 原始响应正文
	Rate       Rate        `json:"-"` // API 频率控制信息
}

极光 REST API 的 HTTP 请求原始响应封装。

func (*Response) IsNoContent

func (resp *Response) IsNoContent() bool

判断响应是否无正文内容。

func (*Response) RateLimit

func (resp *Response) RateLimit() int

当前在一个时间窗口内可调用次数。如果未设置或无法解析,则为 0。

func (*Response) RateRemaining

func (resp *Response) RateRemaining() int

当前的时间窗口剩余的可用次数。如果未设置或无法解析,则为 0。

func (*Response) RateReset

func (resp *Response) RateReset() int64

当前距离时间窗口重置剩余的秒数。如果未设置或无法解析,则为 0。

func (*Response) String

func (resp *Response) String() string

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL