Page MenuHomeMusing Studio

No OneTemporary

diff --git a/README.md b/README.md
new file mode 100644
index 0000000..1c789bd
--- /dev/null
+++ b/README.md
@@ -0,0 +1,61 @@
+impart
+======
+
+![MIT license](https://img.shields.io/github/license/writeas/impart.svg) [![Public Slack discussion](http://slack.write.as/badge.svg)](http://slack.write.as/)
+
+**impart** is a library for the final layer between the API and the consumer. It's used in the latest [Write.as](https://write.as) and [HTMLhouse](https://html.house) APIs.
+
+We're still in the early stages of development, so there may be breaking changes.
+
+## Example use
+
+```go
+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 :("})
+}
+```

File Metadata

Mime Type
text/x-diff
Expires
Sat, Jan 31, 9:30 AM (1 d, 7 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3612191

Event Timeline