dagger 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +20 -5
- data/lib/dagger.rb +19 -28
- data/lib/dagger/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d8c2144cb2fc6feb4333d118265b8b33d31df3e2
|
4
|
+
data.tar.gz: 3615c376cd385f9731dd7fe022f4dfa56e2b95e9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 223372582af34f07018cbc0df565b543c57a5b47c6e876081bf9dc0b98b4d402e71ada2abd1aa77772ca31321add90ed71880b73e07e75d13c98c649adb73094
|
7
|
+
data.tar.gz: 7b9a7983be101326ab8ba00a810f416c1e225fe9960c335c9c544ba616168f5777ef9cb8026f7b28811c1e0434e1dccbf03bf36e7d4bd847ecc8be7920a27b65
|
data/README.md
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
# Dagger
|
2
2
|
|
3
|
-
|
3
|
+
Featherweight wrapper around Net::HTTP.
|
4
|
+
|
5
|
+
Follows redirects if instructed, and comes with out-of-the-box parsing of JSON and XML, via [oj](https://github.com/ohler55/oj) and [ox](https://github.com/ohler55/ox), respectively.
|
4
6
|
|
5
7
|
# Installation
|
6
8
|
|
@@ -10,34 +12,47 @@ In your Gemfile:
|
|
10
12
|
|
11
13
|
# Usage
|
12
14
|
|
13
|
-
## `get(url)`
|
15
|
+
## `get(url, [params], [options])`
|
14
16
|
|
15
17
|
```rb
|
16
18
|
require 'dagger'
|
17
19
|
resp = Dagger.get('http://google.com')
|
18
20
|
|
19
21
|
puts resp.body # => "<!doctype html...>"
|
22
|
+
|
23
|
+
# if query is passed, it is appended as a query string
|
24
|
+
Dagger.get('google.com/search', { q: 'dagger' }) # => requests '/search?q=dagger'
|
20
25
|
```
|
21
26
|
|
22
|
-
## `post(url,
|
27
|
+
## `post(url, params, [options])`
|
23
28
|
|
24
29
|
```rb
|
25
30
|
resp = Dagger.post('http://api.server.com', { foo: 'bar' })
|
26
31
|
puts resp.status # => 200
|
27
32
|
|
28
|
-
# if the
|
33
|
+
# if you want to send JSON to the server, you can pass the { json: true } option,
|
34
|
+
# which converts your params object to JSON, and also sets Content-Type to 'application/json'
|
35
|
+
resp = Dagger.put('http://server.com', { foo: 'bar' }, { json: true })
|
36
|
+
|
37
|
+
# now, if the endpoint returned a parseable content-type (e.g. 'application/json')
|
29
38
|
# then `resp.data` will return the parsed result. `body` contains the raw data.
|
30
39
|
puts resp.data # => { result: 'GREAT SUCCESS!' }
|
31
40
|
```
|
32
41
|
|
33
|
-
Same syntax applies for `put`, `patch` and `delete` requests.
|
42
|
+
Same syntax applies for `put`, `patch` and `delete` requests.
|
43
|
+
|
44
|
+
# Options
|
45
|
+
|
46
|
+
These are all the available options.
|
34
47
|
|
35
48
|
```rb
|
36
49
|
opts = {
|
50
|
+
json: true, # converts params object to JSON and sets Content-Type header. (POST/PUT/PATCH only)
|
37
51
|
follow: true, # follow redirects (10 by default)
|
38
52
|
headers: { 'Accept': 'text/xml' },
|
39
53
|
username: 'dagger', # for HTTP auth
|
40
54
|
password: 'fidelio',
|
55
|
+
verify_ssl: false, # true by default
|
41
56
|
open_timeout: 30,
|
42
57
|
read_timeout: 30
|
43
58
|
}
|
data/lib/dagger.rb
CHANGED
@@ -1,18 +1,4 @@
|
|
1
1
|
# Dagger.
|
2
|
-
# Simple Net::HTTP wrapper (in less than 100 LOC)
|
3
|
-
# Written by Tomas Pollak
|
4
|
-
|
5
|
-
# Example Usage ---------------------------------
|
6
|
-
#
|
7
|
-
# resp, body = Dagger.get('http://google.com')
|
8
|
-
# puts body if resp.code == 200
|
9
|
-
#
|
10
|
-
# opts = { username: 'foobar', password: 'secret' }
|
11
|
-
# resp, body = Dagger.get('http://api.server.com', opts)
|
12
|
-
#
|
13
|
-
# opts = { verify_ssl: false, open_timeout: 30 }
|
14
|
-
# resp, body = Dagger.post('http://twitter.com', { foo: 'bar' }, opts)
|
15
|
-
|
16
2
|
require 'dagger/version'
|
17
3
|
require 'dagger/response'
|
18
4
|
require 'dagger/parsers'
|
@@ -28,16 +14,14 @@ module Dagger
|
|
28
14
|
}
|
29
15
|
|
30
16
|
def self.get(uri, query = nil, opts = {})
|
31
|
-
raise ArgumentError.new("Empty URL!") if (uri || '').strip == ''
|
32
|
-
|
33
17
|
opts[:follow] = 10 if opts[:follow] == true
|
34
|
-
uri = parse_uri(uri)
|
35
|
-
uri.query = encode(opts[:query]) if opts[:query]
|
36
18
|
|
37
|
-
|
38
|
-
|
19
|
+
uri = parse_uri(uri)
|
20
|
+
uri.query = encode(opts[:query]) if opts[:query]
|
21
|
+
http = client(uri, opts)
|
22
|
+
request = Net::HTTP::Get.new(uri.request_uri, DEFAULT_HEADERS.merge(opts[:headers] || {}))
|
39
23
|
|
40
|
-
if opts[:username] && opts[:password]
|
24
|
+
if opts[:username] # && opts[:password]
|
41
25
|
request.basic_auth(opts.delete(:username), opts.delete(:password))
|
42
26
|
end
|
43
27
|
|
@@ -71,14 +55,21 @@ module Dagger
|
|
71
55
|
private
|
72
56
|
|
73
57
|
def self.request(method, uri, params, opts = {})
|
74
|
-
|
75
|
-
uri = parse_uri(uri)
|
76
|
-
query = params.is_a?(String) ? params : encode(params)
|
77
|
-
|
58
|
+
uri = parse_uri(uri)
|
78
59
|
headers = opts[:headers] || {}
|
79
60
|
|
80
|
-
|
81
|
-
|
61
|
+
query = if params.is_a?(String)
|
62
|
+
params
|
63
|
+
elsif opts[:json]
|
64
|
+
Oj.dump(params) # convert to JSON
|
65
|
+
headers['Content-Type'] = 'application/json'
|
66
|
+
else
|
67
|
+
encode(params)
|
68
|
+
end
|
69
|
+
|
70
|
+
if opts[:username] # opts[:password] is optional
|
71
|
+
str = [opts[:username], opts[:password]].compact.join(':')
|
72
|
+
headers['Authorization'] = "Basic " + Base64.encode64(str)
|
82
73
|
end
|
83
74
|
|
84
75
|
args = [method, uri.path, query, headers]
|
@@ -99,7 +90,7 @@ module Dagger
|
|
99
90
|
http.open_timeout = opts[:open_timeout] if opts[:open_timeout]
|
100
91
|
http.read_timeout = opts[:read_timeout] if opts[:read_timeout]
|
101
92
|
http.use_ssl = true if uri.port == 443
|
102
|
-
http.verify_mode = opts[:verify_ssl] ? OpenSSL::SSL::
|
93
|
+
http.verify_mode = opts[:verify_ssl] === false ? OpenSSL::SSL::VERIFY_NONE : OpenSSL::SSL::VERIFY_PEER
|
103
94
|
http
|
104
95
|
end
|
105
96
|
|
data/lib/dagger/version.rb
CHANGED