http_mini 0.1.1 → 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.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +24 -8
  3. data/lib/http_mini.rb +49 -27
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c14ebc6a6a6761adaf2059bb214850352ecc1192
4
- data.tar.gz: d343592b5140e93b5fafda7ffaff3923bd9022ef
3
+ metadata.gz: 48e061b90be3cf85158f267e7b1c0e1a7b832f18
4
+ data.tar.gz: 24c7c9e5fcbe4f70197b0eae9de2ac5a329ee6a7
5
5
  SHA512:
6
- metadata.gz: 37ffe22641095826163b6279fa61b3060d6db430be8decace7bda021ff05eb88fd7f47ee81775443ef000629c368a59a45a9592cf223290befc8bb67a739ad4b
7
- data.tar.gz: 244cd5069a0b6ae89a5897cb02167e957a629c0c2758f9f6be2b50e86a8853f899af23ffa450a8cd8c608b16517469639040f22527918c98d753ed7d3afbaca2
6
+ metadata.gz: e7c985c1165e701977a4a4aa6c2f67f3a923e7c3b02b79e6763d41acbff1ada36f6ce74eb7766c9acfc714019753987fc4bc82bf7609104f0e7f5f0f2986b131
7
+ data.tar.gz: 64e7046625a0b4a9d4f63f4bb4a5251692a6209b2a6b5d96a5946a3b96ec84fec9a2d44a5fb7c262c7af3a9142006c0b85e0a88518fb328a75d6c341632cd02a
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # Http mini
2
2
 
3
3
  A truly minimalist Http client for Ruby. When all you want is
4
- a one liner to ping or get the response.
4
+ a one liner to ping or get the response from a web server.
5
5
 
6
6
  ## Install
7
7
 
@@ -9,15 +9,31 @@ a one liner to ping or get the response.
9
9
 
10
10
  ## Usage
11
11
 
12
- response = HttpMini.new('http://www.google.com').head
13
- puts response.code
12
+ # Sometimes you just need to know if the site is up and running
13
+ do_something if HttpMini.new('http://www.acme.com').poke
14
14
 
15
- By default, HttpMini ignores errors and will return nil in case of error.
16
- If you want to raise error, you can set the option on initialization.
17
- You can also set values for timeouts.
15
+ # or you want to get the status code
16
+ puts HttpMini.new('http://www.google.com').head.code
18
17
 
19
- response = HttpMini.new('http://www.google.com', {ignore_error: false, open_timeout: 5}).get
20
- puts response.body
18
+ # You can also set values for timeouts.
19
+ puts HttpMini.new('http://www.google.com', {read_timeout: 3, open_timeout: 5}).get.body
20
+
21
+ #You can change the url and chain calls
22
+ http = HttpMini.new('www.apple.com')
23
+ apple_html = http.get.body
24
+ ruby_html = http.uri('http://www.ruby-lang.org/en/').get.body
25
+
26
+ # or just the path
27
+ http_request_html = http.path('/stdlib-1.9.3/libdoc/net/http/rdoc/Net/HTTPRequest.html').get.body
28
+
29
+ ## HTTP verbs Support
30
+
31
+ * HEAD
32
+ * GET
33
+ * POST
34
+ * UPDATE
35
+ * DELETE
36
+ * OPTIONS
21
37
 
22
38
  ## Author
23
39
 
data/lib/http_mini.rb CHANGED
@@ -3,7 +3,6 @@ require "uri"
3
3
 
4
4
  class HttpMini
5
5
 
6
- attr_reader :uri
7
6
  attr_accessor :opts
8
7
 
9
8
  OPEN_TIMEOUT = 2
@@ -11,7 +10,7 @@ class HttpMini
11
10
  IGNORE_ERROR = true
12
11
 
13
12
  def self.VERSION
14
- '0.1.1'
13
+ '0.2.0'
15
14
  end
16
15
 
17
16
  def initialize(url, opts = {})
@@ -20,69 +19,92 @@ class HttpMini
20
19
  end
21
20
 
22
21
  def head
