implement unmarshaling straight into MethodData

This commit is contained in:
Howl 2016-04-12 21:23:02 +02:00
parent b29c64023f
commit c108da9bb3
3 changed files with 16 additions and 6 deletions

View File

@ -2,7 +2,6 @@ package v1
import ( import (
"database/sql" "database/sql"
"encoding/json"
"strconv" "strconv"
"time" "time"
@ -149,7 +148,7 @@ type friendAddPOSTData struct {
// FriendsAddPOST allows for adding friends. Yup. Easy as that. // FriendsAddPOST allows for adding friends. Yup. Easy as that.
func FriendsAddPOST(md common.MethodData) (r common.Response) { func FriendsAddPOST(md common.MethodData) (r common.Response) {
d := friendAddPOSTData{} d := friendAddPOSTData{}
err := json.Unmarshal(md.RequestData, &d) err := md.RequestData.Unmarshal(&d)
if err != nil { if err != nil {
md.Err(err) md.Err(err)
r = Err500 r = Err500
@ -220,7 +219,7 @@ func FriendsDelGET(md common.MethodData) common.Response {
// FriendsDelPOST allows for deleting friends. // FriendsDelPOST allows for deleting friends.
func FriendsDelPOST(md common.MethodData) (r common.Response) { func FriendsDelPOST(md common.MethodData) (r common.Response) {
d := friendAddPOSTData{} d := friendAddPOSTData{}
err := json.Unmarshal(md.RequestData, &d) err := md.RequestData.Unmarshal(&d)
if err != nil { if err != nil {
md.Err(err) md.Err(err)
r = Err500 r = Err500

View File

@ -3,7 +3,6 @@ package v1
import ( import (
"crypto/md5" "crypto/md5"
"database/sql" "database/sql"
"encoding/json"
"fmt" "fmt"
"github.com/osuripple/api/common" "github.com/osuripple/api/common"
@ -31,7 +30,7 @@ type tokenNewOutData struct {
// TokenNewPOST is the handler for POST /token/new. // TokenNewPOST is the handler for POST /token/new.
func TokenNewPOST(md common.MethodData) (r common.Response) { func TokenNewPOST(md common.MethodData) (r common.Response) {
data := tokenNewInData{} data := tokenNewInData{}
err := json.Unmarshal(md.RequestData, &data) err := md.RequestData.Unmarshal(&data)
if err != nil { if err != nil {
r = ErrBadJSON r = ErrBadJSON
return return

View File

@ -2,6 +2,7 @@ package common
import ( import (
"database/sql" "database/sql"
"encoding/json"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
) )
@ -10,7 +11,7 @@ import (
type MethodData struct { type MethodData struct {
User Token User Token
DB *sql.DB DB *sql.DB
RequestData []byte RequestData RequestData
C *gin.Context C *gin.Context
} }
@ -23,3 +24,14 @@ func (md MethodData) Err(err error) {
func (md MethodData) ID() int { func (md MethodData) ID() int {
return md.User.UserID return md.User.UserID
} }
// RequestData is the body of a request. It is wrapped into this type
// to implement the Unmarshal function, which is just a shorthand to
// json.Unmarshal.
type RequestData []byte
// Unmarshal json-decodes Requestdata into a value. Basically a
// shorthand to json.Unmarshal.
func (r RequestData) Unmarshal(into interface{}) error {
return json.Unmarshal([]byte(r), into)
}