Created
March 1, 2016 09:55
-
-
Save lestrrat/e7efb92758f5d44ad97e to your computer and use it in GitHub Desktop.
automatically generated by hsup
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package app | |
import ( | |
"net/http" | |
"strings" | |
"github.com/gorilla/mux" | |
"golang.org/x/context" | |
) | |
type Server struct { | |
*mux.Router | |
} | |
func New() *Server { | |
s := &Server{ | |
Router: mux.NewRouter(), | |
} | |
s.SetupRoutes() | |
return s | |
} | |
func httpCreateConference(w http.ResponseWriter, r *http.Response) { | |
if strings.ToLower(r.Method) != `post` { | |
http.Error(w, `Not Found`, http.StatusNotFound) | |
} | |
var payload interface{} | |
if err := json.NewDecoder(r.Body).Decode(&payload); err != nil { | |
http.Error(w, `Invalid input`, http.StatusInternalServerError) | |
return | |
} | |
if err := validator.HTTPCreateConferenceRequest.Validate(payload); err != nil { | |
http.Error(w, `Invalid input`, http.StatusInternalServerError) | |
return | |
} | |
doCreateConference(context.Background(), w, r, payload) | |
} | |
func httpCreateRoom(w http.ResponseWriter, r *http.Response) { | |
if strings.ToLower(r.Method) != `post` { | |
http.Error(w, `Not Found`, http.StatusNotFound) | |
} | |
var payload interface{} | |
if err := json.NewDecoder(r.Body).Decode(&payload); err != nil { | |
http.Error(w, `Invalid input`, http.StatusInternalServerError) | |
return | |
} | |
if err := validator.HTTPCreateRoomRequest.Validate(payload); err != nil { | |
http.Error(w, `Invalid input`, http.StatusInternalServerError) | |
return | |
} | |
doCreateRoom(context.Background(), w, r, payload) | |
} | |
func httpCreateSession(w http.ResponseWriter, r *http.Response) { | |
if strings.ToLower(r.Method) != `post` { | |
http.Error(w, `Not Found`, http.StatusNotFound) | |
} | |
var payload interface{} | |
if err := json.NewDecoder(r.Body).Decode(&payload); err != nil { | |
http.Error(w, `Invalid input`, http.StatusInternalServerError) | |
return | |
} | |
if err := validator.HTTPCreateSessionRequest.Validate(payload); err != nil { | |
http.Error(w, `Invalid input`, http.StatusInternalServerError) | |
return | |
} | |
doCreateSession(context.Background(), w, r, payload) | |
} | |
func httpCreateUser(w http.ResponseWriter, r *http.Response) { | |
if strings.ToLower(r.Method) != `post` { | |
http.Error(w, `Not Found`, http.StatusNotFound) | |
} | |
var payload interface{} | |
if err := json.NewDecoder(r.Body).Decode(&payload); err != nil { | |
http.Error(w, `Invalid input`, http.StatusInternalServerError) | |
return | |
} | |
if err := validator.HTTPCreateUserRequest.Validate(payload); err != nil { | |
http.Error(w, `Invalid input`, http.StatusInternalServerError) | |
return | |
} | |
doCreateUser(context.Background(), w, r, payload) | |
} | |
func httpCreateVenue(w http.ResponseWriter, r *http.Response) { | |
if strings.ToLower(r.Method) != `post` { | |
http.Error(w, `Not Found`, http.StatusNotFound) | |
} | |
var payload interface{} | |
if err := json.NewDecoder(r.Body).Decode(&payload); err != nil { | |
http.Error(w, `Invalid input`, http.StatusInternalServerError) | |
return | |
} | |
if err := validator.HTTPCreateVenueRequest.Validate(payload); err != nil { | |
http.Error(w, `Invalid input`, http.StatusInternalServerError) | |
return | |
} | |
doCreateVenue(context.Background(), w, r, payload) | |
} | |
func httpListRooms(w http.ResponseWriter, r *http.Response) { | |
if strings.ToLower(r.Method) != `get` { | |
http.Error(w, `Not Found`, http.StatusNotFound) | |
} | |
var payload interface{} | |
if err := json.NewDecoder(r.Body).Decode(&payload); err != nil { | |
http.Error(w, `Invalid input`, http.StatusInternalServerError) | |
return | |
} | |
if err := validator.HTTPListRoomsRequest.Validate(payload); err != nil { | |
http.Error(w, `Invalid input`, http.StatusInternalServerError) | |
return | |
} | |
doListRooms(context.Background(), w, r, payload) | |
} | |
func httpListVenues(w http.ResponseWriter, r *http.Response) { | |
var payload interface{} | |
if err := json.NewDecoder(r.Body).Decode(&payload); err != nil { | |
http.Error(w, `Invalid input`, http.StatusInternalServerError) | |
return | |
} | |
if err := validator.HTTPListVenuesRequest.Validate(payload); err != nil { | |
http.Error(w, `Invalid input`, http.StatusInternalServerError) | |
return | |
} | |
doListVenues(context.Background(), w, r, payload) | |
} | |
func (s *Server) SetupRoutes() { | |
r := s.Router | |
r.HandleFunc(`/v1/conference/create`, CreateConference) | |
r.HandleFunc(`/v1/room/create`, CreateRoom) | |
r.HandleFunc(`/v1/room/list`, ListRooms) | |
r.HandleFunc(`/v1/session/create`, CreateSession) | |
r.HandleFunc(`/v1/user/create`, CreateUser) | |
r.HandleFunc(`/v1/venue/create`, CreateVenue) | |
r.HandleFunc(`/v1/venue/list`, ListVenues) | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package validator | |
import ( | |
"github.com/lestrrat/go-jsval" | |
) | |
var HTTPListVenuesRequest *jsval.JSVal | |
var HTTPCreateRoomRequest *jsval.JSVal | |
var HTTPListRoomsRequest *jsval.JSVal | |
var HTTPCreateConferenceRequest *jsval.JSVal | |
var HTTPCreateSessionRequest *jsval.JSVal | |
var HTTPCreateUserRequest *jsval.JSVal | |
var HTTPCreateVenueRequest *jsval.JSVal | |
var M *jsval.ConstraintMap | |
var R0 jsval.Constraint | |
var R1 jsval.Constraint | |
var R2 jsval.Constraint | |
var R3 jsval.Constraint | |
var R4 jsval.Constraint | |
var R5 jsval.Constraint | |
var R6 jsval.Constraint | |
var R7 jsval.Constraint | |
var R8 jsval.Constraint | |
var R9 jsval.Constraint | |
var R10 jsval.Constraint | |
var R11 jsval.Constraint | |
var R12 jsval.Constraint | |
var R13 jsval.Constraint | |
var R14 jsval.Constraint | |
var R15 jsval.Constraint | |
var R16 jsval.Constraint | |
func init() { | |
M = &jsval.ConstraintMap{} | |
R0 = jsval.String().Enum([]interface{}{"pending", "accepted", "rejected"},) | |
R1 = jsval.String().Enum([]interface{}{"allow", "disallow"},) | |
R2 = jsval.String() | |
R3 = jsval.String() | |
R4 = jsval.String().Format("email") | |
R5 = jsval.String() | |
R6 = jsval.Number() | |
R7 = jsval.Number() | |
R8 = jsval.String() | |
R9 = jsval.String() | |
R10 = jsval.String().Enum([]interface{}{"beginner", "intermediate", "advanced"},) | |
R11 = jsval.Integer().Minimum(0) | |
R12 = jsval.String() | |
R13 = jsval.String() | |
R14 = jsval.Array() | |
R15 = jsval.String().Format("url") | |
R16 = jsval.String().Regexp(`^[a-fA-F0-9-]+$`) | |
M.SetReference(`#/definitions/acceptance-status`, R0) | |
M.SetReference(`#/definitions/binary-permission`, R1) | |
M.SetReference(`#/definitions/datetime`, R2) | |
M.SetReference(`#/definitions/duration`, R3) | |
M.SetReference(`#/definitions/email`, R4) | |
M.SetReference(`#/definitions/language`, R5) | |
M.SetReference(`#/definitions/latitude`, R6) | |
M.SetReference(`#/definitions/longitude`, R7) | |
M.SetReference(`#/definitions/markdown-en`, R8) | |
M.SetReference(`#/definitions/markdown-i18n`, R9) | |
M.SetReference(`#/definitions/material-level`, R10) | |
M.SetReference(`#/definitions/positiveInteger`, R11) | |
M.SetReference(`#/definitions/string-en`, R12) | |
M.SetReference(`#/definitions/string-i18n`, R13) | |
M.SetReference(`#/definitions/tag-array`, R14) | |
M.SetReference(`#/definitions/url`, R15) | |
M.SetReference(`#/definitions/uuid`, R16) | |
HTTPListVenuesRequest = jsval.New(). | |
SetConstraintMap(M). | |
SetRoot( | |
jsval.Object(). | |
AdditionalProperties( | |
jsval.EmptyConstraint, | |
). | |
AddProp( | |
`lang`, | |
jsval.Reference(M).RefersTo(`#/definitions/language`), | |
). | |
AddProp( | |
`since`, | |
jsval.Reference(M).RefersTo(`#/definitions/uuid`), | |
), | |
) | |
HTTPCreateRoomRequest = jsval.New(). | |
SetConstraintMap(M). | |
SetRoot( | |
jsval.Object(). | |
Required([]string{"name", "venue-id"}). | |
AdditionalProperties( | |
jsval.EmptyConstraint, | |
). | |
AddProp( | |
`capacity`, | |
jsval.Reference(M).RefersTo(`#/definitions/positiveInteger`), | |
). | |
AddProp( | |
`name`, | |
jsval.String(), | |
). | |
AddProp( | |
`venue-id`, | |
jsval.Reference(M).RefersTo(`#/definitions/uuid`), | |
), | |
) | |
HTTPListRoomsRequest = jsval.New(). | |
SetConstraintMap(M). | |
SetRoot( | |
jsval.Object(). | |
Required([]string{"venue-id"}). | |
AdditionalProperties( | |
jsval.EmptyConstraint, | |
). | |
AddProp( | |
`lang`, | |
jsval.Reference(M).RefersTo(`#/definitions/language`), | |
). | |
AddProp( | |
`venue-id`, | |
jsval.Reference(M).RefersTo(`#/definitions/uuid`), | |
), | |
) | |
HTTPCreateConferenceRequest = jsval.New(). | |
SetConstraintMap(M). | |
SetRoot( | |
jsval.Object(). | |
AdditionalProperties( | |
jsval.EmptyConstraint, | |
). | |
AddProp( | |
`description`, | |
jsval.Reference(M).RefersTo(`#/definitions/string-en`), | |
). | |
AddProp( | |
`duration`, | |
jsval.Reference(M).RefersTo(`#/definitions/duration`), | |
). | |
AddProp( | |
`starts-on`, | |
jsval.Reference(M).RefersTo(`#/definitions/datetime`), | |
). | |
AddProp( | |
`title`, | |
jsval.Reference(M).RefersTo(`#/definitions/string-en`), | |
). | |
AddProp( | |
`venue-id`, | |
jsval.Reference(M).RefersTo(`#/definitions/uuid`), | |
), | |
) | |
HTTPCreateSessionRequest = jsval.New(). | |
SetConstraintMap(M). | |
SetRoot( | |
jsval.Object(). | |
AdditionalProperties( | |
jsval.EmptyConstraint, | |
). | |
AddProp( | |
`abstract`, | |
jsval.Reference(M).RefersTo(`#/definitions/markdown-en`), | |
). | |
AddProp( | |
`category`, | |
jsval.String(), | |
). | |
AddProp( | |
`conference-id`, | |
jsval.Reference(M).RefersTo(`#/definitions/uuid`), | |
). | |
AddProp( | |
`confirmed`, | |
jsval.Boolean().Default(false), | |
). | |
AddProp( | |
`duration`, | |
jsval.Reference(M).RefersTo(`#/definitions/duration`), | |
). | |
AddProp( | |
`has-interpretation`, | |
jsval.Boolean().Default(false), | |
). | |
AddProp( | |
`material-level`, | |
jsval.Reference(M).RefersTo(`#/definitions/material-level`), | |
). | |
AddProp( | |
`memo`, | |
jsval.String(), | |
). | |
AddProp( | |
`photo-permission`, | |
jsval.Reference(M).RefersTo(`#/definitions/binary-permission`), | |
). | |
AddProp( | |
`room-id`, | |
jsval.Reference(M).RefersTo(`#/definitions/uuid`), | |
). | |
AddProp( | |
`slide-language`, | |
jsval.Reference(M).RefersTo(`#/definitions/language`), | |
). | |
AddProp( | |
`slide-subtitles`, | |
jsval.Reference(M).RefersTo(`#/definitions/language`), | |
). | |
AddProp( | |
`slide-url`, | |
jsval.Reference(M).RefersTo(`#/definitions/url`), | |
). | |
AddProp( | |
`sort-order`, | |
jsval.Reference(M).RefersTo(`#/definitions/positiveInteger`), | |
). | |
AddProp( | |
`speaker-id`, | |
jsval.Array(), | |
). | |
AddProp( | |
`spoken-language`, | |
jsval.Reference(M).RefersTo(`#/definitions/language`), | |
). | |
AddProp( | |
`starts-on`, | |
jsval.Reference(M).RefersTo(`#/definitions/datetime`), | |
). | |
AddProp( | |
`status`, | |
jsval.Reference(M).RefersTo(`#/definitions/acceptance-status`), | |
). | |
AddProp( | |
`tag`, | |
jsval.Reference(M).RefersTo(`#/definitions/tag-array`), | |
). | |
AddProp( | |
`title`, | |
jsval.Reference(M).RefersTo(`#/definitions/string-en`), | |
). | |
AddProp( | |
`video-permission`, | |
jsval.Reference(M).RefersTo(`#/definitions/binary-permission`), | |
). | |
AddProp( | |
`video-url`, | |
jsval.Reference(M).RefersTo(`#/definitions/url`), | |
), | |
) | |
HTTPCreateUserRequest = jsval.New(). | |
SetConstraintMap(M). | |
SetRoot( | |
jsval.Object(). | |
AdditionalProperties( | |
jsval.EmptyConstraint, | |
). | |
AddProp( | |
`email`, | |
jsval.Reference(M).RefersTo(`#/definitions/email`), | |
). | |
AddProp( | |
`first_name`, | |
jsval.Reference(M).RefersTo(`#/definitions/string-en`), | |
). | |
AddProp( | |
`last_name`, | |
jsval.Reference(M).RefersTo(`#/definitions/string-en`), | |
). | |
AddProp( | |
`nickname`, | |
jsval.Reference(M).RefersTo(`#/definitions/string-en`), | |
), | |
) | |
HTTPCreateVenueRequest = jsval.New(). | |
SetConstraintMap(M). | |
SetRoot( | |
jsval.Object(). | |
Required([]string{"address", "latitude", "longitude", "name"}). | |
AdditionalProperties( | |
jsval.EmptyConstraint, | |
). | |
AddProp( | |
`address`, | |
jsval.Reference(M).RefersTo(`#/definitions/string-en`), | |
). | |
AddProp( | |
`latitude`, | |
jsval.Reference(M).RefersTo(`#/definitions/latitude`), | |
). | |
AddProp( | |
`longitude`, | |
jsval.Reference(M).RefersTo(`#/definitions/longitude`), | |
). | |
AddProp( | |
`name`, | |
jsval.Reference(M).RefersTo(`#/definitions/string-en`), | |
), | |
) | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment