problem

package module
v1.1.0 Latest Latest
Warning

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

Go to latest
Published: Aug 7, 2019 License: MIT Imports: 2 Imported by: 0

README

problem

GoDoc

A golang library that implements application/problem+json

Features

Usage

problem.New(problem.Title("Not Found"), problem.Status(404)).JSONString()

Will produce this:

{
  "status": 404,
  "title": "Not Found"
}

You can also append some more options:

p := problem.New(problem.Title("Not Found"), problem.Status(404))
p.Append(problem.Detail("some more details"))

// create json as []byte
jsonBytes := p.JSON()

Custom key/values are also supported:

problem.New(problem.Title("Not Found"), problem.Custom("key", "value"))

To write the Problem directly to a http.ResponseWriter:

http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
    problem.New(problem.Type("https://example.com/404"), problem.Status(404)).WriteTo(w)
  })

If you are using gin you can simply reply the problem to the client:

func(c *gin.Context) {
  problem.New(problem.Title("houston! we have a problem"), problem.Status(http.StatusNotFound)).WriteTo(c.Writer)
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Option

type Option interface {
	// contains filtered or unexported methods
}

An Option configures a Problem using the functional options paradigm popularized by Rob Pike.

func Custom

func Custom(key string, value interface{}) Option

Custom sets a custom key value

func Detail

func Detail(detail string) Option

Detail A human readable explanation specific to this occurrence of the problem.

func Instance

func Instance(uri string) Option

Instance an absolute URI that identifies the specific occurrence of the problem.

func Status

func Status(status int) Option

Status sets the HTTP status code generated by the origin server for this occurrence of the problem.

func Title

func Title(title string) Option

Title sets a title that appropriately describes it (think short) Written in english and readable for engineers (usually not suited for non technical stakeholders and not localized); example: Service Unavailable

func Type

func Type(uri string) Option

Type sets the type URI (typically, with the "http" or "https" scheme) that identifies the problem type. When dereferenced, it SHOULD provide human-readable documentation for the problem type

type Problem

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

func New

func New(opts ...Option) *Problem

New generates a new Problem

func (*Problem) Append

func (p *Problem) Append(opts ...Option) *Problem

Append an Option to a existing Problem

func (Problem) JSON

func (p Problem) JSON() []byte

JSON returns the Problem as json bytes

func (Problem) JSONString

func (p Problem) JSONString() string

JSONString returns the Problem as json string

func (Problem) WriteTo added in v1.1.0

func (p Problem) WriteTo(w http.ResponseWriter) (int, error)

WriteTo writes the Problem to a http Response Writer

Jump to

Keyboard shortcuts

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