Sha256: d9c82f4e284566e459a9c7f039cfb3b2b04df7c85d2eef5652e1559f1281f94d

Contents?: true

Size: 1.42 KB

Versions: 9

Compression:

Stored size: 1.42 KB

Contents

# IE XDomainRequest support. Oh how I hate it.

statii =
  200: "OK"
  201: "CREATED"
  202: "ACCEPTED"
  204: "NO CONTENT"
  401: "UNAUTHORIZED"
  403: "FORBIDDEN"
  404: "NOT FOUND"
  409: "CONFLICT"
  422: "PRECONDITION FAILED"
  500: "INTERNAL SERVER ERROR"

Appetizer.transportXDR = (settings, original, xhr) ->
  xdr   = new XDomainRequest
  sep   = if settings.url.indexOf("?") is -1 then "?" else "&"
  url   = [settings.url, "xdr"].join sep

  xdr.open "POST", url

  abort: ->
    xdr.abort()

  send: (headers, complete) ->
    xdr.onerror = ->
      console.log "FIX: xdr onerror"

    xdr.onload = ->
      [status, headers, body] =
        try
          $.parseJSON xdr.responseText
        catch err
          headers =
            "Content-Type" : "application/json;charset=UTF-8"

          body = JSON.stringify
            request  : ["Unexpected platform error."]
            original : xdr.responseText

          [503, headers, body]

      description = statii[status] or "UNKNOWN"
      responses   = text: body

      complete status, description, responses, headers

    xdr.onprogress = ->

      # HACK: I wasn't able to get multiple requests to work (only
      # the first one would ever trigger `onload`) until I assigned
      # this empty handler to `onprogress`. What the actual fuck.

    xdr.ontimeout = ->
      console.log "FIX: xdr ontimeout"

    xdr.send JSON.stringify [settings.type, headers, settings.data]

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
appetizer-ui-0.9.0 lib/appetizer/ui/app/js/appetizer/xdr.coffee
appetizer-ui-0.8.0 lib/appetizer/ui/app/js/appetizer/xdr.coffee
appetizer-ui-0.7.1 lib/appetizer/ui/app/js/appetizer/xdr.coffee
appetizer-ui-0.7.0 lib/appetizer/ui/app/js/appetizer/xdr.coffee
appetizer-ui-0.6.0 lib/appetizer/ui/app/js/appetizer/xdr.coffee
appetizer-ui-0.5.0 lib/appetizer/ui/app/js/appetizer/xdr.coffee
appetizer-ui-0.4.0 lib/appetizer/ui/app/js/appetizer/xdr.coffee
appetizer-ui-0.3.0 lib/appetizer/ui/app/js/appetizer/xdr.coffee
appetizer-ui-0.2.1 lib/appetizer/ui/app/js/appetizer/xdr.coffee