net_http-rest_client 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. data/lib/net/http/rest_client.rb +51 -16
  2. metadata +3 -3
@@ -3,17 +3,27 @@ require 'net/http'
3
3
 
4
4
  module Net
5
5
  class HTTP
6
+ # Pure ruby http rest client class
6
7
  class RestClient
7
- VERSION = '0.0.1'
8
+ VERSION = '0.1.0'
8
9
 
10
+ # Get class verion
9
11
  def self.version
10
12
  VERSION
11
13
  end
12
14
 
15
+ # Main longstanding params (the same params as params at #initialize)
13
16
  attr_reader :params
17
+ # Main longstanding cookies
14
18
  attr_reader :cookies
19
+ # Main longstanding headers
20
+ attr_reader :headers
21
+ # Returns last Net::HTTP::Response
15
22
  attr_reader :response
16
23
 
24
+ ##
25
+ # To create class just pass params to constructor
26
+ # Net::HTTP::RestClient.new :host => '127.0.0.1', :port => 8080
17
27
  def initialize params = {}
18
28
  defaults = {
19
29
  :port => 80,
@@ -27,45 +37,69 @@ module Net
27
37
  end
28
38
  @params = defaults.merge(params)
29
39
  @cookies = {}
40
+ @headers = {}
41
+ @params[:headers] && @headers=@params[:headers]
42
+ @params[:cookies] && @cookies=@params[:cookies]
30
43
  end
31
44
 
32
- def get params = {}
45
+ def clear_cookies
46
+ @cookies = {}
47
+ end
48
+
49
+ def clear_headers
50
+ @headers = {}
51
+ end
52
+
53
+ def get url, params = {}
54
+ params[:url] = url
33
55
  request Net::HTTP::Get, params
34
56
  end
35
57
 
36
- def post params = {}
58
+ def post url, data=nil, params = {}
59
+ params[:url] = url
60
+ params[:body] = data
37
61
  request Net::HTTP::Post, params
38
62
  end
39
63
 
40
- def put params = {}
64
+ def put url, data=nil, params = {}
65
+ params[:url] = url
66
+ params[:body] = data
41
67
  request Net::HTTP::Put, params
42
68
  end
43
69
 
44
- def delete params = {}
70
+ def delete url, params = {}
71
+ params[:url] = url
45
72
  request Net::HTTP::Delete, params
46
73
  end
47
74
 
75
+ def head url, params = {}
76
+ params[:url] = url
77
+ request Net::HTTP::Head, params
78
+ end
79
+
48
80
  private
49
81
 
50
82
  def request method, params
83
+ params = { :headers => {}, :cookies => {} }.merge(params)
51
84
  params = @params.merge(params)
52
85
  req = method.new(params[:url])
53
86
  req['User-Agent'] = params[:user_agent]
54
87
  params[:body] && req.body = params[:body]
55
88
  params[:virtual_host] && req['Host'] = params[:virtual_host]
56
89
  params[:user] && req.basic_auth(params[:user], params[:password])
57
- if @cookies.size > 0
58
- cookies = []
59
- @cookies.each do |key, value|
90
+ cookies = []
91
+ @cookies.merge(params[:cookies]).each do |key, value|
92
+ if value
60
93
  cookies << "#{key}=#{value}"
61
- end
62
- req['Cookie'] = cookies.join(';')
63
- end
64
- if params[:headers]
65
- params[:headers].each do |key, value|
66
- req[key] = value
94
+ else
95
+ cookies << "#{key}"
67
96
  end
68
97
  end
98
+ cookies.size>0 && req['Cookie'] = cookies.join(';')
99
+ @headers.merge(params[:headers]).each do |key, value|
100
+ req[key] = value
101
+ end
102
+ response = nil
69
103
  if params[:timeout]
70
104
  Timeout::timeout(params[:timeout]) do
71
105
  response = execute req, params
@@ -73,10 +107,11 @@ module Net
73
107
  else
74
108
  response = execute req, params
75
109
  end
110
+ @response = response
111
+ return nil unless response
76
112
  if response['Set-Cookie'] && response['Set-Cookie'].size>0
77
113
  parse_cookies response
78
- end
79
- @response = response
114
+ end
80
115
  return response.body
81
116
  end
82
117
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: net_http-rest_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-03-10 00:00:00.000000000 Z
12
+ date: 2015-03-11 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: Pure http rest client library
15
15
  email: promix17@yandex.ru
@@ -18,7 +18,7 @@ extensions: []
18
18
  extra_rdoc_files: []
19
19
  files:
20
20
  - ./lib/net/http/rest_client.rb
21
- homepage: https://hardc0de.com/hg/net_http-rest_client
21
+ homepage: https://bitbucket.org/promix17/net-http-rest_client/
22
22
  licenses: []
23
23
  post_install_message:
24
24
  rdoc_options: []