micky 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: af45a8a8f7fc7e48b95beeffbff81a51e9948ad1
4
- data.tar.gz: 057926d44234a5d7cea3205f35e905ee58d9ebeb
3
+ metadata.gz: d8856a3b9bdf0070da933541f52c3571e5499783
4
+ data.tar.gz: fbcd0010c28a491fe267a27d0617774906d30b2a
5
5
  SHA512:
6
- metadata.gz: 0e9b6c1d51655b9e995e4bad8ffe680f8f105a8d29371cbecef8936ac53da0eed02547995e44da155df9d139d44bb1570d044316d58d3631dca734150430c865
7
- data.tar.gz: a93d83e01d8511b1c56a4fb00b83ecb0ab8291a4a9d5b45d4148770b074ffb43ff2723d200b5a21bcf1193c964770d06adb42ad0427c7fa4ab3e59e7650c3320
6
+ metadata.gz: f6f1d6969aa4957ec2983d44b841d3a5515cbadb067858b6b6bf859f785b5e8814e324d06db993cbc5960eda6a1e15d1ecc9bfd228db8f808ac56eadcaa250ee
7
+ data.tar.gz: 41d5a0daa0d33f7655082863beea63bc6a233f1f5e43e433ed18f90ff5e7d43a7ea6e8b8f82b10886d922802c2ff262de8126784840ecfcfe90ffec93f74f856
data/README.md CHANGED
@@ -15,15 +15,21 @@ don’t want to add heavy dependencies to your app.
15
15
 
16
16
  Add this line to your application’s Gemfile:
17
17
 
18
- gem 'micky'
18
+ ```ruby
19
+ gem 'micky'
20
+ ```
19
21
 
20
22
  And then execute:
21
23
 
22
- $ bundle
24
+ ```sh
25
+ $ bundle
26
+ ```
23
27
 
24
28
  Or install it yourself as:
25
29
 
26
- $ gem install micky
30
+ ```sh
31
+ $ gem install micky
32
+ ```
27
33
 
28
34
  ## Usage
29
35
 
@@ -61,6 +67,38 @@ else
61
67
  end
62
68
  ```
63
69
 
70
+ ### Headers and query strings
71
+
72
+ Request headers and query string params can be passed as `:headers` and `:query`.
73
+
74
+ ```ruby
75
+ Micky.get('http://drpm.me/unwz.jpg', headers: { 'Accept' => 'text/html' })
76
+ Micky.get('http://urls.api.twitter.com/1/urls/count.json', query: { url: 'dropmeme.com' })
77
+ ```
78
+
79
+ ### OAuth `Authorization` header
80
+
81
+ Micky supports creating a OAuth `Authorization` header with the help of the
82
+ [SimpleOAuth](https://github.com/laserlemon/simple_oauth) gem.
83
+
84
+ ```ruby
85
+ Micky.get(
86
+ 'https://api.twitter.com/1.1/statuses/user_timeline.json',
87
+ oauth: {
88
+ consumer_key: 'l0tSAl3tT3RsAnD1G1tS',
89
+ consumer_secret: 'l0tSAl3tT3RsAnD1G1tS',
90
+ token: 'l0tSAl3tT3RsAnD1G1tS',
91
+ token_secret: 'l0tSAl3tT3RsAnD1G1tS',
92
+ },
93
+ )
94
+ ```
95
+
96
+ To use the `:oauth` argument, just ensure [`simple_oauth`](http://rubygems.org/gems/simple_oauth) is available:
97
+
98
+ ```ruby
99
+ gem 'simple_oauth'
100
+ ```
101
+
64
102
  ### Automatically parse responses into Ruby objects
65
103
 
66
104
  `Micky::Response#body` always returns the response as a string. To parse this
@@ -123,9 +161,9 @@ end
123
161
 
124
162
  ## TODO
125
163
 
