class VW::Request
Constants
- VOLLEY_DELETE
- VOLLEY_GET
part of this class had to be implemented as a
Java
extension to work around what appears to be a RM bug. See request.java- VOLLEY_POST
- VOLLEY_PUT
Public Class Methods
add_params_to_url(url, params)
click to toggle source
# File lib/project/volley_wrap/request.rb, line 54 def self.add_params_to_url(url, params) if params.blank? url else params_array = params.map do |k, v| v = Java::Net::URLEncoder.encode(v, "utf-8") "#{k}=#{v}" end "#{url}?#{params_array.join("&")}" end end
delete_request(url, params, listener)
click to toggle source
# File lib/project/volley_wrap/request.rb, line 30 def self.delete_request(url, params, listener) request_with_params(VOLLEY_DELETE, url, params, listener).tap do |req| req.listener = listener end end
get_request(url, params, listener)
click to toggle source
# File lib/project/volley_wrap/request.rb, line 11 def self.get_request(url, params, listener) url = add_params_to_url(url, params) request_with_params(VOLLEY_GET, url, params, listener).tap do |req| req.listener = listener end end
post_request(url, params, listener)
click to toggle source
# File lib/project/volley_wrap/request.rb, line 18 def self.post_request(url, params, listener) request_with_params(VOLLEY_POST, url, params, listener).tap do |req| req.listener = listener end end
put_request(url, params, listener)
click to toggle source
# File lib/project/volley_wrap/request.rb, line 24 def self.put_request(url, params, listener) request_with_params(VOLLEY_PUT, url, params, listener).tap do |req| req.listener = listener end end
retry_policy()
click to toggle source
# File lib/project/volley_wrap/request.rb, line 40 def self.retry_policy Com::Android::Volley::DefaultRetryPolicy.new(10000, 3, 1) end
set_request_for_listener(method, url, params, listener)
click to toggle source
# File lib/project/volley_wrap/request.rb, line 66 def self.set_request_for_listener(method, url, params, listener) # There probably is a much better way then passing all these around like this listener.request_url = url listener.request_params = params listener.request_method = method end
Private Class Methods
prepare_params(params)
click to toggle source
this is to maintain compatibility with AFMotion - somewhere (possibly in AFNetworking?) the keys get flattened out like so:
{ user: { email: "x@x.com", password: "pass" } }
becomes
{ "user[email]" => "x@x.com", "user[password]" => "pass" }
This is not a robust implementation of this, but will serve our needs for now
# File lib/project/volley_wrap/request.rb, line 83 def self.prepare_params(params) new_params = {} params.keys.each do |key| if params[key].is_a?(Hash) params[key].keys.each do |inner_key| new_params["#{key}[#{inner_key}]"] = params[key][inner_key].to_s end else new_params[key.to_s] = params[key].to_s end end new_params end
request_with_params(method, url, params, listener)
click to toggle source
# File lib/project/volley_wrap/request.rb, line 98 def self.request_with_params(method, url, params, listener) set_request_for_listener method, url, params, listener Request.new(method, url, listener, listener).tap do |req| req.setRetryPolicy(retry_policy) unless method == VOLLEY_GET params = prepare_params(params) req.setParams(params) end end end
Public Instance Methods
headers=(headers)
click to toggle source
# File lib/project/volley_wrap/request.rb, line 44 def headers=(headers) # call into the method defined in the .java file setHeaders(headers) end
listener=(value)
click to toggle source
# File lib/project/volley_wrap/request.rb, line 36 def listener=(value) @listener = value end
parseNetworkResponse(network_response)
click to toggle source
Calls superclass method
# File lib/project/volley_wrap/request.rb, line 49 def parseNetworkResponse(network_response) @listener.network_response = network_response if @listener super end