2016-01-07 19:08:48 +00:00
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
2016-01-07 19:32:24 +00:00
|
|
|
"encoding/json"
|
2016-01-07 19:08:48 +00:00
|
|
|
"strconv"
|
|
|
|
)
|
|
|
|
|
|
|
|
var ApiTeamsRouting = map[string]DispatchFunction{
|
2016-01-13 10:31:59 +00:00
|
|
|
"GET": listTeam,
|
|
|
|
"PUT": creationTeamMembers,
|
|
|
|
"POST": creationTeam,
|
2016-01-13 00:12:36 +00:00
|
|
|
"DELETE": deletionTeam,
|
2016-01-07 19:08:48 +00:00
|
|
|
}
|
|
|
|
|
2016-01-13 10:31:59 +00:00
|
|
|
type uploadedTeam struct {
|
|
|
|
Name string
|
|
|
|
}
|
|
|
|
|
|
|
|
type uploadedMember struct {
|
|
|
|
Firstname string
|
|
|
|
Lastname string
|
|
|
|
Nickname string
|
|
|
|
Company string
|
|
|
|
}
|
|
|
|
|
2016-01-07 19:32:24 +00:00
|
|
|
func listTeam(args []string, body []byte) (interface{}, error) {
|
2016-01-07 19:08:48 +00:00
|
|
|
if len(args) == 1 {
|
|
|
|
// List given team
|
|
|
|
if tid, err := strconv.Atoi(string(args[0])); err != nil {
|
|
|
|
return nil, err
|
|
|
|
} else if team, err := GetTeam(tid); err != nil {
|
|
|
|
return nil, err
|
|
|
|
} else {
|
|
|
|
return team.GetMembers()
|
|
|
|
}
|
|
|
|
} else if len(args) == 0 {
|
|
|
|
// List all teams
|
|
|
|
return GetTeams()
|
|
|
|
} else {
|
|
|
|
return nil, nil
|
|
|
|
}
|
|
|
|
}
|
2016-01-07 19:32:24 +00:00
|
|
|
|
|
|
|
func creationTeam(args []string, body []byte) (interface{}, error) {
|
|
|
|
if len(args) == 0 {
|
2016-01-13 10:31:59 +00:00
|
|
|
// Create a new team
|
|
|
|
var ut uploadedTeam
|
|
|
|
if err := json.Unmarshal(body, &ut); err != nil {
|
|
|
|
return nil, err
|
2016-01-07 19:32:24 +00:00
|
|
|
}
|
|
|
|
|
2016-01-13 10:31:59 +00:00
|
|
|
return CreateTeam(ut.Name)
|
|
|
|
} else {
|
|
|
|
return nil, nil
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func creationTeamMembers(args []string, body []byte) (interface{}, error) {
|
|
|
|
if len(args) == 1 {
|
|
|
|
// List given team
|
|
|
|
if tid, err := strconv.Atoi(string(args[0])); err != nil {
|
|
|
|
return nil, err
|
|
|
|
} else if team, err := GetTeam(tid); err != nil {
|
|
|
|
return nil, err
|
|
|
|
} else {
|
|
|
|
var member uploadedMember
|
|
|
|
if err := json.Unmarshal(body, &member); err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
team.AddMember(member.Firstname, member.Lastname, member.Nickname, member.Company)
|
|
|
|
|
|
|
|
return team.GetMembers()
|
|
|
|
}
|
|
|
|
} else if len(args) == 0 {
|
2016-01-07 19:32:24 +00:00
|
|
|
// Create a new team
|
2016-01-13 10:31:59 +00:00
|
|
|
var members []uploadedMember
|
2016-01-07 19:32:24 +00:00
|
|
|
if err := json.Unmarshal(body, &members); err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
if team, err := CreateTeam(""); err != nil {
|
|
|
|
return nil, err
|
|
|
|
} else {
|
|
|
|
for _, member := range members {
|
|
|
|
if _, err := team.AddMember(member.Firstname, member.Lastname, member.Nickname, member.Company); err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2016-01-13 10:31:59 +00:00
|
|
|
return team, nil
|
2016-01-07 19:32:24 +00:00
|
|
|
}
|
|
|
|
} else {
|
2016-01-13 10:31:59 +00:00
|
|
|
return nil, nil
|
2016-01-07 19:32:24 +00:00
|
|
|
}
|
|
|
|
}
|
2016-01-13 00:12:36 +00:00
|
|
|
|
|
|
|
func deletionTeam(args []string, body []byte) (interface{}, error) {
|
|
|
|
if len(args) == 1 {
|
|
|
|
if tid, err := strconv.Atoi(string(args[0])); err != nil {
|
|
|
|
return nil, err
|
|
|
|
} else if team, err := GetTeam(tid); err != nil {
|
|
|
|
return nil, err
|
|
|
|
} else {
|
|
|
|
return team.Delete()
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
return nil, nil
|
|
|
|
}
|
|
|
|
}
|