emmy-http 0.1.10 → 0.1.11
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/emmy-http.gemspec +1 -0
- data/lib/emmy_http.rb +4 -1
- data/lib/emmy_http/request.rb +19 -12
- data/lib/emmy_http/response.rb +4 -0
- data/lib/emmy_http/version.rb +1 -1
- data/spec/emmy_http/request_spec.rb +0 -9
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8dfa617e0358d6ec58af123a7d50763b62dcdff5
|
4
|
+
data.tar.gz: 8e7a0ce2e5985c4ab369a9457769c6c299065340
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e9a8d1b8fe86fcf0eba9895d960a7518c9f5e47fed3dc0963e54e15535fb45703cc9e1d06e743020a51ded69eb21975972de04e7ece82604b6db9cf3141ea174
|
7
|
+
data.tar.gz: c0b0013eb58b9e6375e69f962faaf299e7cb2b3129118681e93414ddcc88e3708d92e44cdbe5ca70275cf3659197174f621226e5c7091e44af8c5ce95651a32b
|
data/emmy-http.gemspec
CHANGED
@@ -23,6 +23,7 @@ Gem::Specification.new do |spec|
|
|
23
23
|
spec.add_dependency "fibre", "~> 0.9.3"
|
24
24
|
spec.add_dependency "util_pack", "~> 0.1"
|
25
25
|
spec.add_dependency "model_pack", "~> 0.9.6"
|
26
|
+
spec.add_dependency "addressable", ">= 2.3.8"
|
26
27
|
|
27
28
|
spec.add_development_dependency "bundler", "~> 1.6"
|
28
29
|
spec.add_development_dependency "rake", "~> 10.0"
|
data/lib/emmy_http.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
|
-
require "uri"
|
1
|
+
require "addressable/uri"
|
2
|
+
require 'addressable/template'
|
2
3
|
require "model_pack"
|
3
4
|
require "emmy_http/version"
|
4
5
|
require "forwardable"
|
@@ -9,6 +10,8 @@ module EmmyHttp
|
|
9
10
|
class RequestError < HttpError; end
|
10
11
|
class ConnectionError < HttpError; end
|
11
12
|
class TimeoutError < HttpError; end
|
13
|
+
class EncoderError < HttpError; end
|
14
|
+
class DecoderError < HttpError; end
|
12
15
|
|
13
16
|
HTTP_METHODS = %w(get head delete put post patch options)
|
14
17
|
|
data/lib/emmy_http/request.rb
CHANGED
@@ -5,14 +5,15 @@ module EmmyHttp
|
|
5
5
|
|
6
6
|
#def_delegator :operation, :sync, :init, :head, :success, :error, :init!, :head!, :success!, :error!, :to_a
|
7
7
|
|
8
|
-
attribute :type, default: "GET" # word *method* reserved in ruby
|
8
|
+
attribute :type, default: "GET" # word *method* reserved in ruby objects
|
9
9
|
attribute :url,
|
10
|
-
writer: ->(
|
11
|
-
serialize: ->(
|
10
|
+
writer: ->(v) { v.is_a?(String) ? Addressable::Template.new(v) : v },
|
11
|
+
serialize: ->(v) { v.is_a?(Addressable::Template) ? v.pattern : v.to_s }
|
12
12
|
dictionary :headers
|
13
13
|
|
14
|
-
attribute
|
15
|
-
attribute
|
14
|
+
attribute :path # replace url.path
|
15
|
+
attribute :query # replace url.query
|
16
|
+
dictionary :params # params for url template
|
16
17
|
|
17
18
|
# POST, PUT
|
18
19
|
attribute :body # string, json hash
|
@@ -20,9 +21,11 @@ module EmmyHttp
|
|
20
21
|
attribute :json # serializable hash/object to json
|
21
22
|
attribute :file # path
|
22
23
|
|
23
|
-
attribute :keep_alive, predicate: true
|
24
|
-
attribute :
|
25
|
-
attribute :
|
24
|
+
attribute :keep_alive, predicate: true # keep connection alive
|
25
|
+
attribute :encoding, default: true, predicate: true # encode request
|
26
|
+
attribute :decoding, default: true, predicate: true # decode response
|
27
|
+
attribute :redirects, default: 6 # max redirects to follow
|
28
|
+
attribute :raise_error, predicate: true, default: true # raise error or return nil
|
26
29
|
|
27
30
|
object :timeouts, class_name: Timeouts, default: Timeouts
|
28
31
|
object :ssl, class_name: SSL
|
@@ -42,6 +45,14 @@ module EmmyHttp
|
|
42
45
|
operation.sync
|
43
46
|
end
|
44
47
|
|
48
|
+
def real_url
|
49
|
+
if url.is_a?(Addressable::Template)
|
50
|
+
url.expand(params)
|
51
|
+
else
|
52
|
+
Addressable::URI.parse(url.to_s)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
45
56
|
EmmyHttp::HTTP_METHODS.each do |name|
|
46
57
|
self.def name do |a={}|
|
47
58
|
update_attributes(a.is_a?(String) ? {url: a} : a)
|
@@ -49,10 +60,6 @@ module EmmyHttp
|
|
49
60
|
end
|
50
61
|
end
|
51
62
|
|
52
|
-
def ssl?
|
53
|
-
ssl || url.scheme == 'https' || url.port == 443
|
54
|
-
end
|
55
|
-
|
56
63
|
private
|
57
64
|
|
58
65
|
def error(message)
|
data/lib/emmy_http/response.rb
CHANGED
data/lib/emmy_http/version.rb
CHANGED
@@ -2,13 +2,4 @@ require "spec_helper"
|
|
2
2
|
using EventObject
|
3
3
|
|
4
4
|
describe EmmyHttp::Request do
|
5
|
-
it "ssl flag" do
|
6
|
-
req1 = EmmyHttp::Request.new(url: 'http://httpbin.org')
|
7
|
-
req2 = EmmyHttp::Request.new(url: 'https://httpbin.org')
|
8
|
-
req3 = EmmyHttp::Request.new(url: 'http://httpbin.org:443')
|
9
|
-
|
10
|
-
expect(req1.ssl?).to eq false
|
11
|
-
expect(req2.ssl?).to eq true
|
12
|
-
expect(req3.ssl?).to eq true
|
13
|
-
end
|
14
5
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: emmy-http
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- inre
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-04-
|
11
|
+
date: 2015-04-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: event_object
|
@@ -80,6 +80,20 @@ dependencies:
|
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: 0.9.6
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: addressable
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 2.3.8
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 2.3.8
|
83
97
|
- !ruby/object:Gem::Dependency
|
84
98
|
name: bundler
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|