chrisjpowers-patron 0.4.0 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. data/lib/patron/request.rb +29 -1
  2. metadata +1 -1
@@ -40,9 +40,22 @@ module Patron
40
40
  @max_redirects = -1
41
41
  end
42
42
 
43
- attr_accessor :url, :username, :password, :upload_data, :file_name, :proxy
43
+ attr_accessor :url, :username, :password, :file_name, :proxy
44
44
  attr_reader :action, :timeout, :connect_timeout, :max_redirects, :headers
45
45
 
46
+ def upload_data=(data)
47
+ @upload_data = case data
48
+ when Hash:
49
+ hash_to_string(data)
50
+ else
51
+ data
52
+ end
53
+ end
54
+
55
+ def upload_data
56
+ @upload_data
57
+ end
58
+
46
59
  def action=(new_action)
47
60
  if !VALID_ACTIONS.include?(new_action)
48
61
  raise ArgumentError, "Action must be one of #{VALID_ACTIONS.join(', ')}"
@@ -92,5 +105,20 @@ module Patron
92
105
  "#{username}:#{password}"
93
106
  end
94
107
 
108
+ private
109
+
110
+ # serialize hash for Rails-style params
111
+ def hash_to_string(hash)
112
+ pairs = []
113
+ recursive = Proc.new do |h, prefix|
114
+ h.each_pair do |k,v|
115
+ key = prefix == '' ? k : "#{prefix}[#{k}]"
116
+ v.is_a?(Hash) ? recursive.call(v, key) : pairs << "#{key}=#{v}"
117
+ end
118
+ end
119
+ recursive.call(hash, '')
120
+ return pairs.join('&')
121
+ end
122
+
95
123
  end
96
124
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chrisjpowers-patron
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Phillip Toland