gorest

package module
v0.2.0 Latest Latest
Warning

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

Go to latest
Published: Oct 5, 2020 License: MIT Imports: 12 Imported by: 0

README

gorest

Go Report Card Build Status

install

go get github.com/izumix03/gorest

usage

_, err := gorest.Get(`http://example.com`).
		Path(`/ticket`).
		URLParam(`name`, `foo`).
		Execute()
_, err := gorest.Post(`http://example.com`).
		Path(`/ticket`).
		JSONStruct(Foo{name: `bar`}).
		Execute()

HandleBody validates http status code(default over 400 is error),
auto close response body.

var response Ticket
err := gorest.Put(`http://example.com`).
	Path(`/ticket/%s`, ticket.ID).
	Header("X-Api-Key", token.AccessToken).
	JSONStruct(Foo{name: `bazz`}).
	HandleBody(func(body []uint8) error {
	    if err := json.Unmarshal(body, &response); err != nil {
                return err
            }
            return nil
        })

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CloseBody added in v0.1.2

func CloseBody(body io.ReadCloser)

Types

type Executor

type Executor interface {
	Execute() (resp *http.Response, err error)
	HandleBody(f func(body []uint8) error) error
	// HandleResponse require response handler,
	// if create a new response, MUST close old res.Body
	HandleResponse(func(*http.Request, *http.Response) (*http.Response, error)) ResponseHandler
}

Executor provides methods for executing api

type InvalidStatusCodeError added in v0.1.2

type InvalidStatusCodeError struct {
	StatusCode   int
	ResponseBody []byte
}

func (*InvalidStatusCodeError) Error added in v0.1.2

func (i *InvalidStatusCodeError) Error() string

type JSONContent added in v0.1.4

type JSONContent interface {
	JSON(json []byte) JSONContent
	JSONString(json string) JSONContent
	// JSONStruct requires struct, not pointer.
	// if receive invalid, error occurs when executing.
	JSONStruct(data interface{}) JSONContent
	Executor
}

type Multipart added in v0.1.4

type Multipart interface {
	MultipartData(key string, value io.Reader, forceMultipart bool) Multipart
	MultipartAsFormFile(key string, fileName string, reader io.Reader, forceMultipart bool) Multipart
	Executor
}

Multipart provides methods for set multipart data(including file)

type ResponseHandler added in v0.1.2

type ResponseHandler interface {
	HandleBody(f func(body []uint8) error) error
}

ResponseHandler provides wrapper methods with handling error(ex. http status code)

type TerminalOperator

type TerminalOperator interface {
	Path(pathFmt string, args ...interface{}) TerminalOperator
	URLParam(key string, value string) TerminalOperator

	BasicAuth(username string, password string) TerminalOperator

	Header(key, value string) TerminalOperator

	// client
	Client(client *http.Client) TerminalOperator

	JSON(json []byte) JSONContent
	JSONString(json string) JSONContent
	// JSONStruct requires struct, not pointer.
	// if receive invalid, error occurs when executing.
	JSONStruct(data interface{}) JSONContent

	// URLEncoded add value if same key
	URLEncoded(key string, value string) URLEncoded
	// URLEncodedList replace values if same key
	URLEncodedList(key string, values []string) URLEncoded
	// URLEncodedEscapedString receives raw data, but never check
	URLEncodedEscapedString(data string) URLEncoded
	URLEncodedString(data string) URLEncoded

	MultipartData(key string, value io.Reader, forceMultipart bool) Multipart
	MultipartAsFormFile(key string, fileName string, reader io.Reader, forceMultipart bool) Multipart

	// HandleResponse require response handler,
	// if create a new response, MUST close old res.Body
	HandleResponse(func(*http.Request, *http.Response) (*http.Response, error)) ResponseHandler

	Executor
}

TerminalOperator executes web api and process result

func Get

func Get(baseURL string) TerminalOperator

Get requires base url for reuse this instance. BaseURL includes protocol like `http://` or `https://` ex. https://api.github.com/repos/

func Post

func Post(baseURL string) TerminalOperator

Post requires base url for reuse this instance. BaseURL includes protocol like `http://` or `https://` ex. https://api.github.com/repos/

func Put added in v0.1.2

func Put(baseURL string) TerminalOperator

type URLEncoded

type URLEncoded interface {
	// URLEncoded add value if same key
	URLEncoded(key string, value string) URLEncoded
	// URLEncodedList replace values if same key
	URLEncodedList(key string, values []string) URLEncoded
	// URLEncodedEscapedString receives raw data, but never check
	URLEncodedEscapedString(data string) URLEncoded
	URLEncodedString(data string) URLEncoded
	Executor
}

URLEncoded provides methods for sets url encoded body

Jump to

Keyboard shortcuts

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