本文整理匯總了Golang中github.com/ninnemana/API/models/cart.Customer類的典型用法代碼示例。如果您正苦於以下問題:Golang Customer類的具體用法?Golang Customer怎麽用?Golang Customer使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。
在下文中一共展示了Customer類的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: EditCustomer
// Edit an existing customer for a
// given shop.
func EditCustomer(w http.ResponseWriter, req *http.Request, params martini.Params, enc encoding.Encoder, shop *cart.Shop) string {
var c cart.Customer
defer req.Body.Close()
data, err := ioutil.ReadAll(req.Body)
if err != nil {
apierror.GenerateError(err.Error(), err, w, req)
return ""
}
if err = json.Unmarshal(data, &c); err != nil {
apierror.GenerateError(err.Error(), err, w, req)
return ""
}
customerId := params["id"]
if !bson.IsObjectIdHex(customerId) {
apierror.GenerateError("invalid customer reference", nil, w, req)
return ""
}
c.Id = bson.ObjectIdHex(customerId)
c.ShopId = shop.Id
if err = c.Update(); err != nil {
apierror.GenerateError(err.Error(), err, w, req)
return ""
}
return encoding.Must(enc.Encode(c))
}
示例2: Test_AccountLogin
func Test_AccountLogin(t *testing.T) {
Convey("with shop identifier", t, func() {
shopID := cart.InsertTestData()
So(shopID, ShouldNotBeNil)
val := shopID.Hex()
qs := make(url.Values, 0)
qs.Add("shop", val)
cust := cart.Customer{
ShopId: *shopID,
FirstName: "Alex",
LastName: "Ninneman",
Email: time.Now().Format(time.RFC3339Nano) + "@gmail.com",
}
cust.Password = "password"
response = httprunner.JsonRequest("POST", "/shopify/account", &qs, cust, AddAccount)
So(response.Code, ShouldEqual, 200)
So(json.Unmarshal(response.Body.Bytes(), &cust), ShouldBeNil)
cust.Password = ""
response = httprunner.Req(AccountLogin, "POST", "", "/shopify/account/login", &qs, nil, cust)
So(response.Code, ShouldEqual, 500)
So(json.Unmarshal(response.Body.Bytes(), &apierror.ApiErr{}), ShouldBeNil)
cust.Password = "password"
response = httprunner.Req(AccountLogin, "POST", "", "/shopify/account/login", &qs, nil, cust)
So(response.Code, ShouldEqual, 200)
So(json.Unmarshal(response.Body.Bytes(), &cust), ShouldBeNil)
})
}
示例3: EditAccount
// Edit an account for a given shop.
func EditAccount(w http.ResponseWriter, req *http.Request, params martini.Params, enc encoding.Encoder, shop *cart.Shop, token string) string {
var c cart.Customer
defer req.Body.Close()
data, err := ioutil.ReadAll(req.Body)
if err != nil {
apierror.GenerateError(err.Error(), err, w, req)
return ""
}
if err = json.Unmarshal(data, &c); err != nil {
apierror.GenerateError(err.Error(), err, w, req)
return ""
}
c.ShopId = shop.Id
c.Id, err = cart.IdentifierFromToken(token)
if err != nil {
apierror.GenerateError(err.Error(), err, w, req)
return ""
}
if err = c.Update(); err != nil {
apierror.GenerateError(err.Error(), err, w, req)
return ""
}
return encoding.Must(enc.Encode(c))
}
示例4: AddAccount
// Create a customer for a
// given shop.
func AddAccount(w http.ResponseWriter, req *http.Request, params martini.Params, enc encoding.Encoder, shop *cart.Shop) string {
var c cart.Customer
defer req.Body.Close()
data, err := ioutil.ReadAll(req.Body)
if err != nil {
apierror.GenerateError(err.Error(), err, w, req)
return ""
}
if err = json.Unmarshal(data, &c); err != nil {
apierror.GenerateError(err.Error(), err, w, req)
return ""
}
c.ShopId = shop.Id
if err = c.Insert(req.Referer()); err != nil {
apierror.GenerateError(err.Error(), err, w, req)
return ""
}
return encoding.Must(enc.Encode(c))
}
示例5: BenchmarkGetCustomerAddresses
func BenchmarkGetCustomerAddresses(b *testing.B) {
shopID := cart.InsertTestData()
if shopID == nil {
b.Error("failed to create a shop")
b.Fail()
}
val := shopID.Hex()
qs := make(url.Values, 0)
qs.Add("shop", val)
cust := cart.Customer{
ShopId: *shopID,
FirstName: "Alex",
LastName: "Ninneman",
Email: time.Now().Format(time.RFC3339Nano) + "@gmail.com",
Password: "password",
}
if err := cust.Insert("http://www.example.com"); err != nil {
b.Error(err.Error())
b.Fail()
}
(&httprunner.BenchmarkOptions{
Method: "GET",
Route: "/shopify/customers/" + cust.Id.Hex() + "/addresses",
ParameterizedRoute: "/shopify/customers/:id/addresses",
Handler: GetAddresses,
QueryString: &qs,
Runs: b.N,
}).RequestBenchmark()
}
示例6: GetAddresses
func GetAddresses(w http.ResponseWriter, req *http.Request, params martini.Params, enc encoding.Encoder, shop *cart.Shop) string {
customerId := params["id"]
limit := 50
page := 1
qs := req.URL.Query()
if l := qs.Get("limit"); l != "" {
lmt, err := strconv.Atoi(l)
if err == nil && lmt != 0 {
limit = lmt
}
}
if p := qs.Get("page"); p != "" {
pg, err := strconv.Atoi(p)
if err == nil && pg != 0 {
page = pg
}
}
if !bson.IsObjectIdHex(customerId) {
apierror.GenerateError("invalid customer reference", nil, w, req)
return ""
}
c := cart.Customer{
Id: bson.ObjectIdHex(customerId),
ShopId: shop.Id,
}
if err := c.Get(); err != nil {
apierror.GenerateError(err.Error(), err, w, req)
return ""
}
addr := c.Addresses
if len(c.Addresses) > 0 {
addr = c.Addresses[:limit]
if page > 1 && len(c.Addresses) >= ((page-1)*limit) {
addr = c.Addresses[((page - 1) / limit):limit]
}
}
return encoding.Must(enc.Encode(addr))
}
示例7: Test_EditAccount
func Test_EditAccount(t *testing.T) {
Convey("with shop identifier", t, func() {
shopID := cart.InsertTestData()
So(shopID, ShouldNotBeNil)
val := shopID.Hex()
qs := make(url.Values, 0)
qs.Add("shop", val)
cust := cart.Customer{
ShopId: *shopID,
FirstName: "Alex",
LastName: "Ninneman",
Email: time.Now().Format(time.RFC3339Nano) + "@gmail.com",
}
cust.Password = "password"
response = httprunner.JsonRequest("POST", "/shopify/account", &qs, cust, AddAccount)
So(response.Code, ShouldEqual, 200)
So(json.Unmarshal(response.Body.Bytes(), &cust), ShouldBeNil)
cust.Email = time.Now().Format(time.RFC3339Nano) + "@gmail.com"
header := map[string]interface{}{
"Authorization": "Bearer as;ldskfja;lfdj",
}
response = httprunner.Req(EditAccount, "PUT", "", "/shopify/account", &qs, nil, cust, header)
So(response.Code, ShouldEqual, 500)
So(json.Unmarshal(response.Body.Bytes(), &apierror.ApiErr{}), ShouldBeNil)
header = map[string]interface{}{
"Authorization": "Bearer " + cust.Token,
}
cust.FirstName = ""
response = httprunner.Req(EditAccount, "PUT", "", "/shopify/account", &qs, nil, cust, header)
So(response.Code, ShouldEqual, 500)
So(json.Unmarshal(response.Body.Bytes(), &apierror.ApiErr{}), ShouldBeNil)
cust.FirstName = "Alex"
response = httprunner.Req(EditAccount, "PUT", "", "/shopify/account", &qs, nil, cust, header)
So(response.Code, ShouldEqual, 200)
So(json.Unmarshal(response.Body.Bytes(), &cust), ShouldBeNil)
})
}
示例8: GetAccount
// Get an account for a given shop
func GetAccount(w http.ResponseWriter, req *http.Request, params martini.Params, enc encoding.Encoder, shop *cart.Shop, token string) string {
cust := cart.Customer{
ShopId: shop.Id,
}
var err error
cust.Id, err = cart.IdentifierFromToken(token)
if err != nil {
apierror.GenerateError(err.Error(), err, w, req)
return ""
}
if err = cust.Get(); err != nil {
apierror.GenerateError(err.Error(), err, w, req)
return ""
}
return encoding.Must(enc.Encode(cust))
}
示例9: DeleteCustomer
// Delete a customer for a given shop.
// Note: Can't delete if the customer has existing orders.
func DeleteCustomer(w http.ResponseWriter, req *http.Request, params martini.Params, enc encoding.Encoder, shop *cart.Shop) string {
var c cart.Customer
customerId := params["id"]
if !bson.IsObjectIdHex(customerId) {
apierror.GenerateError("invalid customer reference", nil, w, req)
return ""
}
c.Id = bson.ObjectIdHex(customerId)
c.ShopId = shop.Id
if err := c.Delete(); err != nil {
apierror.GenerateError(err.Error(), err, w, req)
return ""
}
return ""
}
示例10: GetCustomer
// Get a specific customer for a
// given shop.
func GetCustomer(w http.ResponseWriter, req *http.Request, params martini.Params, enc encoding.Encoder, shop *cart.Shop) string {
customerId := params["id"]
if !bson.IsObjectIdHex(customerId) {
apierror.GenerateError("invalid customer reference", nil, w, req)
return ""
}
c := cart.Customer{
Id: bson.ObjectIdHex(customerId),
ShopId: shop.Id,
}
if err := c.Get(); err != nil {
apierror.GenerateError(err.Error(), err, w, req)
return ""
}
return encoding.Must(enc.Encode(c))
}
示例11: DeleteAddress
func DeleteAddress(w http.ResponseWriter, req *http.Request, params martini.Params, enc encoding.Encoder, shop *cart.Shop) string {
var c cart.Customer
customerId := params["id"]
if !bson.IsObjectIdHex(customerId) {
apierror.GenerateError("invalid customer reference", nil, w, req)
return ""
}
c.Id = bson.ObjectIdHex(customerId)
c.ShopId = shop.Id
if err := c.Get(); err != nil {
apierror.GenerateError("", err, w, req)
return ""
}
addressId := params["address"]
if !bson.IsObjectIdHex(addressId) {
apierror.GenerateError("invalid address reference", nil, w, req)
return ""
}
// Make sure this isn't the default address
if c.DefaultAddress != nil && c.DefaultAddress.Id.Hex() == addressId {
apierror.GenerateError("removing a default address is not allowed", nil, w, req)
return ""
}
found := false
for i, addr := range c.Addresses {
if addr.Id.Hex() == addressId {
c.Addresses = append(c.Addresses[:i], c.Addresses[i+1:]...)
found = true
break
}
}
if !found {
apierror.GenerateError("invalid address reference", nil, w, req)
return ""
}
if err := c.Update(); err != nil {
apierror.GenerateError(err.Error(), err, w, req)
return ""
}
return ""
}
示例12: AddAddress
func AddAddress(w http.ResponseWriter, req *http.Request, params martini.Params, enc encoding.Encoder, shop *cart.Shop) string {
var address cart.CustomerAddress
var c cart.Customer
customerId := params["id"]
if !bson.IsObjectIdHex(customerId) {
apierror.GenerateError("invalid customer reference", nil, w, req)
return ""
}
c.Id = bson.ObjectIdHex(customerId)
c.ShopId = shop.Id
if err := c.Get(); err != nil {
apierror.GenerateError(err.Error(), err, w, req)
return ""
}
defer req.Body.Close()
data, err := ioutil.ReadAll(req.Body)
if err != nil {
apierror.GenerateError(err.Error(), err, w, req)
return ""
}
if err = json.Unmarshal(data, &address); err != nil {
apierror.GenerateError(err.Error(), err, w, req)
return ""
}
// audit the address
if err := address.Validate(); err != nil {
apierror.GenerateError(err.Error(), err, w, req)
return ""
}
addressId := bson.NewObjectId()
address.Id = &addressId
c.Addresses = append(c.Addresses, address)
if err = c.Update(); err != nil {
apierror.GenerateError(err.Error(), err, w, req)
return ""
}
return encoding.Must(enc.Encode(address))
}
示例13: GetAddress
func GetAddress(w http.ResponseWriter, req *http.Request, params martini.Params, enc encoding.Encoder, shop *cart.Shop) string {
customerId := params["id"]
addressId := params["address"]
if !bson.IsObjectIdHex(customerId) {
apierror.GenerateError("invalid customer reference", nil, w, req)
return ""
}
if !bson.IsObjectIdHex(addressId) {
apierror.GenerateError("invalid address reference", nil, w, req)
return ""
}
c := cart.Customer{
Id: bson.ObjectIdHex(customerId),
ShopId: shop.Id,
}
if err := c.Get(); err != nil {
apierror.GenerateError(err.Error(), err, w, req)
return ""
}
var address *cart.CustomerAddress
for _, addr := range c.Addresses {
if addr.Id.Hex() == addressId {
address = &addr
break
}
}
if address == nil {
apierror.GenerateError("invalid address reference", nil, w, req)
return ""
}
return encoding.Must(enc.Encode(address))
}
示例14: SetDefaultAddress
func SetDefaultAddress(w http.ResponseWriter, req *http.Request, params martini.Params, enc encoding.Encoder, shop *cart.Shop) string {
var c cart.Customer
customerId := params["id"]
if !bson.IsObjectIdHex(customerId) {
apierror.GenerateError("invalid customer reference", nil, w, req)
return ""
}
c.Id = bson.ObjectIdHex(customerId)
c.ShopId = shop.Id
if err := c.Get(); err != nil {
apierror.GenerateError("", err, w, req)
return ""
}
addressId := params["address"]
if !bson.IsObjectIdHex(addressId) {
apierror.GenerateError("invalid address reference", nil, w, req)
return ""
}
found := false
for _, addr := range c.Addresses {
if addr.Id.Hex() == addressId {
c.DefaultAddress = &addr
found = true
break
}
}
if !found {
apierror.GenerateError("invalid address reference", nil, w, req)
return ""
}
if err := c.Update(); err != nil {
apierror.GenerateError(err.Error(), err, w, req)
return ""
}
return encoding.Must(enc.Encode(c))
}
示例15: EditAddress
func EditAddress(w http.ResponseWriter, req *http.Request, params martini.Params, enc encoding.Encoder, shop *cart.Shop) string {
var address cart.CustomerAddress
var c cart.Customer
customerId := params["id"]
if !bson.IsObjectIdHex(customerId) {
apierror.GenerateError("invalid customer reference", nil, w, req)
return ""
}
c.Id = bson.ObjectIdHex(customerId)
c.ShopId = shop.Id
if err := c.Get(); err != nil {
apierror.GenerateError("", err, w, req)
return ""
}
addressId := params["address"]
if !bson.IsObjectIdHex(addressId) {
apierror.GenerateError("invalid address reference", nil, w, req)
return ""
}
defer req.Body.Close()
data, err := ioutil.ReadAll(req.Body)
if err != nil {
apierror.GenerateError(err.Error(), err, w, req)
return ""
}
if err = json.Unmarshal(data, &address); err != nil {
apierror.GenerateError(err.Error(), err, w, req)
return ""
}
// audit the address
if err := address.Validate(); err != nil {
apierror.GenerateError(err.Error(), err, w, req)
return ""
}
found := false
for i, addr := range c.Addresses {
if addr.Id.Hex() == addressId {
c.Addresses[i] = address
found = true
break
}
}
if !found {
apierror.GenerateError("invalid address reference", nil, w, req)
return ""
}
if err = c.Update(); err != nil {
apierror.GenerateError(err.Error(), err, w, req)
return ""
}
return encoding.Must(enc.Encode(address))
}