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