pebblebed 0.4.0 → 0.4.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/pebblebed/http.rb +17 -11
- data/lib/pebblebed/version.rb +1 -1
- data/spec/http_spec.rb +13 -5
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6499b7c6db946a08a8965eb636dd2664c77766d4
|
4
|
+
data.tar.gz: a2bef073f3582e8abeb730c9f51fdd043f537c3a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cf8b594a75a82357e9875d982853653bdaee5781efee3dba623d08b28cb068c9411c38068bf8eda8cd7420fd2a106f0103c04e2875432ad1ac0c91580896ccb2
|
7
|
+
data.tar.gz: d83e1d1ef0ab9b42bbde60dc0a49843c759d853a35dbca27c906273f114b1843aa1af893d0ad5f9610df69918a4cc105b23c7dc421cf4015f77bb3e4f3e7a5e2
|
data/lib/pebblebed/http.rb
CHANGED
@@ -9,6 +9,7 @@ require 'pathbuilder'
|
|
9
9
|
require 'active_support'
|
10
10
|
require 'timeout'
|
11
11
|
require 'resolv'
|
12
|
+
require 'addressable/uri'
|
12
13
|
|
13
14
|
module Pebblebed
|
14
15
|
|
@@ -78,19 +79,19 @@ module Pebblebed
|
|
78
79
|
end
|
79
80
|
|
80
81
|
def self.get(url = nil, params = nil, &block)
|
81
|
-
url, params = url_and_params_from_args(url, params, &block)
|
82
|
+
url, params, query = url_and_params_from_args(url, params, &block)
|
82
83
|
return do_request(url) { |connection|
|
83
84
|
connection.get(
|
84
85
|
:host => url.host,
|
85
86
|
:path => url.path,
|
86
|
-
:query => params,
|
87
|
+
:query => QueryParams.encode((params || {}).merge(query)),
|
87
88
|
:persistent => true
|
88
89
|
)
|
89
90
|
}
|
90
91
|
end
|
91
92
|
|
92
93
|
def self.post(url, params, &block)
|
93
|
-
url, params = url_and_params_from_args(url, params, &block)
|
94
|
+
url, params, query = url_and_params_from_args(url, params, &block)
|
94
95
|
content_type, body = serialize_params(params)
|
95
96
|
return do_request(url, idempotent: false) { |connection|
|
96
97
|
connection.post(
|
@@ -101,13 +102,14 @@ module Pebblebed
|
|
101
102
|
'Content-Type' => content_type
|
102
103
|
},
|
103
104
|
:body => body,
|
105
|
+
:query => query,
|
104
106
|
:persistent => true
|
105
107
|
)
|
106
108
|
}
|
107
109
|
end
|
108
110
|
|
109
111
|
def self.put(url, params, &block)
|
110
|
-
url, params = url_and_params_from_args(url, params, &block)
|
112
|
+
url, params, query = url_and_params_from_args(url, params, &block)
|
111
113
|
content_type, body = serialize_params(params)
|
112
114
|
return do_request(url) { |connection|
|
113
115
|
connection.put(
|
@@ -118,18 +120,19 @@ module Pebblebed
|
|
118
120
|
'Content-Type' => content_type
|
119
121
|
},
|
120
122
|
:body => body,
|
123
|
+
:query => query,
|
121
124
|
:persistent => true
|
122
125
|
)
|
123
126
|
}
|
124
127
|
end
|
125
128
|
|
126
129
|
def self.delete(url, params, &block)
|
127
|
-
url, params = url_and_params_from_args(url, params, &block)
|
130
|
+
url, params, query = url_and_params_from_args(url, params, &block)
|
128
131
|
return do_request(url) { |connection|
|
129
132
|
connection.delete(
|
130
133
|
:host => url.host,
|
131
134
|
:path => url.path,
|
132
|
-
:query =>
|
135
|
+
:query => query,
|
133
136
|
:persistent => true
|
134
137
|
)
|
135
138
|
}
|
@@ -145,12 +148,12 @@ module Pebblebed
|
|
145
148
|
def self.stream_get(url = nil, params = nil, options = {})
|
146
149
|
on_data = options[:on_data] or raise "Option :on_data must be specified"
|
147
150
|
|
148
|
-
url, params = url_and_params_from_args(url, params)
|
151
|
+
url, params, query = url_and_params_from_args(url, params)
|
149
152
|
return do_request(url) { |connection|
|
150
153
|
connection.get(
|
151
154
|
:host => url.host,
|
152
155
|
:path => url.path,
|
153
|
-
:query => params,
|
156
|
+
:query => QueryParams.encode((params || {}).merge(query)),
|
154
157
|
:persistent => false,
|
155
158
|
:response_block => streamer(on_data)
|
156
159
|
)
|
@@ -160,7 +163,7 @@ module Pebblebed
|
|
160
163
|
def self.stream_post(url, params, options = {})
|
161
164
|
on_data = options[:on_data] or raise "Option :on_data must be specified"
|
162
165
|
|
163
|
-
url, params = url_and_params_from_args(url, params)
|
166
|
+
url, params, query = url_and_params_from_args(url, params)
|
164
167
|
content_type, body = serialize_params(params)
|
165
168
|
|
166
169
|
return do_request(url) { |connection|
|
@@ -173,6 +176,7 @@ module Pebblebed
|
|
173
176
|
},
|
174
177
|
:body => body,
|
175
178
|
:persistent => false,
|
179
|
+
:query => query,
|
176
180
|
:response_block => streamer(on_data)
|
177
181
|
)
|
178
182
|
}
|
@@ -181,7 +185,7 @@ module Pebblebed
|
|
181
185
|
def self.stream_put(url, params, options = {})
|
182
186
|
on_data = options[:on_data] or raise "Option :on_data must be specified"
|
183
187
|
|
184
|
-
url, params = url_and_params_from_args(url, params)
|
188
|
+
url, params, query = url_and_params_from_args(url, params)
|
185
189
|
content_type, body = serialize_params(params)
|
186
190
|
|
187
191
|
return do_request(url) { |connection|
|
@@ -193,6 +197,7 @@ module Pebblebed
|
|
193
197
|
'Content-Type' => content_type
|
194
198
|
},
|
195
199
|
:body => body,
|
200
|
+
:query => query,
|
196
201
|
:persistent => false,
|
197
202
|
:response_block => streamer(on_data)
|
198
203
|
)
|
@@ -315,7 +320,8 @@ module Pebblebed
|
|
315
320
|
url.path = url.path.chomp("/")+pathbuilder.path
|
316
321
|
(params ||= {}).merge!(pathbuilder.params)
|
317
322
|
end
|
318
|
-
|
323
|
+
query = Addressable::URI.parse(url.to_s).query_values
|
324
|
+
[url, params, query]
|
319
325
|
end
|
320
326
|
|
321
327
|
def self.extract_error_summary(body)
|
data/lib/pebblebed/version.rb
CHANGED
data/spec/http_spec.rb
CHANGED
@@ -17,7 +17,7 @@ describe Pebblebed::Http do
|
|
17
17
|
end
|
18
18
|
|
19
19
|
let :pebble_url do
|
20
|
-
"http://localhost:8666/api/mock/v1/echo"
|
20
|
+
"http://localhost:8666/api/mock/v1/echo?foo=bar"
|
21
21
|
end
|
22
22
|
|
23
23
|
before :all do
|
@@ -86,9 +86,17 @@ describe Pebblebed::Http do
|
|
86
86
|
end
|
87
87
|
|
88
88
|
it "encodes gets as url params" do
|
89
|
-
|
89
|
+
params = {
|
90
|
+
'min' => {
|
91
|
+
'hits' => '1'
|
92
|
+
},
|
93
|
+
'limit' => '2'
|
94
|
+
}
|
95
|
+
params['fields'] = {'document.category' => 'test'}
|
96
|
+
params['max'] = {'hits' => '3'}
|
97
|
+
response = Pebblebed::Http.get(pebble_url, params)
|
90
98
|
result = JSON.parse(response.body)
|
91
|
-
expect(result["QUERY_STRING"]).to eq "
|
99
|
+
expect(result["QUERY_STRING"]).to eq "min[hits]=1&limit=2&fields[document.category]=test&max[hits]=3&foo=bar"
|
92
100
|
end
|
93
101
|
|
94
102
|
describe 'streaming' do
|
@@ -100,7 +108,7 @@ describe Pebblebed::Http do
|
|
100
108
|
buf << data
|
101
109
|
})
|
102
110
|
result = JSON.parse(buf)
|
103
|
-
expect(result["QUERY_STRING"]).to eq "hello=world"
|
111
|
+
expect(result["QUERY_STRING"]).to eq "hello=world&foo=bar"
|
104
112
|
expect(response.body).to eq ''
|
105
113
|
end
|
106
114
|
|
@@ -112,7 +120,7 @@ describe Pebblebed::Http do
|
|
112
120
|
buf << data
|
113
121
|
})
|
114
122
|
result = JSON.parse(buf)
|
115
|
-
expect(result["QUERY_STRING"]).to eq "hello=world"
|
123
|
+
expect(result["QUERY_STRING"]).to eq "hello=world&foo=bar"
|
116
124
|
expect(response.body).to eq ''
|
117
125
|
end
|
118
126
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pebblebed
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Katrina Owen
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2018-03-
|
12
|
+
date: 2018-03-23 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|