Help us shape the future of Go! Take the 2026 Go Developer Survey

httpjson

package
v0.4.0 Latest Latest
Warning

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

Go to latest
Published: Sep 16, 2026 License: MIT Imports: 11 Imported by: 0

Documentation

Overview

Package httpjson — общее у плеч поверх JSON по HTTP: запрос, ограниченное тело, отказ по статусу. Wire-структуры остаются в адаптерах: конверты поставщиков не совпадают.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Decode

func Decode(r io.Reader, limit int64, v any) error

Decode разбирает ровно один JSON-документ: хвост после объекта — отказ (Unmarshal, не Decoder), иначе первый фрагмент потока прошёл бы за ответ.

func NewRequest

func NewRequest(ctx context.Context, url string, body any, header http.Header) (*http.Request, error)

NewRequest — POST с JSON-телом; header дописывается поверх Content-Type и Accept.

func ReadAll

func ReadAll(r io.Reader, limit int64) ([]byte, error)

ReadAll читает не больше limit байт; тело длиннее — TooLargeError. Ошибка чтения возвращается как есть: просрочка обязана остаться просрочкой.

func RetryAfter

func RetryAfter(h http.Header) time.Duration

RetryAfter разбирает заголовок в обеих формах: секунды числом и HTTP-дата. Отсутствующий, непонятный и отрицательный — ноль; чрезмерный насыщается.

Types

type Status

type Status struct {
	Code       int
	Message    string
	RetryAfter time.Duration
}

Status — не-2xx поставщика: код, текст конверта и просьба подождать.

func ReadStatus

func ReadStatus(resp *http.Response, limit int64, envelope func(raw []byte) string) Status

ReadStatus собирает отказ по не-2xx. envelope достаёт текст из конверта поставщика; пустой результат — тело обрезанным текстом как есть.

type TooLargeError

type TooLargeError struct {
	Limit int64
}

TooLargeError — тело длиннее предела: отказ, а не молча обрезанный ответ.

func (*TooLargeError) Error

func (e *TooLargeError) Error() string

Jump to

Keyboard shortcuts

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