23
- request { |http| http.head(path) }
22
+ request { |http| http.head(full_path) }
24
23
  end
25
24
 
26
25
  def get
27
- request { |http| http.get(path) }
26
+ request { |http| http.get(full_path) }
28
27
  end
29
28
 
30
29
  def post(data)
31
- request { |http| http.post(path, data) }
30
+ request { |http| http.post(full_path, data) }
32
31
  end
33
32
 
34
33
  def put(data)
35
- request { |http| http.put(path, data) }
34
+ request { |http| http.put(full_path, data) }
36
35
  end
37
36
 
38
37
  def delete
39
- request { |http| http.delete(path) }
38
+ request { |http| http.delete(full_path) }
40
39
  end
41
40
 
42
41
  def options
43
- request { |http| http.options(path) }
42
+ request { |http| http.options(full_path) }
44
43
  end
45
44
 
46
- def ping
47
- success? head
48
- end
49
-
50
- private
51
-
52
- def request
45
+ def poke
53
46
  begin
54
- Net::HTTP.start(host, port, :use_ssl => ssl?) {|http| set_timeout(http) and yield(http) }
47
+ success? head
55
48
  rescue Exception => e
56
49
  raise e unless ignore_error?
50
+ false
57
51
  end
58
52
  end
53
+ alias_method :ping, :poke
54
+
55
+ def uri(uri=nil)
56
+ uri.nil? ? @uri : (self.uri = uri) and self
57
+ end
58
+
59
+ def host
60
+ @uri.host || @uri.path.split('/').first
61
+ end
62
+
63
+ def port
64
+ @uri.port
65
+ end
66
+
67
+ def path(path=nil)
68
+ path.nil? ? clean_path(@uri.path) : set_path(path)
69
+ end
70
+
71
+ private
59
72
 
60
73
  def uri=(uri)
61
- @uri = URI.parse(uri)
74
+ @uri = URI.parse(uri) unless uri.nil? || uri.empty?
75
+ end
76
+
77
+ def request
78
+ Net::HTTP.start(host, port, :use_ssl => ssl?) {|http| set_timeout(http) and yield(http) }
62
79
  end
63
80
 
64
81
  def ssl?
65
- uri.scheme == 'https'
82
+ @uri.scheme == 'https'
66
83
  end
67
84
 
68
85
  def set_timeout(http)
69
86
  http.open_timeout, http.read_timeout = timeouts
70
87
  end
71
88
 
72
- def host
73
- uri.host || uri.path.split('/').first
89
+ def full_path
90
+ @uri.query ? path + '?' + @uri.query : path
74
91
  end
75
92
 
76
- def port
77
- uri.port
93
+ def clean_path(path)
94
+ default_path remove_host_from_path(path)
95
+ end
96
+
97
+ def default_path(path)
98
+ path.to_s.empty? ? '/' : path
78
99
  end
79
100
 
80
- def path
81
- root? uri.path.gsub(Regexp.new('^' + host), '')
101
+ def remove_host_from_path(path)
102
+ path.to_s.gsub Regexp.new('^' + host), ''
82
103
  end
83
104
 
84
- def root?(path)
85
- path.empty? ? '/' : path
105
+ def set_path(path)
106
+ @uri.path = path
107
+ self
86
108
  end
87
109
 
88
110
  def timeouts
@@ -102,7 +124,7 @@ class HttpMini
102
124
  end
103
125
 
104
126
  def success?(response)
105
- response && response.code.to_i >= 200 && response.code.to_i < 300 ? true : false
127
+ response && response.code.to_i >= 200 && response.code.to_i < 400
106
128
  end
107
129
 
108
130
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: http_mini
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jerome Touffe-Blin
@@ -24,7 +24,7 @@ dependencies:
24
24
  - - '>='
25
25
  - !ruby/object:Gem::Version
26
26
  version: 1.3.0
27
- description: A minimalist wrapper over Http::Net
27
+ description: A thin wrapper over URI and Http::Net
28
28
  email: jtblin@gmail.com
29
29
  executables: []
30
30
  extensions: []