Class: Fron::Request
- Extended by:
- Forwardable, Eventable
- Defined in:
- opal/fron/request/request.rb
Overview
Low level wrapper for the XMLHTTPRequest class
Instance Attribute Summary collapse
-
#headers ⇒ Hash
readonly
Sets / gets the headers for the request.
-
#url ⇒ String
readonly
Sets / gets the URL.
Instance Method Summary collapse
-
#get(data) {|response| ... } ⇒ Object
Runs a GET request.
-
#handle_state_change ⇒ Object
private
Handles the hash change.
-
#initialize(url, headers = {}) ⇒ Request
constructor
Initialies the request.
-
#post(data) {|response| ... } ⇒ Object
Runs a POST request.
-
#put(data) {|response| ... } ⇒ Object
Runs a PUT request.
-
#ready_state ⇒ Numeric
private
Returns the ready state of the request.
-
#request(method = 'GET', data = {}) {|response| ... } ⇒ Object
Runs a request.
-
#send(method, url, data = nil) ⇒ Object
private
Sends the given data to the given URL with the given method.
-
#set_headers ⇒ Object
private
Sets the headers.
Methods included from Eventable
Constructor Details
#initialize(url, headers = {}) ⇒ Request
Initialies the request
27 28 29 30 31 32 33 |
# File 'opal/fron/request/request.rb', line 27 def initialize(url, headers = {}) @url = url @headers = headers @request = `new XMLHttpRequest()` `#{@request}.addEventListener('readystatechange' , function(){#{handle_state_change}})` self end |
Instance Attribute Details
#headers ⇒ Hash (readonly)
Sets / gets the headers for the request
19 20 21 |
# File 'opal/fron/request/request.rb', line 19 def headers @headers end |
#url ⇒ String (readonly)
Sets / gets the URL
13 14 15 |
# File 'opal/fron/request/request.rb', line 13 def url @url end |
Instance Method Details
#get(data) {|response| ... } ⇒ Object
Runs a GET request
65 66 67 |
# File 'opal/fron/request/request.rb', line 65 def get(data, &callback) request 'GET', data, &callback end |
#handle_state_change ⇒ Object (private)
Handles the hash change
117 118 119 120 121 122 123 124 125 |
# File 'opal/fron/request/request.rb', line 117 def handle_state_change return unless ready_state == 4 begin response = Response.new `#{@request}.status`, `#{@request}.response`, `#{@request}.getAllResponseHeaders()` @callback.call response if @callback ensure trigger :loaded end end |
#post(data) {|response| ... } ⇒ Object
Runs a POST request
74 75 76 |
# File 'opal/fron/request/request.rb', line 74 def post(data, &callback) request 'POST', data, &callback end |
#put(data) {|response| ... } ⇒ Object
Runs a PUT request
83 84 85 |
# File 'opal/fron/request/request.rb', line 83 def put(data, &callback) request 'PUT', data, &callback end |
#ready_state ⇒ Numeric (private)
Returns the ready state of the request
112 113 114 |
# File 'opal/fron/request/request.rb', line 112 def ready_state `#{@request}.readyState` end |
#request(method = 'GET', data = {}) {|response| ... } ⇒ Object
Runs a request
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'opal/fron/request/request.rb', line 41 def request(method = 'GET', data = {}, &callback) raise 'The request is already running!' if ready_state != 0 && ready_state != 4 method = method.upcase @callback = callback args = case method when 'UPLOAD' ['POST', @url, data.to_form_data] when 'GET' [method, "#{@url}?#{data.to_query_string}"] else [method, @url, data.to_json] end send(*args) trigger :loading end |
#send(method, url, data = nil) ⇒ Object (private)
Sends the given data to the given URL with the given method
95 96 97 98 99 100 |
# File 'opal/fron/request/request.rb', line 95 def send(method, url, data = nil) `#{@request}.open(#{method}, #{url})` `#{@request}.withCredentials = true` set_headers `#{@request}.send(#{data})` end |
#set_headers ⇒ Object (private)
Sets the headers
103 104 105 106 107 |
# File 'opal/fron/request/request.rb', line 103 def set_headers @headers.each_pair do |header, value| `#{@request}.setRequestHeader(#{header},#{value})` end end |