diff options
Diffstat (limited to 'StoneIsland/platforms/android/assets/www/js/sdk')
8 files changed, 816 insertions, 0 deletions
diff --git a/StoneIsland/platforms/android/assets/www/js/sdk/_sdk.js b/StoneIsland/platforms/android/assets/www/js/sdk/_sdk.js new file mode 100755 index 00000000..b7880e50 --- /dev/null +++ b/StoneIsland/platforms/android/assets/www/js/sdk/_sdk.js @@ -0,0 +1,38 @@ +var sdk = (function(){ + var sdk = {} + + sdk.env = "development" + + var endpoint = "https://secure.api.yoox.biz/" + // var endpoint = "http://api.yoox.biz/" + + sdk.init = function(opt){ + switch (sdk.env = opt.env || "development") { + case 'test': + endpoint = "http://lvh.me:9090/" + break + default: + case 'development': + endpoint = "/" + break + case 'production': + endpoint = "https://secure.api.yoox.biz/" + break + } + } + + sdk.path = function(api, path){ + return endpoint + api + "/STONEISLAND_US/" + path + } + + sdk.image = function(code, size){ + return "http://cdn.yoox.biz/" + code.substr(0,2) + "/" + code.substr(0,8) + "_" + size + ".jpg" + } + + $.ajaxSetup({ + // possibly: application/json; charset=utf-8" + contentType: "application/json", + }) + + return sdk +})()
\ No newline at end of file diff --git a/StoneIsland/platforms/android/assets/www/js/sdk/account.js b/StoneIsland/platforms/android/assets/www/js/sdk/account.js new file mode 100755 index 00000000..3eb3f3bd --- /dev/null +++ b/StoneIsland/platforms/android/assets/www/js/sdk/account.js @@ -0,0 +1,133 @@ +sdk.account = (function(){ + + var user_id, access_token + + // https://gist.github.com/fanfare/d18498e7fa25acbd4486 + var account = {} + account.signup = function(opt){ + return $.ajax({ + method: "POST", + url: sdk.path("Account.API/1.5", "users.json"), + headers: { + "x-yoox-appname": auth.appname, + "x-yoox-api-key": auth.apikey, + }, + data: JSON.stringify( opt.data ), + success: function(data){ + user_id = data['UserAccount']['UserId'] + access_token = data['UserAccount']['AccessToken'] + + auth.set_user(user_id, access_token) + + opt.success(data) + }, + error: opt.error, + }) + } + + account.login = function(opt){ + return $.ajax({ + method: "POST", + url: sdk.path("Account.API/1.5", "authfull.json"), + headers: { + "x-yoox-appname": auth.appname, + "x-yoox-account-token": auth.access_token, + }, + data: JSON.stringify( opt.data ), + success: function(data){ + auth.user = data['UserFull'] + user_id = data['UserFull']['idUser'] + access_token = data['UserFull']['AccessToken'] + + auth.set_user(user_id, access_token) + + opt.success(data) + }, + error: opt.error, + }) + } + + account.checkin = function(opt){ + return $.ajax({ + method: "GET", + url: sdk.path("Account.API/1.5", "users/" + auth.user_id + ".json"), + headers: { + "x-yoox-appname": auth.appname, + "x-yoox-account-token": auth.access_token, + }, + data: "{}", + success: function(data){ + auth.user = data.User + opt.success(data) + }, + error: opt.error, + }) + } + + account.update = function(opt){ + return $.ajax({ + method: "PUT", + url: sdk.path("Account.API/1.5", "users/" + auth.user_id + ".json"), + headers: { + "x-yoox-appname": auth.appname, + "x-yoox-account-token": auth.access_token, + }, + data: JSON.stringify( opt.data ), + success: function(data){ + opt.success(data) + }, + error: opt.error, + }) + } + + account.update_mail_and_password = function(opt){ + return $.ajax({ + method: "PUT", + url: sdk.path("Account.API/1.5", "auth/" + auth.user_id + ".json"), + headers: { + "x-yoox-appname": auth.appname, + "x-yoox-account-token": auth.access_token, + }, + data: JSON.stringify( opt.data ), + success: function(data){ + opt.success(data) + }, + error: opt.error, + }) + } + + account.fetch_orders = function(opt){ + return $.ajax({ + method: "GET", + url: sdk.path("Account.API/1.5", "users/" + auth.user_id + "/orders.json"), + headers: { + "x-yoox-appname": auth.appname, + "x-yoox-account-token": auth.access_token, + }, + data: JSON.stringify( opt.data ), + success: function(data){ + opt.success(data) + }, + error: opt.error, + }) + } + + account.fetch_single_order = function(opt){ + return $.ajax({ + method: "GET", + url: sdk.path("Account.API/1.5", "users/" + auth.user_id + "/orders/" + opt.id + ".json"), + headers: { + "x-yoox-appname": auth.appname, + "x-yoox-account-token": auth.access_token, + }, + data: JSON.stringify( opt.data ), + success: function(data){ + opt.success(data) + }, + error: opt.error, + }) + } + + return account + +})() diff --git a/StoneIsland/platforms/android/assets/www/js/sdk/address.js b/StoneIsland/platforms/android/assets/www/js/sdk/address.js new file mode 100755 index 00000000..4fb12ad0 --- /dev/null +++ b/StoneIsland/platforms/android/assets/www/js/sdk/address.js @@ -0,0 +1,74 @@ +sdk.address = (function(){ + var address = {} + + address.list = function(opt){ + return $.ajax({ + method: "GET", + url: sdk.path("Account.API/1.5", "users/" + auth.user_id + "/addressBook.json"), + headers: { + "x-yoox-appname": auth.appname, + "x-yoox-account-token": auth.access_token, + }, + data: opt.data, + success: function(data){ + // console.log(data) + opt.success(data) + }, + error: opt.error, + }) + } + + address.add = function(opt){ + return $.ajax({ + method: "POST", + url: sdk.path("Account.API/1.5", "users/" + auth.user_id + "/addressBook/item.json"), + headers: { + "x-yoox-appname": auth.appname, + "x-yoox-account-token": auth.access_token, + }, + data: JSON.stringify( opt.data ), + success: function(data){ + // console.log(data) + opt.success(data) + }, + error: opt.error, + }) + } + + address.update = function(opt){ + return $.ajax({ + method: "PUT", + url: sdk.path("Account.API/1.5", "users/" + auth.user_id + "/addressBook/item.json"), + headers: { + "x-yoox-appname": auth.appname, + "x-yoox-account-token": auth.access_token, + }, + data: JSON.stringify( opt.data ), + success: function(data){ + // console.log(data) + opt.success(data) + }, + error: opt.error, + }) + } + + address.destroy = function(opt){ + return $.ajax({ + method: "DELETE", + url: sdk.path("Account.API/1.5", "users/" + auth.user_id + "/" + opt.id + "/addressBook.json"), + headers: { + "x-yoox-appname": auth.appname, + "x-yoox-account-token": auth.access_token, + }, + data: JSON.stringify( opt.data ), + success: function(data){ + // console.log(data) + opt.success(data) + }, + error: opt.error, + }) + } + + return address + +})()
\ No newline at end of file diff --git a/StoneIsland/platforms/android/assets/www/js/sdk/auth.js b/StoneIsland/platforms/android/assets/www/js/sdk/auth.js new file mode 100755 index 00000000..87ce60ea --- /dev/null +++ b/StoneIsland/platforms/android/assets/www/js/sdk/auth.js @@ -0,0 +1,129 @@ +/* + headers: { + "x-yoox-appname": auth.appname, + "x-yoox-account-token": auth.access_token, + "x-yoox-device": auth.device, + "x-yoox-api-key": auth.apikey, + }, +*/ + +var auth = sdk.auth = (function(){ + var auth = {} + + auth.appname = is_iphone ? "native-iphone-stoneisland/1.0.0" : "native-android-stoneisland/1.0.0" + auth.apikey = "U2FsdGVkX18fThqg9bF0/ZgE9Jg948hn8O9EXli4B2729nAESCQaexv//M5+7+za" + auth.device = "smartphone" + + auth.access_token = "" + auth.user_id = -1 + + auth.next_view = null + auth.deferred_product = null + + // ios: integrate keychain api + // android: cordova.file.externalRootDirectory api + + auth.init = function(fn){ + console.log("AUTH INIT") + auth.get_user(function(){ + if (auth.logged_in()) { + sdk.account.checkin({ + success: function(data){ + fn && fn( auth.logged_in() ) + } + }) + auth.get_cart() + } + else { + fn && fn( auth.logged_in() ) + } + }) + } + + auth.set_user = function(user_id, access_token, cb){ + auth.access_token = access_token + auth.user_id = user_id + + localStorage.setItem("yoox.access_token", access_token) + localStorage.setItem("yoox.user_id", user_id) + cb && cb() + } + auth.get_user = function(cb){ + auth.access_token = localStorage.getItem("yoox.access_token") || "" + auth.user_id = localStorage.getItem("yoox.user_id") || -1 + cb && cb() + } + auth.clear_user = function(cb){ + auth.access_token = "" + auth.user_id = -1 + localStorage.removeItem("yoox.access_token") + localStorage.removeItem("yoox.user_id") + cb && cb() + } + + auth.set_cart = function(cart_id, cart_token, cb){ + localStorage.setItem("yoox.cart_token", cart_token) + localStorage.setItem("yoox.cart_id", cart_id) + cb && cb() + } + auth.get_cart = function(cb){ + sdk.cart.token = localStorage.getItem("yoox.cart_token") || "" + sdk.cart.id = localStorage.getItem("yoox.cart_id") || -1 + cb && cb() + } + auth.clear_cart = function(cb){ + sdk.cart.token = "" + sdk.cart.id = -1 + localStorage.removeItem("yoox.cart_token") + localStorage.removeItem("yoox.cart_id") + cb && cb() + } + auth.create_cart = function(cb){ + if (auth.has_cart()) { return cb() } + sdk.cart.initialize({ + success: function(data){ + sdk.cart.set_user({ + success: function(){ + auth.set_cart(sdk.cart.id, sdk.cart.token, function(){ + cb && cb() + }) + } + }) + } + }) + } + auth.add_deferred_product_to_cart = function(cb){ + // auth.deferred_product + if (! auth.deferred_product) { + console.log("VV NO DEF PROD") + cb && cb() + return + } + sdk.cart.add_item({ + data: auth.deferred_product, + success: function(){ + console.log("ADDED ITEM") + cb && cb() + }, + error: function(data){ + console.log("ERROR ADDING ITEM", data) + cb && cb() + }, + }) + auth.deferred_product = null + app.header.increment_cart_count() + } + + auth.log_out = function(){ + auth.clear_user() + auth.clear_cart() + } + auth.logged_in = function(){ + return (auth.user_id && auth.user_id !== -1 && auth.user_id !== "undefined") + } + auth.has_cart = function(){ + return (sdk.cart.id && sdk.cart.id !== -1 && sdk.cart.id !== "undefined") + } + + return auth +})()
\ No newline at end of file diff --git a/StoneIsland/platforms/android/assets/www/js/sdk/cart.js b/StoneIsland/platforms/android/assets/www/js/sdk/cart.js new file mode 100755 index 00000000..3ff2e1d2 --- /dev/null +++ b/StoneIsland/platforms/android/assets/www/js/sdk/cart.js @@ -0,0 +1,248 @@ +sdk.cart = (function(){ + var cart = {} + + cart.id = "" + cart.token = "" + + // https://gist.github.com/fanfare/9a50c524aea417d0bf3e + cart.initialize = function(opt){ + return $.ajax({ + method: "POST", + url: sdk.path("Cart.API/1.6", "carts.json"), + headers: { + "x-yoox-appname": auth.appname, + "x-yoox-device": auth.device, + }, + data: "{}", + // data: opt.data, + success: function(data){ + cart.id = data["CartSession"]["CartId"] + cart.token = data["CartSession"]["CartToken"] + auth.set_cart( cart.id, cart.token ) + opt.success(data) + }, + error: opt.error, + }) + } + + cart.set_user = function(opt){ + return $.ajax({ + method: "PUT", + url: sdk.path("Cart.API/1.6", "carts/" + cart.id + "/user.json"), + headers: { + "x-yoox-appname": auth.appname, + "x-yoox-cart-token": cart.token, + }, + data: JSON.stringify({ + "UserId": auth.user_id, + "UserToken": auth.access_token, + }), + success: function(data){ + opt.success(data) + }, + error: opt.error, + }) + } + + // Code10, Size, Section + cart.add_item = function(opt){ + return $.ajax({ + method: "POST", + url: sdk.path("Cart.API/1.6", "carts/" + cart.id + "/items.json"), + headers: { + "x-yoox-appname": auth.appname, + "x-yoox-cart-token": cart.token, + }, + data: JSON.stringify( opt.data ), + success: function(data){ + // console.log(data) + opt.success(data) + }, + error: opt.error, + }) + } + + cart.delete_item = function(opt){ + return $.ajax({ + method: "DELETE", + url: sdk.path("Cart.API/1.6", "carts/" + cart.id + + "/items/" + opt.data.Code10 + + "/" + opt.data.Size + ".json"), + headers: { + "x-yoox-appname": auth.appname, + "x-yoox-cart-token": cart.token, + }, + data: "{}", + success: function(data){ + // console.log(data) + opt.success(data) + }, + error: opt.error, + }) + } + + cart.get_status = function(opt){ + if (! cart.id) { + return opt.error({ error: "no cart" }) + } + return $.ajax({ + method: "GET", + url: sdk.path("Cart.API/1.6", "carts/" + cart.id + ".json"), + headers: { + "x-yoox-appname": auth.appname, + "x-yoox-cart-token": cart.token, + "x-yoox-device": auth.device, + }, + success: function(data){ + if (data['Error']) { + opt.error && opt.error(data) + } + else { + opt.success(data) + } + }, + error: opt.error, + }) + } + + cart.set_shipping_address = function(opt){ + return $.ajax({ + method: "PUT", + url: sdk.path("Cart.API/1.6", "carts/" + cart.id + "/receiver.json"), + headers: { + "x-yoox-appname": auth.appname, + "x-yoox-cart-token": cart.token, + }, + data: JSON.stringify(opt.data), + success: function(data){ + // console.log(data) + opt.success(data) + }, + error: opt.error, + }) + } + + // NB: Payment type may simply be 1 (credit card) + cart.set_payment_type = function(opt){ + return $.ajax({ + method: "PUT", + url: sdk.path("Cart.API/1.6", "carts/" + cart.id + "/paymentType.json"), + headers: { + "x-yoox-appname": auth.appname, + "x-yoox-cart-token": cart.token, + }, + data: JSON.stringify( opt.data ), + success: function(data){ + // console.log(data) + opt.success(data) + }, + error: opt.error, + }) + } + + cart.get_card_types = function(opt){ + return $.ajax({ + method: "GET", + url: sdk.path("Cart.API/1.6", "cardTypes.json"), + headers: { + "x-yoox-appname": auth.appname, + "x-yoox-cart-token": cart.token, + }, + data: "", + success: function(data){ + opt.success(data) + }, + error: opt.error, + }) + } + + // use with full CC data if not storing it in wallet + cart.set_credit_card = function(opt){ + return $.ajax({ + method: "PUT", + url: sdk.path("Cart.API/1.6", "carts/" + cart.id + "/creditCard.json"), + headers: { + "x-yoox-appname": auth.appname, + "x-yoox-cart-token": cart.token, + }, + data: JSON.stringify( opt.data ), + success: function(data){ + // console.log(data) + opt.success(data) + }, + error: opt.error, + }) + } + + // use with a stored GUID + // NB: if "verification number" is 1, use CVV/CID/CVC security code + // if "verification number" is 2, use "Issue Number" + cart.use_stored_credit_card = function(opt){ + var data = { + "Guid": opt.data.guid, + "UserId": auth.user_id, + "AccessToken": auth.access_token, + } + if (opt.data.cvv) { + data["Cvv"] = opt.data.cvv + } + if (opt.data.issue) { + data["Issue"] = opt.data.issue + } + return $.ajax({ + method: "PUT", + url: sdk.path("Cart.API/1.6", "carts/" + cart.id + "/userCreditCard.json"), + headers: { + "x-yoox-appname": auth.appname, + "x-yoox-cart-token": cart.token, + }, + data: JSON.stringify(data), + success: function(data){ + // console.log(data) + opt.success(data) + }, + error: opt.error, + }) + } + + cart.secure_finalize = function(opt){ + return $.ajax({ + method: "POST", + url: sdk.path("Cart.API/1.6", "carts/" + cart.id + "/secureFinalizer.json"), + headers: { + "x-yoox-appname": auth.appname, + "x-yoox-cart-token": cart.token, + "x-yoox-device": auth.device, + }, + data: JSON.stringify( opt.data || {} ), + success: function(data){ + console.log(data) + // order number is: + // "Info": "2905Y07FA13020" + opt.success(data) + }, + error: opt.error, + }) + } + + cart.finalize = function(opt){ + return $.ajax({ + method: "POST", + url: sdk.path("Cart.API/1.6", "carts/" + cart.id + "/finalizer.json"), + headers: { + "x-yoox-appname": auth.appname, + "x-yoox-cart-token": cart.token, + }, + data: JSON.stringify( opt.data || {} ), + success: function(data){ + console.log(data) + // order number is: + // "Info": "2905Y07FA13020" + opt.success(data) + }, + error: opt.error, + }) + } + + return cart +})()
\ No newline at end of file diff --git a/StoneIsland/platforms/android/assets/www/js/sdk/payment.js b/StoneIsland/platforms/android/assets/www/js/sdk/payment.js new file mode 100755 index 00000000..283fee92 --- /dev/null +++ b/StoneIsland/platforms/android/assets/www/js/sdk/payment.js @@ -0,0 +1,72 @@ +sdk.payment = (function(){ + var payment = {} + + payment.add_credit_card = function(opt){ + return $.ajax({ + method: "POST", + url: sdk.path("Account.API/1.5", "users/" + auth.user_id + "/cards.json"), + headers: { + "x-yoox-appname": auth.appname, + "x-yoox-account-token": auth.access_token, + }, + data: JSON.stringify( opt.data ), + success: function(data){ + // console.log(data) + opt.success(data) + }, + error: opt.error, + }) + } + + payment.list_credit_cards = function(opt){ + return $.ajax({ + method: "GET", + url: sdk.path("Account.API/1.5", "users/" + auth.user_id + "/cards.json"), + headers: { + "x-yoox-appname": auth.appname, + "x-yoox-account-token": auth.access_token, + }, + data: opt.data, + success: function(data){ + opt.success(data) + }, + error: opt.error, + }) + } + + payment.delete_credit_card = function(opt){ + return $.ajax({ + method: "DELETE", + url: sdk.path("Account.API/1.5", "users/" + auth.user_id + "/cards/" + opt.guid + ".json"), + headers: { + "x-yoox-appname": auth.appname, + "x-yoox-account-token": auth.access_token, + }, + data: "{}", + success: function(data){ + // console.log(data) + opt.success(data) + }, + error: opt.error, + }) + } + + payment.get_payment_types = function(opt){ + return $.ajax({ + method: "GET", + url: sdk.path("Cart.API/1.6", "availablePaymentTypes.json"), + headers: { + "x-yoox-appname": auth.appname, + "x-yoox-device": auth.device, + }, + data: opt.data, + success: function(data){ + // console.log(data) + opt.success(data) + }, + error: opt.error, + }) + } + + return payment +})()
\ No newline at end of file diff --git a/StoneIsland/platforms/android/assets/www/js/sdk/product.js b/StoneIsland/platforms/android/assets/www/js/sdk/product.js new file mode 100755 index 00000000..55f1940a --- /dev/null +++ b/StoneIsland/platforms/android/assets/www/js/sdk/product.js @@ -0,0 +1,37 @@ +sdk.product = (function(){ + var product = {} + + var default_gallery = 31617 + + product.collection = function(opt){ + return $.ajax({ + method: "GET", + url: sdk.path("Search.API/1.2", "search.json"), + data: { format: "full", gallery: opt.gallery_id || default_gallery, productsPerPage: 100 }, + success: opt.success, + error: opt.error, + }) + } + + // https://gist.github.com/fanfare/2d25d1b36944188948ff + product.item = function(opt){ + return $.ajax({ + method: "GET", + url: sdk.path("Item.API/1.0", "item/" + opt.code + ".json"), + success: opt.success, + error: opt.error, + }) + } + + product.search = function(opt){ + return $.ajax({ + method: "GET", + url: sdk.path("Search.API/1.2", "search.json"), + data: { format: "full", gallery: opt.gallery_id || default_gallery, textSearch: opt.query, productsPerPage: 100 }, + success: opt.success, + error: opt.error, + }) + } + + return product +})()
\ No newline at end of file diff --git a/StoneIsland/platforms/android/assets/www/js/sdk/shipping.js b/StoneIsland/platforms/android/assets/www/js/sdk/shipping.js new file mode 100755 index 00000000..28a0db76 --- /dev/null +++ b/StoneIsland/platforms/android/assets/www/js/sdk/shipping.js @@ -0,0 +1,85 @@ +sdk.shipping = (function() { + var shipping = {} + + + // https://gist.github.com/fanfare/edb524128461b573d833 + + // BOX TYPE + + shipping.get_box_types = function(opt){ + return $.ajax({ + method: "GET", + url: sdk.path("Cart.API/1.6", "carts/" + sdk.cart.id + "/availableBoxTypes.json"), + headers: { + "x-yoox-appname": auth.appname, + "x-yoox-cart-token": sdk.cart.token, + }, + success: function(data){ + // console.log(data) + opt.success(data) + }, + error: opt.error, + }) + } + + shipping.set_box_type = function(opt){ + return $.ajax({ + method: "PUT", + url: sdk.path("Cart.API/1.6", "carts/" + sdk.cart.id + "/boxType.json"), + headers: { + "x-yoox-appname": auth.appname, + "x-yoox-cart-token": sdk.cart.token, + }, + data: JSON.stringify({ + "Type": opt.type, + }), + success: function(data){ + // console.log(data) + opt.success(data) + }, + error: opt.error, + }) + } + + + // DELIVERY TYPES + + // The response is different than described in the API reference.. + // https://gist.github.com/fanfare/15dfbca6a16ae6bed503 + + shipping.get_delivery_types = function(opt){ + return $.ajax({ + method: "GET", + url: sdk.path("Cart.API/1.6", "carts/" + sdk.cart.id + "/availableDeliveryTypes.json"), + headers: { + "x-yoox-appname": auth.appname, + "x-yoox-cart-token": sdk.cart.token, + }, + success: function(data){ + opt.success(data) + }, + error: opt.error, + }) + } + + shipping.set_delivery_type = function(opt){ + return $.ajax({ + method: "PUT", + url: sdk.path("Cart.API/1.6", "carts/" + sdk.cart.id + "/deliveryType.json"), + headers: { + "x-yoox-appname": auth.appname, + "x-yoox-cart-token": sdk.cart.token, + }, + data: JSON.stringify({ + "Id": opt.id, + }), + success: function(data){ + //console.log(data) + opt.success(data) + }, + error: opt.error, + }) + } + + return shipping +})() |
