From c7ba9c32bb290d84ff9e4cc16828be38e61b9a13 Mon Sep 17 00:00:00 2001 From: Ben Gotow Date: Fri, 18 Sep 2015 11:18:26 -0700 Subject: [PATCH] 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 --- .../worker-ui/lib/developer-bar-store.coffee | 8 ++++---- src/flux/edgehill-api.coffee | 13 +++++++++++-- src/flux/nylas-api.coffee | 14 ++++++++++++-- 3 files changed, 27 insertions(+), 8 deletions(-) diff --git a/internal_packages/worker-ui/lib/developer-bar-store.coffee b/internal_packages/worker-ui/lib/developer-bar-store.coffee index a59a093aa..241ba39e5 100644 --- a/internal_packages/worker-ui/lib/developer-bar-store.coffee +++ b/internal_packages/worker-ui/lib/developer-bar-store.coffee @@ -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}" diff --git a/src/flux/edgehill-api.coffee b/src/flux/edgehill-api.coffee index 2deffa0b1..fb40ce5f6 100644 --- a/src/flux/edgehill-api.coffee +++ b/src/flux/edgehill-api.coffee @@ -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})) diff --git a/src/flux/nylas-api.coffee b/src/flux/nylas-api.coffee index 8a5cbc426..43e711509 100644 --- a/src/flux/nylas-api.coffee +++ b/src/flux/nylas-api.coffee @@ -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