Skip to content

K-Phoen/negotiate

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 

Repository files navigation

negotiate

Content negotiation middleware for Martini.

It's a simple wrapper to the negotiation library and martini-contrib/encoder service.

Status

This project is DEPRECATED and should NOT be used.

If someone magically appears and wants to maintain this project, I'll gladly give access to this repository.

Usage

Here is a ready to use example:

package main

import (
  "github.com/K-Phoen/negotiate"
  "github.com/go-martini/martini"
  "github.com/martini-contrib/encoder"
  "log"
  "net/http"
)

type Some struct {
  Login    string `json:"login"`
  Password string `json:"password" out:"false"`
}

func main() {
  m := martini.New()
  route := martini.NewRouter()

  // create a format -> encoder map
  negotiators := make(map[string]encoder.Encoder)
  negotiators["application/xml"] = encoder.XmlEncoder{}
  negotiators["application/json"] = encoder.JsonEncoder{}

  // use the middleware
  m.Use(negotiate.NegotiateFormat(negotiators))

  // and the right encoder will be automatically injected
  route.Get("/test", func(enc encoder.Encoder) (int, []byte) {
    result := &Some{"awesome", "hidden"}
    return http.StatusOK, encoder.Must(enc.Encode(result))
  })

  m.Action(route.Handle)

  log.Println("Waiting for connections...")

  if err := http.ListenAndServe(":8000", m); err != nil {
    log.Fatal(err)
  }
}

ToDo

  • provide tools to negotiate other things (language for instance)
  • write tests

License

This library is released under the MIT License. See the bundled LICENSE file for details.

About

[DEPRECATED] Martini handler providing content negotiation to requests

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages