packages feed

rest-gen 0.14.2.1 → 0.15

raw patch · 4 files changed

+58/−22 lines, 4 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

Files

CHANGELOG.md view
@@ -1,5 +1,13 @@ # Changelog +## 0.15++* JavaScript/node.js: Clients now use and require Q promises+* JavaScript/web: Will now use Q if available, and otherwise return the normal jQuery objects++Bugfixes:+* JavaScript: Fix propagation of URLs to secure end points+ ### 0.14.2  * Generated JavaScript now also works as a Node module
files/Javascript/base.js view
@@ -1,10 +1,11 @@ var $apinamespace$ =   function (url, secureUrl)   {-    var postfix = '/v' + this.version + '/';-    var sUrl = url + postfix;-    $apinamespace$.setContext(this, sUrl);-    this.secureContextUrl = (secureUrl || url.replace(/^http:/, "https:")) + postfix;+    var postfix          = '/v' + this.version + '/';+    var contextUrl       = url + postfix;+    var secureContextUrl = (secureUrl || url.replace(/^http:/, "https:")) + postfix;++    $apinamespace$.setContext(this, contextUrl, secureContextUrl);   };  if (typeof module === "object" && module && typeof module.exports === "object")@@ -34,9 +35,12 @@ };  $apinamespace$.defaultAjaxOptions = {};+$apinamespace$.defaultHeaders = {};  function jQueryRequest (method, url, params, success, error, contentType, dataType, data, callOpts) {+  var q = window.Q || function (a) { return a };+   var callData =     { type: method     , url: url + (params ? '?' + $dollar$.param(params) : '')@@ -47,12 +51,13 @@     , dataType: dataType     , xhrFields: { withCredentials: true }     , data: data || []+    , headers: $apinamespace$.defaultHeaders     };    $apinamespace$.addObject(callData, $apinamespace$.defaultAjaxOptions);   $apinamespace$.addObject(callData, callOpts); -  return $dollar$.ajax(callData);+  return q($dollar$.ajax(callData)); }  function nodeRequest (method, url, params, onSuccess, onError, contentType, dataType, data, callOpts)@@ -71,6 +76,8 @@   else if (dataType === 'xml')     headers.Accept = 'text/xml'; +  $apinamespace$.addObject(headers, $apinamespace$.defaultHeaders);+   var callData =     { url     : url     , qs      : allParams@@ -83,17 +90,35 @@   $apinamespace$.addObject(callData, $apinamespace$.defaultAjaxOptions);   $apinamespace$.addObject(callData, callOpts); -  return require("request")(callData, callback);--  function callback (error, message, response)+  return require("q").Promise(function (resolve, reject)   {-    var parsedResponse = parse(response);-    if (message.statusCode >= 200 && message.statusCode < 300)-      onSuccess && onSuccess(parsedResponse, message);-    else if (onError)-      onError(error, parsedResponse, message);-  }+    require("request")(callData, callback); +    function callback (error, message, body)+    {+      if (message.statusCode >= 200 && message.statusCode < 300)+      {+        var parsedResponse = parse(body);+        onSuccess && onSuccess(parsedResponse, message);+        resolve(parsedResponse)+      }+      else+      {+        if (!error)+        {+          error = new Error("HTTP request error");+          error.statusCode = message.statusCode;+          error.responseBody = body;+        }++        if (onError)+          onError(error);++        reject(error);+      }+    }+  });+   function parse (response)   {     if (dataType === 'json')@@ -103,15 +128,16 @@ }  $apinamespace$.setContext =-  function (obj, url)+  function (obj, url, secureUrl)   {     obj.contextUrl = url;+    obj.secureContextUrl = secureUrl;     for (var fld in obj)     {       if (obj[fld] != undefined && obj[fld].apiObjectType != undefined && obj[fld].apiObjectType == 'resourceDir')       {-        var newUrl = url + fld.replace(/([a-z0-9])([A-Z])/g, '$dollar$1-$dollar$2').toLowerCase() + '/'-        $apinamespace$.setContext(obj[fld], newUrl);+        var postfix = fld.replace(/([a-z0-9])([A-Z])/g, '$dollar$1-$dollar$2').toLowerCase() + '/';+        $apinamespace$.setContext(obj[fld], url + postfix, secureUrl + postfix);       }     }   };
rest-gen.cabal view
@@ -1,5 +1,5 @@ name:                rest-gen-version:             0.14.2.1+version:             0.15 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
@@ -47,10 +47,10 @@ mkAccessorConstructor :: String -> ApiResource -> Code mkAccessorConstructor ns resource =   let constrName = jsDir (cleanName (resName resource))-  in functionDecl constrName ["url"] $+  in functionDecl constrName ["url", "secureUrl"] $        jsIf (code $ "this instanceof " ++ constrName)-            (proc (ns ++ ".setContext") (code "this, url"))-         <-> jsElse (ret $ call (constrName ++ ".access") (code "url"))+            (proc (ns ++ ".setContext") (code "this, url, secureUrl"))+         <-> jsElse (ret $ call (constrName ++ ".access") (code "url, secureUrl"))  mkPreFuncs :: String -> ApiResource -> Code mkPreFuncs ns node =@@ -77,7 +77,9 @@               ++ maybe "" (\i -> "' + encodeURIComponent(" ++ i ++ ") + '/") mIdent       mIdent   = fmap (jsId . cleanName . description) $ ident ai   in function fParams $-      [ var "accessor" $ new "this" . code $ "this.contextUrl + '" ++ urlPart ++ "'"+      [ var "postfix" $ "'" ++ urlPart ++ "'"+      , var "accessor" $ new "this" . code $  "this.contextUrl + postfix, "+                                           ++ "this.secureContextUrl + postfix"       , "accessor.get" .=. mkFunction ns node       , ret "accessor"       ]