示例#1
0
 public void Checkout(Action<KnetikResult<Cart>> cb)
 {
     Client.CartCheckout((res) => {
         var result = new KnetikResult<Cart> {
             Response = res
         };
         if (!res.IsSuccess) {
             cb(result);
             return;
         }
         result.Value = this;
         cb(result);
     });
 }
示例#2
0
        public void Add(CatalogSku sku, int quantity, Action<KnetikResult<CartItem>> cb)
        {
            Client.CartAdd(sku.CatalogID, sku.ID, quantity, (res) => {
                var result = new KnetikResult<CartItem> {
                    Response = res
                };
                if (!res.IsSuccess) {
                    cb(result);
                    return;
                }

                var item = new CartItem(Client, this);
                item.FromSku(sku, quantity);
                Items.Add(item);

                result.Value = item;
                cb(result);
            });
        }
        private KnetikResult<RelationshipsQuery> OnLoad(KnetikApiResponse res)
        {
            var result = new KnetikResult<RelationshipsQuery> {
                Response = res
            };
            if (!res.IsSuccess)
            {
                return result;
            }
            Response = res;

            if (res.Body ["result"].Value != "null")
            {
                this.Deserialize(res.Body ["result"]);
            } else
            {
                Relationships = new Dictionary<String, UserHierarchy>();
            }

            result.Value = this;
            return result;
        }
        private KnetikResult<AchievementsQuery> OnLoad(KnetikApiResponse res)
        {
            var result = new KnetikResult<AchievementsQuery> {
                Response = res
            };
            if (!res.IsSuccess)
            {
                return result;
            }
            Response = res;

            if (res.Body["result"].Value != "null") {
                this.Deserialize(res.Body ["result"]);
            } else {
                Achievements = new List<Achievement> ();
                HasMore = false;
            }

            result.Value = this;
            return result;
        }
示例#5
0
        public void Load(Action<KnetikResult<Leaderboard>> cb)
        {
            string identifier;
            if (ID > 0)
            {
                identifier = ID.ToString();
            } else {
                identifier = UniqueKey;
            }
            Client.GetLeaderboard(identifier, Level, (res) => {
                var result = new KnetikResult<Leaderboard> {
                    Response = res
                };
                if (!res.IsSuccess) {
                    cb(result);
                    return;
                }
                Response = res;

                this.Deserialize(res.Body["result"]);

                result.Value = this;
                cb(result);
            });
        }
示例#6
0
        private KnetikResult<Game> OnLoadWithGame(KnetikApiResponse res)
        {
            var result = new KnetikResult<Game> {
                Response = res
            };
            if (!res.IsSuccess) {
                return result;
            }
            Response = res;

            if (res.Body["result"]["product_item"].AsObject == null) {
                result.Response.Status = KnetikApiResponse.StatusType.Error;
                result.Response.ErrorMessage = "Item not found";
                return result;
            }

            Game game = new Game(Client);
            result.Value = game;
            this.Deserialize(res.Body["result"]);
            game.Deserialize(res.Body["result"]["product_item"]);
            return result;
        }
示例#7
0
        private KnetikResult<UserInfo> OnLoad(KnetikApiResponse res)
        {
            var result = new KnetikResult<UserInfo> {
                Response = res
            };
            if (!res.IsSuccess)
            {
                return result;
            }
            Response = res;

            this.Deserialize(res.Body ["result"]);

            result.Value = this;
            return result;
        }
示例#8
0
        public void SetStatus(string status, Action<KnetikResult<Cart>> cb)
        {
            Client.CartStatus(status, (res) => {
                var result = new KnetikResult<Cart> {
                    Response = res
                };
                if (!res.IsSuccess) {
                    cb(result);
                    return;
                }

                Status = status;

                result.Value = this;
                cb(result);
            });
        }
示例#9
0
        public void QuickPurchase(CatalogSku sku, Action<KnetikResult<Cart>> cb)
        {
            Client.CartGet((res) => {
                if (res.IsSuccess) {
                    KnetikJSONNode existingItems = res.Body["result"]["items"];
                    foreach (KnetikJSONNode json in existingItems.Children) {
                        Client.CartModify(json["catalog_id"].AsInt, json["sku_id"].AsInt, 0);
                    }
                }

                Client.CartAdd(sku.CatalogID, sku.ID, 1, (addResponse) => {
                    var result = new KnetikResult<Cart> {
                        Response = addResponse
                    };
                    if (!addResponse.IsSuccess) {
                        cb(result);
                        return;
                    }

                    Client.CartCheckout((checkoutResponse) => {
                        result.Response = checkoutResponse;

                        if (!checkoutResponse.IsSuccess) {
                            cb(result);
                            return;
                        }

                        result.Value = this;
                        cb(result);
                    });
                });
            });
        }
示例#10
0
        public void Load(Action<KnetikResult<Cart>> cb)
        {
            Client.CartGet ((res) => {
                var result = new KnetikResult<Cart> {
                    Response = res
                };
                if (!res.IsSuccess) {
                    cb(result);
                    return;
                }
                Response = res;

                this.Deserialize(res.Body["result"]);

                result.Value = this;
                cb(result);
            });
        }