fix(networking): Don't include entire response body in didMakeAPIRequest

Summary: Fixes T3625

Test Plan: Easy to test by opening/closing reply options dropdown as a large image attachment is downloaded

Reviewers: evan, dillon

Reviewed By: dillon

Maniphest Tasks: T3625

Differential Revision: https://phab.nylas.com/D2034
This commit is contained in:
Ben Gotow 2015-09-18 11:18:26 -07:00
parent 0caf5966ee
commit c7ba9c32bb
3 changed files with 27 additions and 8 deletions

View file

@ -79,12 +79,12 @@ class DeveloperBarStore extends NylasStore
@_curlHistory[requestId] = item
@triggerThrottled(@)
_onDidMakeAPIRequest: ({requestId, request, response, error}) =>
item = @_generateCurlItem({requestId, request, response, error})
_onDidMakeAPIRequest: ({requestId, request, statusCode, error}) =>
item = @_generateCurlItem({requestId, request, statusCode, error})
@_curlHistory[requestId] = item
@triggerThrottled(@)
_generateCurlItem: ({requestId, request, response, error}) ->
_generateCurlItem: ({requestId, request, statusCode, error}) ->
url = request.url
if request.auth
url = url.replace('://', "://#{request.auth.user}:#{request.auth.pass}@")
@ -100,7 +100,7 @@ class DeveloperBarStore extends NylasStore
for k,v of request.headers
headers += "-H \"#{k}: #{v}\" "
statusCode = response?.statusCode ? error?.code ? "pending"
statusCode = statusCode ? error?.code ? "pending"
item =
id: "curlitemId:#{requestId}"

View file

@ -7,6 +7,7 @@ DatabaseStore = require './stores/database-store'
PriorityUICoordinator = require '../priority-ui-coordinator'
async = require 'async'
# TODO: Fold this code into NylasAPI or create a base class
class EdgehillAPI
constructor: ->
@ -54,9 +55,17 @@ class EdgehillAPI
rid = Utils.generateTempId()
[rid].forEach (requestId) ->
options.startTime = Date.now()
Actions.willMakeAPIRequest({request: options, requestId: requestId})
Actions.willMakeAPIRequest({
request: options,
requestId: requestId
})
nodeRequest options, (error, response, body) ->
Actions.didMakeAPIRequest({request: options, response: response, error: error, requestId: requestId})
Actions.didMakeAPIRequest({
request: options,
statusCode: response?.statusCode,
error: error,
requestId: requestId
})
PriorityUICoordinator.settle.then ->
if error? or response.statusCode > 299
options.error(new APIError({error:error, response:response, body:body, requestOptions: options}))

View file

@ -73,9 +73,19 @@ class NylasAPIRequest
requestId = Utils.generateTempId()
new Promise (resolve, reject) =>
@options.startTime = Date.now()
Actions.willMakeAPIRequest({request: @options, requestId: requestId})
Actions.willMakeAPIRequest({
request: @options,
requestId: requestId
})
req = request @options, (error, response, body) =>
Actions.didMakeAPIRequest({request: @options, response: response, error: error, requestId: requestId})
Actions.didMakeAPIRequest({
request: @options,
statusCode: response?.statusCode,
error: error,
requestId: requestId
})
PriorityUICoordinator.settle.then =>
if error or response.statusCode > 299
# Some errors (like socket errors and some types of offline