164
+ - Support :basic_auth and :digest_auth through [HTTPauth](https://github.com/Manfred/HTTPauth)
126
165
  - Add tests
127
166
  - Better document configuration options in README
128
- - Add `raise_errors: true` option
129
167
 
130
168
  ## Contributing
131
169
 
@@ -0,0 +1,31 @@
1
+ module Micky
2
+ class Error < StandardError
3
+ attr_reader :response
4
+
5
+ def initialize(response = nil)
6
+ @response = response
7
+ end
8
+
9
+ def to_s
10
+ "#{response_code} #{response_message} at #{request_uri}"
11
+ end
12
+
13
+ def request_uri
14
+ response.uri if response
15
+ end
16
+
17
+ def response_code
18
+ response.code.to_i if response
19
+ end
20
+
21
+ def response_message
22
+ response.message if response
23
+ end
24
+ end
25
+
26
+ class ClientError < Error
27
+ end
28
+
29
+ class ServerError < Error
30
+ end
31
+ end
data/lib/micky/request.rb CHANGED
@@ -5,7 +5,7 @@ module Micky
5
5
  class Request
6
6
  def initialize(opts = {})
7
7
  # Options can be set per request and fallback to module-level defaults
8
- [:max_redirects, :timeout, :skip_resolve, :resolve_timeout, :oauth, :query, :headers, :parsers].each do |name|
8
+ [:raise_errors, :max_redirects, :timeout, :skip_resolve, :resolve_timeout, :oauth, :query, :headers, :parsers].each do |name|
9
9
  value = opts.has_key?(name) ? opts[name] : Micky.public_send(name)
10
10
  instance_variable_set "@#{name}", value
11
11
  end
@@ -36,7 +36,17 @@ module Micky
36
36
  else
37
37
  log response
38
38
  log response.body
39
- nil
39
+
40
+ if @raise_errors
41
+ case response
42
+ when Net::HTTPClientError
43
+ raise Micky::ClientError.new(response)
44
+ when Net::HTTPServerError
45
+ raise Micky::ServerError.new(response)
46
+ end
47
+ else
48
+ nil
49
+ end
40
50
  end
41
51
  end
42
52
 
@@ -27,12 +27,12 @@ module Micky
27
27
  end
28
28
 
29
29
  def inspect
30
- "#<Micky::Reponse #{super}>"
30
+ "#<Micky::Response #{super}>"
31
31
  end
32
32
 
33
33
  # Support for `awesome_print`
34
34
  def ai(*args)
35
- "#<Micky::Reponse #{super}>"
35
+ "#<Micky::Response #{super}>"
36
36
  end
37
37
  end
38
38
  end
data/lib/micky/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Micky
2
- VERSION = '0.2.0'
2
+ VERSION = '0.3.0'
3
3
  end
data/lib/micky.rb CHANGED
@@ -3,9 +3,11 @@ require 'micky/version'
3
3
  require 'micky/uri'
4
4
  require 'micky/request'
5
5
  require 'micky/response'
6
+ require 'micky/errors'
6
7
 
7
8
  module Micky
8
9
  class << self
10
+ attr_accessor :raise_errors
9
11
  attr_accessor :max_redirects
10
12
  attr_accessor :timeout
11
13
  attr_accessor :skip_resolve
@@ -17,6 +19,7 @@ module Micky
17
19
  end
18
20
 
19
21
  # Reasonable defaults
22
+ @raise_errors = false
20
23
  @max_redirects = 10
21
24
  @timeout = 5
22
25
  @skip_resolve = false
metadata CHANGED
@@ -1,41 +1,41 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: micky
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rafaël Blais Masson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-11-17 00:00:00.000000000 Z
11
+ date: 2014-04-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.3'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.3'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  description: Micky makes simple HTTP requests (GET/HEAD), follows redirects, handles
@@ -47,12 +47,13 @@ executables: []
47
47
  extensions: []
48
48
  extra_rdoc_files: []
49
49
  files:
50
- - .gitignore
50
+ - ".gitignore"
51
51
  - Gemfile
52
52
  - LICENSE.txt
53
53
  - README.md
54
54
  - Rakefile
55
55
  - lib/micky.rb
56
+ - lib/micky/errors.rb
56
57
  - lib/micky/request.rb
57
58
  - lib/micky/response.rb
58
59
  - lib/micky/uri.rb
@@ -68,17 +69,17 @@ require_paths:
68
69
  - lib
69
70
  required_ruby_version: !ruby/object:Gem::Requirement
70
71
  requirements:
71
- - - '>='
72
+ - - ">="
72
73
  - !ruby/object:Gem::Version
73
74
  version: '0'
74
75
  required_rubygems_version: !ruby/object:Gem::Requirement
75
76
  requirements:
76
- - - '>='
77
+ - - ">="
77
78
  - !ruby/object:Gem::Version
78
79
  version: '0'
79
80
  requirements: []
80
81
  rubyforge_project:
81
- rubygems_version: 2.1.9
82
+ rubygems_version: 2.2.2
82
83
  signing_key:
83
84
  specification_version: 4
84
85
  summary: Lightweight and worry-free HTTP client