http_mini 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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: []