package http

import "github.com/IBM/fp-go/http"

Index

Constants

const (
	HeaderContentType = "Content-Type"
)

Variables

var (
	Response = P.Head[*H.Response, []byte]
	Body     = P.Tail[*H.Response, []byte]
)
var (

	// ValidateResponse validates an HTTP response and returns an [E.Either] if the response is not a success
	ValidateResponse = E.FromPredicate(isValidStatus, StatusCodeError)

	// ValidateJSONResponse checks if an HTTP response is a valid JSON response
	ValidateJSONResponse = F.Flow2(
		E.Of[error, *H.Response],
		E.ChainFirst(F.Flow5(
			GetHeader,
			R.Lookup[H.Header](HeaderContentType),
			O.Chain(A.First[string]),
			E.FromOption[string](errors.OnNone("unable to access the [%s] header", HeaderContentType)),
			E.ChainFirst(validateJSONContentTypeString),
		)))
	// ValidateJsonResponse checks if an HTTP response is a valid JSON response
	//
	// Deprecated: use [ValidateJSONResponse] instead
	ValidateJsonResponse = ValidateJSONResponse
)

Functions

func GetBody

func GetBody(resp *H.Response) io.ReadCloser

func GetHeader

func GetHeader(resp *H.Response) H.Header

func ParseMediaType

func ParseMediaType(mediaType string) E.Either[error, ParsedMediaType]

ParseMediaType parses a media type into a tuple

func StatusCodeError

func StatusCodeError(resp *H.Response) error

StatusCodeError creates an instance of HttpError filled with information from the response

Types

type FullResponse

type FullResponse = P.Pair[*H.Response, []byte]

FullResponse represents a full http response, including headers and body

type HttpError

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

func (*HttpError) Body

func (r *HttpError) Body() []byte

func (*HttpError) Error

func (r *HttpError) Error() string

Error fulfills the error interface

func (*HttpError) Headers

func (r *HttpError) Headers() H.Header

func (*HttpError) StatusCode

func (r *HttpError) StatusCode() int

func (*HttpError) String

func (r *HttpError) String() string

func (*HttpError) URL

func (r *HttpError) URL() *url.URL

type ParsedMediaType

type ParsedMediaType = P.Pair[string, map[string]string]

Source Files

types.go utils.go

Directories

PathSynopsis
http/builder
http/content
http/form
http/headers
Version
v1.0.151 (latest)
Published
Nov 23, 2024
Platform
linux/amd64
Imports
13 packages
Last checked
4 months ago

Tools for package owners.