Skip to content

Instantly share code, notes, and snippets.

@lestrrat
Created March 1, 2016 09:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lestrrat/e7efb92758f5d44ad97e to your computer and use it in GitHub Desktop.
Save lestrrat/e7efb92758f5d44ad97e to your computer and use it in GitHub Desktop.
automatically generated by hsup
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)
}
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