Skip to content

Parse.Cloud.httpRequest: provide default string encoding for body option #727

@yuzeh

Description

@yuzeh

Somewhat related to #703.

The 'request' library in node requires the body option to be a string, whereas Parse.Cloud.httpRequest will pass in an object if it is given an object, with no Content-Type header.

This is running on parse-server v2.1.3.

example node repl session illustrating the issue:

> require('parse-server');
{ ParseServer: [Function: ParseServer],
  S3Adapter: [Function: S3Adapter] }
> Parse.Cloud.httpRequest({method: 'POST', url: 'http://httpbin.org/post', body: {p1: 'v1', p2: 2}})
TypeError: Cannot read property 'statusCode' of undefined
    at Request._callback (dist/node_modules/parse-server/lib/httpRequest.js:46:35)
    at self.callback (dist/node_modules/parse-server/node_modules/request/request.js:199:22)
    at emitOne (events.js:77:13)
    at Request.emit (events.js:169:7)
    at setContentLength (dist/node_modules/parse-server/node_modules/request/request.js:451:14)
    at Request.init (dist/node_modules/parse-server/node_modules/request/request.js:456:5)
    at new Request (dist/node_modules/parse-server/node_modules/request/request.js:141:8)
    at request (dist/node_modules/parse-server/node_modules/request/index.js:55:10)
    at Object.module.exports [as httpRequest] (dist/node_modules/parse-server/lib/httpRequest.js:44:3)
    at repl:1:13
> Parse.Cloud.httpRequest({method: 'POST', url: 'http://httpbin.org/post', body: {p1: 'v1', p2: 2}, headers: {'content-type': 'application/x-www-form-urlencoded'}})
ParsePromise {
  _resolved: false,
  _rejected: false,
  _resolvedCallbacks: [],
  _rejectedCallbacks: [] }
> 

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions