changed public id format to be 128 bit length.

This commit is contained in:
didier amyot committed 2015-07-05 18:16:40 -04:00
1 parent 78d50d9a6d
commit d2cf9d7498
11 files changed
+187 -22

No files matched your search

+64
View File
@@ -1,10 +1,17 @@
package doormen
import (
"encoding/json"
"github.com/didiercrunch/doormanserver/shared"
"gopkg.in/mgo.v2/bson"
"math/big"
)
type doormanValue struct {
Name string
Probability string
}
func (val *DoormanValue) GetBSON() (interface{}, error) {
ret := &doormanValue{val.Name, ""}
txt, err := val.Probability.MarshalText()
@@ -24,3 +31,60 @@ func (val *DoormanValue) SetBSON(raw bson.Raw) error {
val.Probability = new(big.Rat)
return val.Probability.UnmarshalText([]byte(v.Probability))
}
type jsonDoormanDefinition struct {
Id string `json:"id,omitempty"`
Name string `json:"name"`
Values []*DoormanValue `json:"values"`
OwnerEmails []string `json:"emails"`
}
func (dm *DoormanDefinition) MarshalJSON() ([]byte, error) {
jdm := new(jsonDoormanDefinition)
jdm.Name = dm.Name
jdm.OwnerEmails = dm.OwnerEmails
jdm.Values = dm.Values
jdm.Id = shared.ObjectIdToPublicId(dm.Id)
return json.Marshal(jdm)
}
func (dm *DoormanDefinition) UnmarshalJSON(data []byte) error {
jsm := new(jsonDoormanDefinition)
var err error
if err = json.Unmarshal(data, jsm); err != nil {
return err
}
if dm.Id, err = shared.PublicIdToObjectId(jsm.Id); err != nil {
return err
}
dm.Name = jsm.Name
dm.Values = jsm.Values
dm.OwnerEmails = jsm.OwnerEmails
return nil
}
type jsonDoormanId struct {
Name string `json:"name"`
Id string `json:"id"`
}
func (did *DoormanId) MarshalJSON() ([]byte, error) {
jdid := new(jsonDoormanId)
jdid.Name = did.Name
jdid.Id = shared.ObjectIdToPublicId(did.Id)
return json.Marshal(jdid)
}
func (did *DoormanId) UnmarshalJSON(data []byte) error {
jdid := new(jsonDoormanId)
if err := json.Unmarshal(data, jdid); err != nil {
return err
}
var err error
if did.Id, err = shared.PublicIdToObjectId(jdid.Id); err != nil {
return err
}
did.Name = jdid.Name
return nil
}