api

package
v1.0.0 Latest Latest
Warning

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

Go to latest
Published: Aug 27, 2026 License: MIT Imports: 17 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GetRequestID

func GetRequestID(ctx context.Context) string

func WithRequestID

func WithRequestID(ctx context.Context, id string) context.Context

Types

type CircuitBreaker

type CircuitBreaker struct {
	// contains filtered or unexported fields
}

CircuitBreaker پیاده‌سازی بهینه با Single Probe در Half-Open

func NewCircuitBreaker

func NewCircuitBreaker(threshold int, reset time.Duration) *CircuitBreaker

func (*CircuitBreaker) Allow

func (c *CircuitBreaker) Allow() bool

func (*CircuitBreaker) RecordFailure

func (c *CircuitBreaker) RecordFailure()

func (*CircuitBreaker) RecordSuccess

func (c *CircuitBreaker) RecordSuccess()

func (*CircuitBreaker) State

func (c *CircuitBreaker) State() int

type Client

type Client struct {
	// contains filtered or unexported fields
}

func NewClient

func NewClient(baseURL, token string, log *logger.Logger) *Client

func (*Client) Breaker

func (c *Client) Breaker() *CircuitBreaker

func (*Client) Close

func (c *Client) Close() error

func (*Client) DownloadFile

func (c *Client) DownloadFile(ctx context.Context, filePath string) (io.ReadCloser, error)

func (*Client) Request

func (c *Client) Request(ctx context.Context, method string) (*Response, error)

func (*Client) RequestWithForm

func (c *Client) RequestWithForm(ctx context.Context, method string, form map[string]string, files map[string]string) (*Response, error)

func (*Client) RequestWithMultipart

func (c *Client) RequestWithMultipart(ctx context.Context, method string, fields map[string]string, files map[string]string) (*Response, error)

RequestWithMultipart بهینه‌شده با io.Pipe و Streaming Decode

func (*Client) RequestWithParams

func (c *Client) RequestWithParams(ctx context.Context, method string, params interface{}) (*Response, error)

RequestWithParams بهینه‌شده با Streaming Decode

func (*Client) SetHTTPClient

func (c *Client) SetHTTPClient(hc *http.Client)

func (*Client) SetTimeout

func (c *Client) SetTimeout(d time.Duration)

func (*Client) Stats

func (c *Client) Stats() *Stats

func (*Client) StatsSnapshot

func (c *Client) StatsSnapshot() StatsSnapshot

func (*Client) UserAgent

func (c *Client) UserAgent() string

type Response

type Response struct {
	Ok          bool            `json:"ok"`
	Result      json.RawMessage `json:"result,omitempty"`
	ErrorCode   int             `json:"error_code,omitempty"`
	Description string          `json:"description,omitempty"`
	Parameters  interface{}     `json:"parameters,omitempty"`
	HTTPStatus  int             `json:"-"`
}

Response پاسخ استاندارد API کدمیت

func (*Response) AsBool

func (r *Response) AsBool() (bool, error)

DecodeInto.ToBoolean — متد کمکی برای پاسخ‌های true/false

func (*Response) Decode

func (r *Response) Decode(v interface{}) error

Decode تبدیل Result به ساختار دلخواه

func (*Response) ParametersAsRetryAfter

func (r *Response) ParametersAsRetryAfter() int

ParametersAsRetryAfter گرفتن retry_after از parameters

type Stats

type Stats struct {
	Requests     int64
	SuccessCount int64
	ErrorCount   int64
	BytesIn      int64
	BytesOut     int64
	// contains filtered or unexported fields
}

func (*Stats) AvgLatency

func (s *Stats) AvgLatency() time.Duration

func (*Stats) Record

func (s *Stats) Record(latency time.Duration, success bool, bytesIn, bytesOut int64)

func (*Stats) Snapshot

func (s *Stats) Snapshot() StatsSnapshot

type StatsSnapshot

type StatsSnapshot struct {
	Requests     int64
	SuccessCount int64
	ErrorCount   int64
	BytesIn      int64
	BytesOut     int64
	AvgLatency   time.Duration
}

Jump to

Keyboard shortcuts

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