rest-gen 0.16.0.4 → 0.16.1
raw patch · 4 files changed
+36/−15 lines, 4 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
Files
- CHANGELOG.md +8/−0
- files/Javascript/base.js +22/−9
- rest-gen.cabal +1/−1
- src/Rest/Gen/JavaScript.hs +5/−5
CHANGELOG.md view
@@ -1,5 +1,13 @@ # Changelog +#### 0.16.1++##### JavaScript++* When instantiating API object you can now optionally pass a `modifyRequest` argument of type `RequestObject -> RequestObject` which is called before every request.++* NodeJS: The `cookieJar` instance member is no longer available on sub resources, it can now only be accessed from the top-level api object. This is a breaking change for generated clients. It was a bad idea to use this to begin with since the cookie jar is shared across the entire api object.+ #### 0.16.0.4 * JavaScript: Minor simplification in the template.
files/Javascript/base.js view
@@ -1,14 +1,24 @@ var isNodeJs = typeof module === "object" && module && typeof module.exports === "object"; var $apinamespace$ =- function (url, secureUrl)+ function (url, secureUrl, modifyRequest) {+ var self = this; var postfix = '/v' + this.version + '/'; var contextUrl = url + postfix; var secureContextUrl = (secureUrl || url.replace(/^http:/, "https:")) + postfix;- var cookieJar = isNodeJs ? require('request').jar() : undefined; - $apinamespace$.setContext(this, contextUrl, secureContextUrl, cookieJar);+ this.cookieJar = isNodeJs ? require('request').jar() : undefined;++ if(!modifyRequest) modifyRequest = function(req) { return req; };++ var finalModifyRequest = function(req)+ {+ if (isNodeJs) req.jar = self.cookieJar;+ return modifyRequest(req);+ }++ $apinamespace$.setContext(this, contextUrl, secureContextUrl, finalModifyRequest); }; if (isNodeJs)@@ -40,7 +50,7 @@ $apinamespace$.defaultAjaxOptions = {}; $apinamespace$.defaultHeaders = {}; -function jQueryRequest (method, url, params, success, error, contentType, acceptHeader, data, callOpts)+function jQueryRequest (method, url, params, success, error, contentType, acceptHeader, data, callOpts, modifyRequest) { var q = window.Q || function (a) { return a }; @@ -59,13 +69,15 @@ , data : data || [] }; + callData = modifyRequest(callData);+ $apinamespace$.addObject(callData, $apinamespace$.defaultAjaxOptions); $apinamespace$.addObject(callData, callOpts); return q($dollar$.ajax(callData)); } -function nodeRequest (method, url, params, onSuccess, onError, contentType, acceptHeader, data, callOpts, cookieJar)+function nodeRequest (method, url, params, onSuccess, onError, contentType, acceptHeader, data, callOpts, modifyRequest) { var allParams = {}; $apinamespace$.addObject(allParams, params);@@ -85,11 +97,12 @@ , qs : allParams , method : method , headers : headers- , jar : cookieJar }; if (data) callData.body = data; + callData = modifyRequest(callData);+ $apinamespace$.addObject(callData, $apinamespace$.defaultAjaxOptions); $apinamespace$.addObject(callData, callOpts); @@ -144,17 +157,17 @@ } $apinamespace$.setContext =- function (obj, url, secureUrl, cookieJar)+ function (obj, url, secureUrl, modifyRequest) { obj.contextUrl = url; obj.secureContextUrl = secureUrl;- obj.cookieJar = cookieJar;+ obj.modifyRequest = modifyRequest; for (var fld in obj) { if (obj[fld] != undefined && obj[fld].apiObjectType != undefined && obj[fld].apiObjectType == 'resourceDir') { var postfix = fld.replace(/([a-z0-9])([A-Z])/g, '$dollar$1-$dollar$2').toLowerCase() + '/';- $apinamespace$.setContext(obj[fld], url + postfix, secureUrl + postfix, cookieJar);+ $apinamespace$.setContext(obj[fld], url + postfix, secureUrl + postfix, modifyRequest); } } };
rest-gen.cabal view
@@ -1,5 +1,5 @@ name: rest-gen-version: 0.16.0.4+version: 0.16.1 description: Documentation and client generation from rest definition. synopsis: Documentation and client generation from rest definition. maintainer: code@silk.co
src/Rest/Gen/JavaScript.hs view
@@ -51,10 +51,10 @@ mkAccessorConstructor :: String -> ApiResource -> Code mkAccessorConstructor ns resource = let constrName = jsDir (cleanName (resName resource))- in functionDecl constrName ["url", "secureUrl", "cookieJar"] $+ in functionDecl constrName ["url", "secureUrl", "modifyRequest"] $ jsIf (code $ "this instanceof " ++ constrName)- (proc (ns ++ ".setContext") (code "this, url, secureUrl, cookieJar"))- <-> jsElse (ret $ call (constrName ++ ".access") (code "url, secureUrl, cookieJar"))+ (proc (ns ++ ".setContext") (code "this, url, secureUrl, modifyRequest"))+ <-> jsElse (ret $ call (constrName ++ ".access") (code "url, secureUrl, modifyRequest")) mkPreFuncs :: String -> ApiResource -> Code mkPreFuncs ns node =@@ -84,7 +84,7 @@ [ var "postfix" $ "'" ++ urlPart ++ "'" , var "accessor" $ new "this" . code $ "this.contextUrl + postfix, " ++ "this.secureContextUrl + postfix, "- ++ "this.cookieJar"+ ++ "this.modifyRequest" , "accessor.get" .=. mkFunction ns node , ret "accessor" ]@@ -111,7 +111,7 @@ , string $ mOut , maybe (code "undefined") (\(p, _, f) -> f (code p)) mInp , code "callOpts"- , code "this.cookieJar"+ , code "this.modifyRequest" ] resourceLoc :: String -> ApiResource -> String