diff options
| author | Jules Laplace <jules@okfoc.us> | 2015-11-04 01:27:57 -0500 |
|---|---|---|
| committer | Jules Laplace <jules@okfoc.us> | 2015-11-04 01:27:57 -0500 |
| commit | 9dd3ae274650fba0deff45f04a666fe3ec5828a9 (patch) | |
| tree | 9e9af338d35eefe99f33c185192f1a0fe7dd0140 | |
| parent | bd475ae6ae43cbe1d937ab7c4326ac0dda9bc81f (diff) | |
| parent | 80f1271c496e8e9af6c3b746d1481e23363add61 (diff) | |
merge
| -rw-r--r-- | StoneIsland/platforms/ios/StoneIsland.xcodeproj/project.xcworkspace/xcuserdata/jules.xcuserdatad/UserInterfaceState.xcuserstate | bin | 13540 -> 13291 bytes | |||
| -rw-r--r-- | StoneIsland/platforms/ios/www/js/index.js | 2 | ||||
| -rw-r--r-- | StoneIsland/platforms/ios/www/js/lib/products/ProductView.js | 2 | ||||
| -rw-r--r-- | StoneIsland/platforms/ios/www/js/sdk/_sdk.js | 16 | ||||
| -rw-r--r-- | StoneIsland/www/js/index.js | 2 | ||||
| -rw-r--r-- | StoneIsland/www/js/sdk/_sdk.js | 17 | ||||
| -rw-r--r-- | StoneIsland/www/js/sdk/cart.js | 1 | ||||
| -rw-r--r-- | proxy/index.js | 172 | ||||
| -rw-r--r-- | test/lib/promise.js | 2 | ||||
| -rw-r--r-- | test/test/01-product.js | 5 | ||||
| -rw-r--r-- | test/test/02-login.js | 2 | ||||
| -rw-r--r-- | test/test/03-address.js | 43 | ||||
| -rw-r--r-- | test/test/04-cart.js | 6 |
13 files changed, 163 insertions, 107 deletions
diff --git a/StoneIsland/platforms/ios/StoneIsland.xcodeproj/project.xcworkspace/xcuserdata/jules.xcuserdatad/UserInterfaceState.xcuserstate b/StoneIsland/platforms/ios/StoneIsland.xcodeproj/project.xcworkspace/xcuserdata/jules.xcuserdatad/UserInterfaceState.xcuserstate Binary files differindex 12703a70..51158e5f 100644 --- a/StoneIsland/platforms/ios/StoneIsland.xcodeproj/project.xcworkspace/xcuserdata/jules.xcuserdatad/UserInterfaceState.xcuserstate +++ b/StoneIsland/platforms/ios/StoneIsland.xcodeproj/project.xcworkspace/xcuserdata/jules.xcuserdatad/UserInterfaceState.xcuserstate diff --git a/StoneIsland/platforms/ios/www/js/index.js b/StoneIsland/platforms/ios/www/js/index.js index 332e780d..e0b08351 100644 --- a/StoneIsland/platforms/ios/www/js/index.js +++ b/StoneIsland/platforms/ios/www/js/index.js @@ -5,7 +5,7 @@ var app = (function(){ app.bind() app.build() - sdk.init({ production: true }) + sdk.init({ env: "test" }) if (window.cordova) { document.addEventListener('deviceready', app.ready, false) diff --git a/StoneIsland/platforms/ios/www/js/lib/products/ProductView.js b/StoneIsland/platforms/ios/www/js/lib/products/ProductView.js index e87fa398..76527c8b 100644 --- a/StoneIsland/platforms/ios/www/js/lib/products/ProductView.js +++ b/StoneIsland/platforms/ios/www/js/lib/products/ProductView.js @@ -44,7 +44,7 @@ var ProductView = View.extend({ load: function(data){ var name_partz = data['ModelNames'].split(' ') var num = name_partz.shift() - var title = name_parts.join(' ') + var title = name_partz.join(' ') var type = data['MicroCategory'].toUpperCase() var price = "$" + data['DiscountedPrice'] + ".00" var size = data['Sizes'][0] diff --git a/StoneIsland/platforms/ios/www/js/sdk/_sdk.js b/StoneIsland/platforms/ios/www/js/sdk/_sdk.js index a7ecf6d3..31fd96ca 100644 --- a/StoneIsland/platforms/ios/www/js/sdk/_sdk.js +++ b/StoneIsland/platforms/ios/www/js/sdk/_sdk.js @@ -1,11 +1,21 @@ var sdk = (function(){ var sdk = {} - var endpoint = "https://sandbox.api.yoox.biz/" + var endpoint = "https://secure.api.yoox.biz/" + // var endpoint = "http://api.yoox.biz/" sdk.init = function(opt){ - if (opt && opt.production) { - endpoint = "https://secure.api.yoox.biz/" + switch (opt.env) { + case 'test': + endpoint = "http://lvh.me:9090/" + break + default: + case 'development': + endpoint = "http://api.yoox.biz/" + break + case 'production': + endpoint = "https://secure.api.yoox.biz/" + break } } diff --git a/StoneIsland/www/js/index.js b/StoneIsland/www/js/index.js index a8c36ef1..e0b08351 100644 --- a/StoneIsland/www/js/index.js +++ b/StoneIsland/www/js/index.js @@ -5,7 +5,7 @@ var app = (function(){ app.bind() app.build() - sdk.init({ env: 'production' }) + sdk.init({ env: "test" }) if (window.cordova) { document.addEventListener('deviceready', app.ready, false) diff --git a/StoneIsland/www/js/sdk/_sdk.js b/StoneIsland/www/js/sdk/_sdk.js index dedcd5f0..a0250f77 100644 --- a/StoneIsland/www/js/sdk/_sdk.js +++ b/StoneIsland/www/js/sdk/_sdk.js @@ -1,19 +1,20 @@ var sdk = (function(){ var sdk = {} - var endpoint = "https://sandbox.api.yoox.biz/" + var endpoint = "https://secure.api.yoox.biz/" + // var endpoint = "http://api.yoox.biz/" sdk.init = function(opt){ switch (opt.env || "development") { - case "production": - endpoint = "https://secure.api.yoox.biz/" - break - case "test": - endpoint = "http://lvh.me:4567/" + case 'test': + endpoint = "http://lvh.me:9090/" break - case "development": default: - endpoint = "https://sandbox.api.yoox.biz/" + case 'development': + endpoint = "http://api.yoox.biz/" + break + case 'production': + endpoint = "https://secure.api.yoox.biz/" break } } diff --git a/StoneIsland/www/js/sdk/cart.js b/StoneIsland/www/js/sdk/cart.js index 9f9d81f1..9fb9b11f 100644 --- a/StoneIsland/www/js/sdk/cart.js +++ b/StoneIsland/www/js/sdk/cart.js @@ -13,6 +13,7 @@ sdk.cart = (function(){ "x-yoox-appname": auth.appname, "x-yoox-device": auth.device, }, + data: "{}", // data: opt.data, success: function(data){ console.log(data) diff --git a/proxy/index.js b/proxy/index.js index 159712e3..d2d4e738 100644 --- a/proxy/index.js +++ b/proxy/index.js @@ -1,69 +1,49 @@ var http = require('http') -var najax = require('najax') -var PORT = 4567 +var https = require('https') +var path = require('path') +var fs = require('fs') +var url = require('url') -var endpoint = "https://secure.api.yoox.biz" +var PORT = 9090 -var server = http.createServer(function (req, res){ - console.log("_________________") - console.log("[200] " + req.method + " to " + req.url); - var headers = parse_headers(req) - console.log(headers) - - if (req.method != 'GET') { - var fullBody = ''; - - req.on('data', function(chunk) { - fullBody += chunk.toString(); - }); - - req.on('end', function() { - res.writeHead(200, "OK", {'Content-Type': 'text/html'}); - - // console.log(fullBody) +var server = http.createServer().listen(PORT, function(){ + console.log("Proxy listening on: http://lvh.me:%s", PORT) +}) - najax({ - method: req.method, - url: endpoint + req.url, - data: fullBody, - headers: headers, - success: respond(res), - error: respond(res), - }) - }) - } - else { -// console.log(req) - najax({ - method: req.method, - url: endpoint + req.url, - headers: headers, - success: respond(res), - error: respond(res), - }) +server.on('request', function (req, res){ + + if ( req.method == 'GET' && ! req.url.match(/API/) ) { + // public... + return stream(req, res) } -}) -server.listen(PORT, function(){ - console.log("Proxy listening on: http://localhost:%s", PORT) -}) + console.log(req.method, req.url) + + // console.log(req.headers) + + var options = {} + options.headers = get_headers(req.headers) + options.method = req.method + options.port = 443 + options.hostname = "secure.api.yoox.biz" + options.path = req.url -function parse_headers (req) { - var headers = {} - var fields = "x-yoox-appname x-yoox-account-token x-yoox-device x-yoox-api-key x-yoox-cart-token".split(" ") - fields.forEach(function(field){ - if (req.headers[field]) headers[field] = field + req.pause() + var connector = https.request(options, function(server_res) { + console.log(">> GOT", server_res.statusCode) + + server_res.pause() + res.writeHeader(server_res.statusCode, server_res.headers) + // server_res.on("data", function(s){ console.log("<<", s.toString()) }) + server_res.pipe(res) + server_res.resume() }) - return headers -} + // req.on("data", function(s){ console.log(">>", s.toString()) }) + req.on("error", function(s){ console.log("/!\\ ERROR /!\\"); console.log(s) }) + req.pipe(connector) + req.resume() -function respond(res){ - return function(data, status, xhr){ - res.writeHead(xhr.status, "OK", { 'Content-Type': 'application/json' }) - res.end(data) - console.log(xhr.status, data.length) - } -} +}) /* headers: { @@ -73,8 +53,76 @@ function respond(res){ "x-yoox-api-key": auth.apikey, "x-yoox-cart-token": cart.token, }, - - proxy content body - proxy method - proxy query string -*/
\ No newline at end of file +*/ + +function get_headers (h){ + var hh = {} + "appname account-token device api-key cart-token".split(" ").forEach(function(s){ + var key = "x-yoox-" + s + if (key in h) hh[key] = h[key] + }) + hh['Content-Type'] = "application/json" // h['content-type'] + if ('content-length' in h) hh['Content-Length'] = h['content-length'] + if ('connection' in h) hh['Connection'] = h['connection'] + return hh +} + +var mimes = { + "gif": "image/gif", + "png": "image/png", + "jpg": "image/jpeg", + "jpeg": "image/jpeg", + "html": "text/html", + "js": "application/javascript", + "css": "text/css", + "woff": "application/font-woff", + "ttf": "application/font-woff", +} + +function stream (req, res) { + var url = req.url.toLowerCase().split("?")[0] + var ext_partz = url.split("."), ext = ext_partz[ext_partz.length-1] + var mime = mimes[ext] || "application/octet-stream" + + if (! url || url == "/") { + url = "index.html" + mime = "text/html" + } + + var file = path.resolve("../StoneIsland/www/" + url) + + fs.stat(file, function(err, stats) { + if (! stats) { + // console.log(404) + res.writeHead(404) + res.end("404") + return + } + + var headers = { + "Content-Length": stats.size, + "Content-Type": mime, + } + + res.writeHead(200, "OK", headers) + + var stream = fs.createReadStream(file, { start: 0, end: stats.size }) + stream.on("open", function() { + stream.pipe(res) + }) + stream.on("error", function(err) { + console.log(err) + stream.destroy() + res.end() + }) + stream.on("close", function(){ + stream.destroy() + res.end() + }) + req.connection.setMaxListeners(50) + req.connection.on('close', function(){ + stream.destroy() + res.end() + }) + }) +} diff --git a/test/lib/promise.js b/test/lib/promise.js index ad895d90..a3638de4 100644 --- a/test/lib/promise.js +++ b/test/lib/promise.js @@ -21,10 +21,12 @@ module.exports = function(fn, data){ then: function(cb){ if (my_res) cb(my_res) else my_cb = cb + return promise }, error: function(cb){ if (my_error) cb(my_error) else error_cb = cb + return promise } } return promise diff --git a/test/test/01-product.js b/test/test/01-product.js index 2a3f1aa0..5f9ebe6e 100644 --- a/test/test/01-product.js +++ b/test/test/01-product.js @@ -15,13 +15,12 @@ describe('product', function(){ assert(data.SearchResponseFull.Results.Items.length > 0) test_item = data.SearchResponseFull.Results.Items[0] done() + }).error(function(error){ + done() }) }) - }) - describe('#item()', function(){ it('returns an item', function(done){ - // console.log( test_item ) promise(sdk.product.item, { code: test_item['Code8'] }).then(function(data){ assert(data.Header.StatusCode == 200) assert('Item' in data) diff --git a/test/test/02-login.js b/test/test/02-login.js index 5bf2cdef..e96e93b5 100644 --- a/test/test/02-login.js +++ b/test/test/02-login.js @@ -33,9 +33,7 @@ describe('account', function(){ done() }) }) - }) - describe('#login()', function(){ it('refreshes the token', function(done){ promise(sdk.account.login, { data: login_user_data }).then(function(data){ // console.log(data) diff --git a/test/test/03-address.js b/test/test/03-address.js index cecc1bf4..9cf2dab5 100644 --- a/test/test/03-address.js +++ b/test/test/03-address.js @@ -6,36 +6,37 @@ var assert = require("assert") // sdk.address.list describe('address', function(){ - - sdk.auth.access_token = "45871479f5001afc06e628c7bb8e95ffb1f71df8" - sdk.auth.user_id = 374663521 - - var new_address_data = { - "Name":"name", - "Surname":"surname", - "Address":"address", - "IsDefault":false, - "IsBillingDefault":false, - "IsOwner":false, - "ZipCode":"88040", - "City":"City", - "Province":"Province", - "Phone":"Phone", - "Mobile":"Mobile", - "Mail":"Mail", - "UserId": sdk.auth.user_id, - } describe('#add()', function(){ it('adds an address', function(done){ + + if (! sdk.auth.access_token) { + sdk.auth.access_token = "45871479f5001afc06e628c7bb8e95ffb1f71df8" + sdk.auth.user_id = 374663521 + } + + var new_address_data = { + "Name":"name", + "Surname":"surname", + "Address":"address", + "IsDefault":false, + "IsBillingDefault":false, + "IsOwner":false, + "ZipCode":"88040", + "City":"City", + "Province":"Province", + "Phone":"Phone", + "Mobile":"Mobile", + "Mail":"Mail", + "UserId": sdk.auth.user_id, + } + promise(sdk.address.add, { data: new_address_data }).then(function(data){ assert(data.Header.StatusCode == 200) done() }) }) - }) - describe('#list()', function(){ it('lists addresses', function(done){ promise(sdk.address.list, {}).then(function(data){ // console.log(data.AddressBook) diff --git a/test/test/04-cart.js b/test/test/04-cart.js index dcb65c5b..31764f5e 100644 --- a/test/test/04-cart.js +++ b/test/test/04-cart.js @@ -22,14 +22,10 @@ var assert = require("assert") // sdk.cart.finalize describe('cart', function(){ - - sdk.auth.access_token = "45871479f5001afc06e628c7bb8e95ffb1f71df8" - sdk.auth.user_id = 374663521 describe('#initialize()', function(){ it('initializes the cart', function(done){ - promise(sdk.address.add, { data: {} }).then(function(data){ - console.log(data) + promise(sdk.cart.initialize, { data: {} }).then(function(data){ assert(data.Header.StatusCode == 200) assert(sdk.cart.id !== "") assert(sdk.cart.token !== "") |
