-
Notifications
You must be signed in to change notification settings - Fork 2
/
org_controller.go
56 lines (49 loc) · 1.68 KB
/
org_controller.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
package pezauth
import (
"log"
"github.com/fatih/structs"
"github.com/go-martini/martini"
"github.com/martini-contrib/oauth2"
"github.com/martini-contrib/render"
"github.com/pivotal-pez/pezdispenser/service"
)
//NewOrgController - a controller for me requests
func NewOrgController(get pezdispenser.MongoCollectionGetter, authClient AuthRequestCreator) Controller {
return &orgController{
store: get.Collection,
authClient: authClient,
}
}
//Get - get a get handler for org management
func (s *orgController) Get() interface{} {
var handler OrgGetHandler = func(params martini.Params, log *log.Logger, r render.Render, tokens oauth2.Tokens) {
username := params[UserParam]
org := NewOrg(username, log, tokens, s.store(), s.authClient)
result, err := org.Show()
genericResponseFormatter(r, "", structs.Map(result), err)
}
return handler
}
//Put - get a get handler for org management
func (s *orgController) Put() interface{} {
var handler OrgPutHandler = func(params martini.Params, log *log.Logger, r render.Render, tokens oauth2.Tokens) {
var (
err error
payload *PivotOrg
responsePayload map[string]interface{}
result *PivotOrg
)
username := params[UserParam]
org := NewOrg(username, log, tokens, s.store(), s.authClient)
if result, err = org.Show(); err == pezdispenser.ErrNoMatchInStore {
log.Println("Show yielded no results: ", err)
payload, err = org.SafeCreate()
responsePayload = structs.Map(payload)
} else {
log.Println("Show yielded a result: ", result, ":", err, "!=", pezdispenser.ErrNoMatchInStore)
err = ErrCanNotCreateOrg
}
genericResponseFormatter(r, "", responsePayload, err)
}
return handler
}