Skip to content

Commit

Permalink
Merge pull request #439 from flovilmart/flovilmart.cloud-code-request…
Browse files Browse the repository at this point in the history
…-params

Adds ability to pass qs params to cloud code functions
  • Loading branch information
gfosco committed Feb 16, 2016
2 parents 5856ed0 + 8296d77 commit eace10f
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 2 deletions.
29 changes: 29 additions & 0 deletions spec/ParseAPI.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -587,6 +587,35 @@ describe('miscellaneous', function() {
done();
});
});

it('test cloud function query parameters', (done) => {
Parse.Cloud.define('echoParams', (req, res) => {
res.success(req.params);
});
var headers = {
'Content-Type': 'application/json',
'X-Parse-Application-Id': 'test',
'X-Parse-Javascript-Key': 'test'
};
request.post({
headers: headers,
url: 'http://localhost:8378/1/functions/echoParams', //?option=1&other=2
qs: {
option: 1,
other: 2
},
body: '{"foo":"bar", "other": 1}'
}, (error, response, body) => {
expect(error).toBe(null);
var res = JSON.parse(body).result;
expect(res.option).toEqual('1');
// Make sure query string params override body params
expect(res.other).toEqual('2');
expect(res.foo).toEqual("bar");
delete Parse.Cloud.Functions['echoParams'];
done();
});
});

it('test cloud function parameter validation success', (done) => {
// Register a function with validation
Expand Down
7 changes: 5 additions & 2 deletions src/functions.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,11 @@ var router = new PromiseRouter();

function handleCloudFunction(req) {
if (Parse.Cloud.Functions[req.params.functionName]) {

const params = Object.assign({}, req.body, req.query);

if (Parse.Cloud.Validators[req.params.functionName]) {
var result = Parse.Cloud.Validators[req.params.functionName](req.body || {});
var result = Parse.Cloud.Validators[req.params.functionName](params);
if (!result) {
throw new Parse.Error(Parse.Error.SCRIPT_FAILED, 'Validation failed.');
}
Expand All @@ -19,7 +22,7 @@ function handleCloudFunction(req) {
return new Promise(function (resolve, reject) {
var response = createResponseObject(resolve, reject);
var request = {
params: req.body || {},
params: params,
master: req.auth && req.auth.isMaster,
user: req.auth && req.auth.user,
installationId: req.info.installationId
Expand Down

0 comments on commit eace10f

Please sign in to comment.