turbolinks
Version:
Turbolinks makes navigating your web application faster
89 lines (69 loc) • 2.32 kB
text/coffeescript
class Turbolinks.HttpRequest
= 0
= -1
= 60
constructor: ( , location, referrer) ->
= Turbolinks.Location.wrap(location).requestURL
= Turbolinks.Location.wrap(referrer).absoluteURL
send: ->
if and not
.send()
= true
.requestStarted?()
cancel: ->
if and
.abort()
# XMLHttpRequest events
requestProgressed: (event) =>
if event.lengthComputable
requestLoaded: =>
=>
if 200 <= .status < 300
.requestCompletedWithResponse( .responseText, .getResponseHeader("Turbolinks-Location"))
else
= true
.requestFailedWithStatusCode( .status, .responseText)
requestFailed: =>
=>
= true
.requestFailedWithStatusCode( .NETWORK_FAILURE)
requestTimedOut: =>
=>
= true
.requestFailedWithStatusCode( .TIMEOUT_FAILURE)
requestCanceled: =>
# Application events
notifyApplicationBeforeRequestStart: ->
Turbolinks.dispatch("turbolinks:request-start", data: { url: , xhr: })
notifyApplicationAfterRequestEnd: ->
Turbolinks.dispatch("turbolinks:request-end", data: { url: , xhr: })
# Private
createXHR: ->
= new XMLHttpRequest
.open("GET", , true)
.timeout = .timeout * 1000
.setRequestHeader("Accept", "text/html, application/xhtml+xml")
.setRequestHeader("Turbolinks-Referrer", )
.onprogress =
.onload =
.onerror =
.ontimeout =
.onabort =
endRequest: (callback) ->
if
callback?.call(this)
setProgress: (progress) ->
= progress
.requestProgressed?( )
destroy: ->
.requestFinished?()
= null
= null