From 2cfd7d16f6ec795f15936ed22f632267f65a43a1 Mon Sep 17 00:00:00 2001 From: Bruno Sales Date: Thu, 18 Apr 2013 23:16:49 -0300 Subject: [PATCH] Suporte pra enviar dados via json. Adicionado parametro required. Adicionado suporte para parametros no header. Resolvido erro para parametros que possuiam ponto no nome. --- src/main/js/controllers/TryingController.js | 44 ++++++++++++++++++++- src/main/js/models/EndpointModel.js | 2 + src/main/js/models/ParamModel.js | 12 +++++- src/main/templates/tryingTemplate.html | 2 +- 4 files changed, 56 insertions(+), 4 deletions(-) diff --git a/src/main/js/controllers/TryingController.js b/src/main/js/controllers/TryingController.js index ed2a2c8..c12a0c5 100644 --- a/src/main/js/controllers/TryingController.js +++ b/src/main/js/controllers/TryingController.js @@ -14,13 +14,30 @@ define(function(){ // Read the method var method = endpoint.get("method").trim().toLowerCase(); + //Read jsonType + var className = endpoint.get("className"); + var jsonType = endpoint.get("jsonType"); + // Read the parameters var ajaxParams = {}; + var requiredMissing = false; + var headers = {}; _.each(params, function(param){ var name = param.model.get("name"); - var value = getValueFrom( param.el ); + var paramel = param.el; + + if (name.indexOf('.') !== -1) { + paramel = param.el.prevObject; + } + + var value = getValueFrom( paramel ); + var required = param.model.get("required"); + + if (required && value === null) { + requiredMissing = true; + } // URL param? if( param.model.get("urlParam") ) { @@ -28,7 +45,13 @@ define(function(){ // Replace all occurrences on URL endpointUrl = endpointUrl.split("{" + name + "}").join(value); - } else if( value != null ) { + // Header param? + } else if ( param.model.get("headerParam" ) ) { + + //Set this as header param + headers[ name ] = value; + + } else if ( value != null ) { // Add to send on Ajax request if( !ajaxParams[ name ] ) { @@ -46,6 +69,19 @@ define(function(){ }); + //Check if need to create a json + if ( jsonType && className) { + var obj = new Object(); + obj[className] = ajaxParams; + ajaxParams = JSON.stringify(obj); + } + + //Check if missing a required parameter + if (requiredMissing) { + APIBuddy.trigger( "updateStatus", {label: "Missing required parameter", className: "status-red"} ); + return; + } + // Should we send the method as a parameter? if( Config.methodParam ) { @@ -79,8 +115,12 @@ define(function(){ data: ajaxParams, + headers: headers, + traditional: traditionalSerialization, + contentType: "application/json", + dataType: "text", crossDomain: true, diff --git a/src/main/js/models/EndpointModel.js b/src/main/js/models/EndpointModel.js index 03808c7..db5e82b 100644 --- a/src/main/js/models/EndpointModel.js +++ b/src/main/js/models/EndpointModel.js @@ -8,6 +8,8 @@ define(function(){ dynamicParams: false, url: "", method: "GET", + jsonType: false, + className: null, params: [], errors: [] }, diff --git a/src/main/js/models/ParamModel.js b/src/main/js/models/ParamModel.js index 3ada4ad..e2de84b 100644 --- a/src/main/js/models/ParamModel.js +++ b/src/main/js/models/ParamModel.js @@ -11,7 +11,9 @@ define(function(){ globalParam: false, urlParam: false, multiValue: false, - multipart: false + multipart: false, + required: false, + headerParam: false }, getLabel: function() { @@ -21,6 +23,14 @@ define(function(){ } return this.get("label"); + }, + + getDescription: function () { + if (this.get("required")) { + return this.get("description") + ' (REQUIRED)'; + } + + return this.get("description"); } }); diff --git a/src/main/templates/tryingTemplate.html b/src/main/templates/tryingTemplate.html index 6e47689..e09e2a7 100644 --- a/src/main/templates/tryingTemplate.html +++ b/src/main/templates/tryingTemplate.html @@ -68,7 +68,7 @@

[<%= method %>] <%= label %>

- <%= param.get("description") %> + <%= param.getDescription() %>