From 8bf5b7f2e3be707523d202066f0c14dcd172f46a Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Mon, 28 Sep 2015 19:22:55 -0400 Subject: build --- .../platforms/ios/www/js/lib/blogs/ArchiveView.js | 8 +- .../platforms/ios/www/js/lib/blogs/HubView.js | 14 +- .../platforms/ios/www/js/lib/blogs/StoryView.js | 8 +- .../platforms/ios/www/js/lib/nav/CurtainView.js | 8 + .../platforms/ios/www/js/lib/nav/LoginView.js | 2 + .../platforms/ios/www/js/lib/nav/NavView.js | 4 +- .../ios/www/js/lib/products/CollectionView.js | 2 +- StoneIsland/platforms/ios/www/js/sdk/_sdk.js | 21 +++ StoneIsland/platforms/ios/www/js/sdk/account.js | 54 ++++++ StoneIsland/platforms/ios/www/js/sdk/address.js | 38 ++++ StoneIsland/platforms/ios/www/js/sdk/auth.js | 35 ++++ StoneIsland/platforms/ios/www/js/sdk/cart.js | 204 +++++++++++++++++++++ StoneIsland/platforms/ios/www/js/sdk/payment.js | 72 ++++++++ StoneIsland/platforms/ios/www/js/sdk/product.js | 25 +++ StoneIsland/platforms/ios/www/js/sdk/sdk.js | 25 --- StoneIsland/platforms/ios/www/js/sdk/shipping.js | 82 +++++++++ 16 files changed, 559 insertions(+), 43 deletions(-) create mode 100644 StoneIsland/platforms/ios/www/js/sdk/_sdk.js create mode 100644 StoneIsland/platforms/ios/www/js/sdk/account.js create mode 100644 StoneIsland/platforms/ios/www/js/sdk/address.js create mode 100644 StoneIsland/platforms/ios/www/js/sdk/auth.js create mode 100644 StoneIsland/platforms/ios/www/js/sdk/cart.js create mode 100644 StoneIsland/platforms/ios/www/js/sdk/payment.js create mode 100644 StoneIsland/platforms/ios/www/js/sdk/product.js delete mode 100644 StoneIsland/platforms/ios/www/js/sdk/sdk.js create mode 100644 StoneIsland/platforms/ios/www/js/sdk/shipping.js (limited to 'StoneIsland/platforms/ios/www/js') diff --git a/StoneIsland/platforms/ios/www/js/lib/blogs/ArchiveView.js b/StoneIsland/platforms/ios/www/js/lib/blogs/ArchiveView.js index 31dfd743..34e8b109 100644 --- a/StoneIsland/platforms/ios/www/js/lib/blogs/ArchiveView.js +++ b/StoneIsland/platforms/ios/www/js/lib/blogs/ArchiveView.js @@ -21,10 +21,10 @@ var ArchiveView = View.extend({ this.$loader.hide() this.$content.empty() this.data.forEach(function(row){ - var t = this.template.replace({{image}}, row.image.url) - .replace({{code}}, row.code) - .replace({{title}}, row.title) - .replace({{body}}, row.body) + var t = this.template.replace(/{{image}}/, row.image.url) + .replace(/{{code}}/, row.code) + .replace(/{{title}}/, row.title) + .replace(/{{body}}/, row.body) this.$content.append(t) }.bind(this)) }, diff --git a/StoneIsland/platforms/ios/www/js/lib/blogs/HubView.js b/StoneIsland/platforms/ios/www/js/lib/blogs/HubView.js index 88ae6f1f..ea9b3048 100644 --- a/StoneIsland/platforms/ios/www/js/lib/blogs/HubView.js +++ b/StoneIsland/platforms/ios/www/js/lib/blogs/HubView.js @@ -21,13 +21,13 @@ var HubView = View.extend({ this.$loader.hide() this.$content.empty() this.data.forEach(function(row){ - var t = this.template.replace({{image}}, row.image.url) - .replace({{date}}, row.date) - .replace({{code}}, row.code) - .replace({{title}}, row.title) - .replace({{subtitle}}, row.subtitle) - .replace({{link}}, row.link) - .replace({{body}}, row.body) + var t = this.template.replace(/{{image}}/, row.image.url) + .replace(/{{date}}/, row.date) + .replace(/{{code}}/, row.code) + .replace(/{{title}}/, row.title) + .replace(/{{subtitle}}/, row.subtitle) + .replace(/{{link}}/, row.link) + .replace(/{{body}}/, row.body) this.$content.append(t) }.bind(this)) }, diff --git a/StoneIsland/platforms/ios/www/js/lib/blogs/StoryView.js b/StoneIsland/platforms/ios/www/js/lib/blogs/StoryView.js index 0f03a518..7f9b30a1 100644 --- a/StoneIsland/platforms/ios/www/js/lib/blogs/StoryView.js +++ b/StoneIsland/platforms/ios/www/js/lib/blogs/StoryView.js @@ -21,10 +21,10 @@ var StoryView = View.extend({ this.$loader.hide() this.$content.empty() this.data.forEach(function(row){ - var t = this.template.replace({{image}}, row.image.url) - .replace({{date}}, row.date) - .replace({{title}}, row.title) - .replace({{body}}, row.body) + var t = this.template.replace(/{{image}}/, row.image.url) + .replace(/{{date}}/, row.date) + .replace(/{{title}}/, row.title) + .replace(/{{body}}/, row.body) this.$content.append(t) }.bind(this)) }, diff --git a/StoneIsland/platforms/ios/www/js/lib/nav/CurtainView.js b/StoneIsland/platforms/ios/www/js/lib/nav/CurtainView.js index 30c3190e..ba10e232 100644 --- a/StoneIsland/platforms/ios/www/js/lib/nav/CurtainView.js +++ b/StoneIsland/platforms/ios/www/js/lib/nav/CurtainView.js @@ -9,6 +9,14 @@ var CurtainView = View.extend({ initialize: function(){ }, + show: function(){ + this.$el.addClass("visible") + }, + + hide: function(){ + this.$el.removeClass("visible") + }, + click: function(){ if (document.body.classList.contains("nav")) { app.nav.hide() diff --git a/StoneIsland/platforms/ios/www/js/lib/nav/LoginView.js b/StoneIsland/platforms/ios/www/js/lib/nav/LoginView.js index de534e32..60f6263e 100644 --- a/StoneIsland/platforms/ios/www/js/lib/nav/LoginView.js +++ b/StoneIsland/platforms/ios/www/js/lib/nav/LoginView.js @@ -21,10 +21,12 @@ var LoginView = View.extend({ this.$form.hide() this.$email.val("") this.$password.val("") + app.curtain.show() document.body.classList.add("login") }, hide: function(){ + app.curtain.hide() document.body.classList.remove("login") }, diff --git a/StoneIsland/platforms/ios/www/js/lib/nav/NavView.js b/StoneIsland/platforms/ios/www/js/lib/nav/NavView.js index c9eb2d4e..3949c3c5 100644 --- a/StoneIsland/platforms/ios/www/js/lib/nav/NavView.js +++ b/StoneIsland/platforms/ios/www/js/lib/nav/NavView.js @@ -22,12 +22,12 @@ var NavView = View.extend({ show: function(){ $("body").addClass("nav") - $("#curtain").show() + app.curtain.show() }, hide: function(){ $("body").removeClass("nav") - $("#curtain").hide() + app.curtain.hide() }, store: function(){ diff --git a/StoneIsland/platforms/ios/www/js/lib/products/CollectionView.js b/StoneIsland/platforms/ios/www/js/lib/products/CollectionView.js index 5d4e45f2..71d07723 100644 --- a/StoneIsland/platforms/ios/www/js/lib/products/CollectionView.js +++ b/StoneIsland/platforms/ios/www/js/lib/products/CollectionView.js @@ -26,7 +26,7 @@ var CollectionView = View.extend({ fetch: function(){ this.$loader.show() - sdk.fetch_collection({ + sdk.product.fetch_collection({ gallery_id: 31483, // FOCUS ON CAMO success: this.populate.bind(this) }) diff --git a/StoneIsland/platforms/ios/www/js/sdk/_sdk.js b/StoneIsland/platforms/ios/www/js/sdk/_sdk.js new file mode 100644 index 00000000..ce68da62 --- /dev/null +++ b/StoneIsland/platforms/ios/www/js/sdk/_sdk.js @@ -0,0 +1,21 @@ +var sdk = (function(){ + var sdk = {} + + // var endpoint = "https://secure.api.yoox.biz/" + var endpoint = "https://sandbox.api.yoox.biz/" + + sdk.path = function(api, path){ + return endpoint + api + "/STONEISLAND_US/" + path + } + + sdk.image = function(code){ + return "http://cdn.yoox.biz/" + code.substr(0,2) + "/" + code + "_11_f.jpg" + } + + $.ajaxSetup({ + // possibly: application/json; charset=utf-8" + contentType: "application/json", + }) + + return sdk +})() \ No newline at end of file diff --git a/StoneIsland/platforms/ios/www/js/sdk/account.js b/StoneIsland/platforms/ios/www/js/sdk/account.js new file mode 100644 index 00000000..a1498e76 --- /dev/null +++ b/StoneIsland/platforms/ios/www/js/sdk/account.js @@ -0,0 +1,54 @@ +sdk.account = (function(){ + + var user_id, access_token + + // https://gist.github.com/fanfare/d18498e7fa25acbd4486 + var account = {} + account.signup = function(opt){ + $.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: opt.data, + success: function(data){ + console.log(data) + user_id = data['UserAccount']['UserId'] + access_token = data['UserAccount']['AccessToken'] + + auth.set_user(user_id, access_token, name) + + opt.success(data) + }, + error: opt.error, + }) + } + + account.login = function(opt){ + $.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: opt.data, + success: function(data){ + console.log(data) + auth.user_id = data['UserAccount']['UserId'] + auth.access_token = data['UserAccount']['AccessToken'] + + // why bother? + // auth.set_user(user_id, access_token, name) + + opt.success(data) + }, + error: opt.error, + }) + } + + return account + +})() diff --git a/StoneIsland/platforms/ios/www/js/sdk/address.js b/StoneIsland/platforms/ios/www/js/sdk/address.js new file mode 100644 index 00000000..16fc2dc4 --- /dev/null +++ b/StoneIsland/platforms/ios/www/js/sdk/address.js @@ -0,0 +1,38 @@ +sdk.address = (function(){ + var address = {} + + address.add = function(opt){ + $.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: opt.data, + success: function(data){ + console.log(data) + opt.success(data) + }, + error: opt.error, + }) + } + + address.list = function(opt){ + $.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, + }) + } + +})() \ No newline at end of file diff --git a/StoneIsland/platforms/ios/www/js/sdk/auth.js b/StoneIsland/platforms/ios/www/js/sdk/auth.js new file mode 100644 index 00000000..911da902 --- /dev/null +++ b/StoneIsland/platforms/ios/www/js/sdk/auth.js @@ -0,0 +1,35 @@ +/* + 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 = (function(){ + var auth = {} + + auth.appname = "{API-TEST}" + auth.apikey = "{API-KEY}" + auth.device = "smartphone" + + auth.access_token = "" + auth.user_id = -1 + auth.name = name + + // ios: integrate keychain api + // android: cordova.file.externalRootDirectory api + + auth.set_user = function(user_id, access_token, name){ + // persist user data + auth.user_id = user_id + auth.access_token = access_token + auth.name = name + } + auth.get_user = function(cb){ + // fetch user data + } + + return auth +})() \ No newline at end of file diff --git a/StoneIsland/platforms/ios/www/js/sdk/cart.js b/StoneIsland/platforms/ios/www/js/sdk/cart.js new file mode 100644 index 00000000..3c16feae --- /dev/null +++ b/StoneIsland/platforms/ios/www/js/sdk/cart.js @@ -0,0 +1,204 @@ +sdk.cart = (function(){ + var cart = {} + + cart.id = "" + cart.token = "" + + // https://gist.github.com/fanfare/9a50c524aea417d0bf3e + cart.initialize = function(opt){ + $.ajax({ + method: "POST", + url: sdk.path("Cart.API/1.6", "carts.json"), + headers: { + "x-yoox-appname": auth.appname, + "x-yoox-device": auth.device, + }, + data: opt.data, + success: function(data){ + console.log(data) + cart.id = data["CartSession"]["CartId"] + cart.token = data["CartSession"]["CartToken"] + opt.success(data) + }, + error: opt.error, + }) + } + + cart.set_user = function(opt){ + $.ajax({ + method: "PUT", + url: sdk.path("Cart.API/1.6", "carts.json"), + headers: { + "x-yoox-appname": auth.appname, + "x-yoox-cart-token": cart.token, + }, + data: { + "UserId": auth.user_id, + "UserToken": auth.access_token, + }, + success: function(data){ + console.log(data) + opt.success(data) + }, + error: opt.error, + }) + } + + // Code10, Size, Section + cart.add_item = function(opt){ + $.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: opt.data, + success: function(data){ + console.log(data) + opt.success(data) + }, + error: opt.error, + }) + } + + cart.delete_item = function(opt){ + $.ajax({ + method: "DELETE", + url: sdk.path("Cart.API/1.6", "carts/" + cart.id + + "/items/" + opt.code10 + + "/" + opt.size + ".json"), + headers: { + "x-yoox-appname": auth.appname, + "x-yoox-cart-token": cart.token, + }, + success: function(data){ + console.log(data) + opt.success(data) + }, + error: opt.error, + }) + } + + cart.get_status = function(opt){ + $.ajax({ + method: "GET", + url: sdk.path("Cart.API/1.6", "carts/" + cart.id), + headers: { + "x-yoox-appname": auth.appname, + "x-yoox-cart-token": cart.token, + "x-yoox-device": auth.device, + }, + data: { + "UserId": auth.user_id, + "UserToken": auth.access_token, + }, + success: function(data){ + console.log(data) + opt.success(data) + }, + error: opt.error, + }) + } + + // NOTE: data might be wrapped in a Receiver object + cart.set_shipping_address = function(opt){ + $.ajax({ + method: "PUT", + url: sdk.path("Cart.API/1.6", "receiver.json"), + headers: { + "x-yoox-appname": auth.appname, + "x-yoox-cart-token": cart.token, + }, + data: 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){ + $.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: opt.data, + success: function(data){ + console.log(data) + opt.success(data) + }, + error: opt.error, + }) + } + + // use with full CC data if not storing it in wallet + cart.set_credit_card = function(opt){ + $.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: 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){ + $.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: { // NB may be wrapped in UserCreditCard object + "Guid": opt.guid, + "UserId": auth.user_id, + "AccessToken": auth.access_token, + "Cvv": opt.cvv, + "Issue": opt.issue, + }, + success: function(data){ + console.log(data) + opt.success(data) + }, + error: opt.error, + }) + } + + cart.finalize = function(opt){ + $.ajax({ + method: "PUT", + 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: 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/ios/www/js/sdk/payment.js b/StoneIsland/platforms/ios/www/js/sdk/payment.js new file mode 100644 index 00000000..048cde4b --- /dev/null +++ b/StoneIsland/platforms/ios/www/js/sdk/payment.js @@ -0,0 +1,72 @@ +sdk.payment = (function(){ + var payment = {} + + payment.list_credit_cards = function(opt){ + $.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){ + console.log(data) + opt.success(data) + }, + error: opt.error, + }) + } + + payment.add_credit_card = function(opt){ + $.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: opt.data, + success: function(data){ + console.log(data) + opt.success(data) + }, + error: opt.error, + }) + } + + payment.delete_credit_card = function(opt){ + $.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, + }, + success: function(data){ + console.log(data) + opt.success(data) + }, + error: opt.error, + }) + } + + payment.get_payment_types = function(opt){ + $.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/ios/www/js/sdk/product.js b/StoneIsland/platforms/ios/www/js/sdk/product.js new file mode 100644 index 00000000..c904eb32 --- /dev/null +++ b/StoneIsland/platforms/ios/www/js/sdk/product.js @@ -0,0 +1,25 @@ +sdk.product = (function(){ + var product = {} + + product.fetch_collection = function(opt){ + $.ajax({ + method: "GET", + url: sdk.path("Search.API/1.2", "search.json"), + data: { format: "full", gallery: opt.gallery_id }, + success: opt.success, + error: opt.error, + }) + } + + // https://gist.github.com/fanfare/2d25d1b36944188948ff + product.item = function(opt){ + $.ajax({ + method: "GET", + url: sdk.path("Item.API/1.0", "item/" + data.code + ".json"), + success: opt.success, + error: opt.error, + }) + } + + return product +})() \ No newline at end of file diff --git a/StoneIsland/platforms/ios/www/js/sdk/sdk.js b/StoneIsland/platforms/ios/www/js/sdk/sdk.js deleted file mode 100644 index 893d3fae..00000000 --- a/StoneIsland/platforms/ios/www/js/sdk/sdk.js +++ /dev/null @@ -1,25 +0,0 @@ -var sdk = (function(){ - var sdk = {} - - // var endpoint = "https://secure.api.yoox.biz/" - var endpoint = "https://sandbox.api.yoox.biz/" - - sdk.path = function(api, path){ - return endpoint + api + "/STONEISLAND_US/" + path - } - - sdk.fetch_collection = function(opt){ - $.ajax({ - method: "GET", - url: sdk.path("Search.API/1.2", "search.json"), - data: { format: "full", gallery: opt.gallery_id }, - success: opt.success, - }) - } - - sdk.image = function(code){ - return "http://cdn.yoox.biz/" + code.substr(0,2) + "/" + code + "_11_f.jpg" - } - - return sdk -})() diff --git a/StoneIsland/platforms/ios/www/js/sdk/shipping.js b/StoneIsland/platforms/ios/www/js/sdk/shipping.js new file mode 100644 index 00000000..400d3199 --- /dev/null +++ b/StoneIsland/platforms/ios/www/js/sdk/shipping.js @@ -0,0 +1,82 @@ +sdk.shipping = (function(){ + var shipping = {} + + // https://gist.github.com/fanfare/edb524128461b573d833 + + // BOX TYPE + + shipping.get_box_types = function(opt){ + $.ajax({ + method: "GET", + url: sdk.path("Cart.API/1.6", "carts/" + cart.id + "/availableBoxTypes.json"), + headers: { + "x-yoox-appname": auth.appname, + "x-yoox-cart-token": cart.token, + }, + success: function(data){ + console.log(data) + opt.success(data['BoxTypes']['Types']) + }, + error: opt.error, + }) + } + + shipping.set_box_type = function(opt){ + $.ajax({ + method: "PUT", + url: sdk.path("Cart.API/1.6", "carts/" + cart.id + "/boxType.json"), + headers: { + "x-yoox-appname": auth.appname, + "x-yoox-cart-token": cart.token, + }, + data: { + "Type": opt.type, + }, + success: function(data){ + console.log(data) + opt.success(data) + }, + error: opt.error, + }) + } + + + // DELIVERY TYPES + + shipping.get_delivery_types = function(opt){ + $.ajax({ + method: "GET", + url: sdk.path("Cart.API/1.6", "carts/" + cart.id + "/availableDeliveryTypes.json"), + headers: { + "x-yoox-appname": auth.appname, + "x-yoox-cart-token": cart.token, + }, + success: function(data){ + console.log(data) + opt.success(data['DeliveryTypes']['Types']) + }, + error: opt.error, + }) + } + + shipping.set_delivery_type = function(opt){ + $.ajax({ + method: "PUT", + url: sdk.path("Cart.API/1.6", "carts/" + cart.id + "/availableBoxTypes.json"), + headers: { + "x-yoox-appname": auth.appname, + "x-yoox-cart-token": cart.token, + }, + data: { + "Id": opt.id, + }, + success: function(data){ + console.log(data) + opt.success(data) + }, + error: opt.error, + }) + } + + return shipping +})() \ No newline at end of file -- cgit v1.2.3-70-g09d2