Categorygithub.com/writeas/impart
modulepackage
1.1.1
Repository: https://github.com/writeas/impart.git
Documentation: pkg.go.dev

# README

impart

MIT license #writeas on freenode Discuss on our forum

impart is a library for the final layer between the API and the consumer. It's used in the latest Write.as and HTMLhouse APIs.

We're still in the early stages of development, so there may be breaking changes.

Example use

package main

import (
	"fmt"
	"github.com/writeas/impart"
	"net/http"
)

type handlerFunc func(w http.ResponseWriter, r *http.Request) error

func main() {
	http.HandleFunc("/", handle(index))
	http.ListenAndServe("127.0.0.1:8080", nil)
}

func index(w http.ResponseWriter, r *http.Request) error {
	fmt.Fprintf(w, "Hello world!")

	return nil
}

func handle(f handlerFunc) http.HandlerFunc {
	return func(w http.ResponseWriter, r *http.Request) {
		handleError(w, r, func() error {
			// Do authentication...

			// Handle the request
			err := f(w, r)

			// Log the request and result...

			return err
		}())
	}
}

func handleError(w http.ResponseWriter, r *http.Request, err error) {
	if err == nil {
		return
	}

	if err, ok := err.(impart.HTTPError); ok {
		impart.WriteError(w, err)
		return
	}

	impart.WriteError(w, impart.HTTPError{http.StatusInternalServerError, "Internal server error :("})
}

# Functions

No description provided by the author
ReqJSON returns whether or not the given Request is sending JSON, based on the Content-Type header being application/json.
WriteError writes the error to the ResponseWriter as JSON.
WriteOAuthError writes the error to the ResponseWriter as JSON.
WriteRedirect sends a redirect.
WriteSuccess writes the successful data and metadata to the ResponseWriter as JSON.

# Structs

No description provided by the author
HTTPError holds an HTTP status code and an error message.
No description provided by the author