Replacing http PATCHs with PUTs

We’re keeping the patch behavior though.
Real patch calls return incorrect http responses in some environments,
like Browserstack and schools.
This commit is contained in:
Matt Lott 2014-10-27 16:09:52 -07:00
parent eeeb7d47c9
commit 8f923f9e1e
9 changed files with 11 additions and 6 deletions

View file

@ -99,6 +99,7 @@ module.exports = GPlusHandler = class GPlusHandler extends CocoClass
wasAnonymous = me.get('anonymous')
me.save(patch, {
patch: true
type: 'PUT'
error: backboneFailure,
url: "/db/user?gplusID=#{gplusID}&gplusAccessToken=#{@accessToken.access_token}"
success: (model) ->

View file

@ -263,7 +263,7 @@ module.exports = class LevelBus extends Bus
# since updates are coming fast and loose for session objects
# don't let what the server returns overwrite changes since the save began
tempSession = new LevelSession _id: @session.id
tempSession.save(patch, {patch: true})
tempSession.save(patch, {patch: true, type: 'PUT'})
destroy: ->
clearInterval(@timerIntervalID)

View file

@ -293,7 +293,7 @@ module.exports = class LevelLoader extends CocoClass
unless _.isEmpty patch
@session.set key, value for key, value of patch
tempSession = new LevelSession _id: @session.id
tempSession.save(patch, {patch: true})
tempSession.save(patch, {patch: true, type: 'PUT'})
@sessionDenormalized = true
# Building sprite sheets

View file

@ -144,6 +144,7 @@ class CocoModel extends Backbone.Model
return false unless @_revertAttributes
options ?= {}
options.patch = true
options.type = 'PUT'
attrs = {_id: @id}
keys = []

View file

@ -150,7 +150,7 @@ module.exports = class EmployersView extends RootView
me.set 'savedEmployerFilterAlerts', me.previous('savedEmployerFilterAlerts')
else
triggerErrorAlert = -> alert("There was an error saving your filter alert! Please notify team@codecombat.com.")
res = me.save {"savedEmployerFilterAlerts": newFilters}, {patch: true, success: cb, error: triggerErrorAlert}
res = me.save {"savedEmployerFilterAlerts": newFilters}, {patch: true, type: 'PUT', success: cb, error: triggerErrorAlert}
renderSavedFilters: =>
savedFilters = me.get('savedEmployerFilterAlerts')

View file

@ -243,7 +243,7 @@ module.exports = class SpectateLevelView extends RootView
# Throttled
saveScreenshot: (session) =>
return unless screenshot = @surface?.screenshot()
session.save {screenshot: screenshot}, {patch: true}
session.save {screenshot: screenshot}, {patch: true, type: 'PUT'}
setTeam: (team) ->
team = team?.team unless _.isString team

View file

@ -523,7 +523,7 @@ module.exports = class PlayLevelView extends RootView
# Throttled
saveScreenshot: (session) =>
return unless screenshot = @surface?.screenshot()
session.save {screenshot: screenshot}, {patch: true}
session.save {screenshot: screenshot}, {patch: true, type: 'PUT'}
# Dynamic sound loading

View file

@ -345,7 +345,7 @@ module.exports = class JobProfileView extends UserView
onJobProfileNotesChanged: (e) =>
notes = @$el.find('#job-profile-notes').val()
@user.set 'jobProfileNotes', notes
@user.save {jobProfileNotes: notes}, {patch: true}
@user.save {jobProfileNotes: notes}, {patch: true, type: 'PUT'}
iconForLink: (link) ->
icons = [

View file

@ -267,9 +267,12 @@ module.exports = class Handler
res.end()
patch: ->
console.warn 'Received unexpected PATCH request'
@put(arguments...)
put: (req, res, id) ->
# Client expects PATCH behavior for PUTs
# Real PATCHs return incorrect HTTP responses in some environments (e.g. Browserstack, schools)
return @postNewVersion(req, res) if @modelClass.schema.uses_coco_versions
return @sendBadInputError(res, 'No input.') if _.isEmpty(req.body)
return @sendForbiddenError(res) unless @hasAccess(req)