tiny_grabber 0.0.7 → 0.1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ab45d7456aafa8950adab83118a361262dedbe36
4
- data.tar.gz: 53d8c891ba604d1cbc36902e26936aff799caaac
3
+ metadata.gz: 9125f8132b04b1a08e64a47abf7ccb5085688b55
4
+ data.tar.gz: 050aad4742cdeeba67cfc64dad8c6d9c0a02ec97
5
5
  SHA512:
6
- metadata.gz: a4c98e942cd4e60e107d5855752b5feea73394f74efb189e3e8d126f687add4f41fb44a4401190a28b43648618cce413ceb2d44711b44da291db6c8aacb0d684
7
- data.tar.gz: 264df5fb5380e658f1f4c508c973d385a90a61fe08afd9c13baa9c51cab9eb5ba1d306b138ec9800bd2cfe508b627b88fd45249ff5ea5240f9f8a8fc29dce6cc
6
+ metadata.gz: d1ff3deb449bc1aedf86b2886156043decf28cf327ec25e30cd4725f07f5dc82faa01c803aa161bf573e3799f747a15673919fb470db75546810a932ee513093
7
+ data.tar.gz: c977e50867454e3af09e00e6b9f69f5b8efc7b22aaa0127b3c54c8aee206692359322a0c4418b81ab23bbc4a54a562f197f9fc98088225d97a70d1d1699d83f2
data/README.md CHANGED
@@ -44,8 +44,11 @@ auth = { username: '', password: '' }
44
44
  # Request HTTP type by default is GET. You can send POST request with setting post params. Also you cat send empty POST request.
45
45
  post = { some_data: '' }
46
46
 
47
- # Get response
48
- response = TinyGrabber.get url, headers: headers, proxy: proxy, auth: auth, post: post
47
+ # HTTP GET request
48
+ response = TinyGrabber.get url, headers: headers, proxy: proxy, auth: auth
49
+
50
+ # HTTP GET request
51
+ response = TinyGrabber.post url, post, headers: headers, proxy: proxy, auth: auth
49
52
 
50
53
  # HTTP answer code
51
54
  p response.code
@@ -62,6 +65,8 @@ p response.cookies
62
65
 
63
66
  ## Changelog
64
67
 
68
+ * *v 0.1.0*
69
+ * Add TinyGrabber.post method for HTTP POST request
65
70
  * *v 0.0.7*
66
71
  * Add POST request
67
72
  * Add Basic Authentication
@@ -1,4 +1,4 @@
1
1
  class TinyGrabber
2
2
  # Version number
3
- VERSION = "0.0.7"
3
+ VERSION = "0.1.0"
4
4
  end
data/lib/tiny_grabber.rb CHANGED
@@ -8,10 +8,15 @@ require 'tiny_grabber/http'
8
8
  # Main class for TinyGrabber
9
9
  class TinyGrabber
10
10
 
11
+ @uri
12
+ @params
13
+ @http
14
+ @request
15
+
11
16
  ##
12
17
  # Get Net::HTTP object for content from remote single page
13
- # [url (string)] Link on content
14
- # [params (hash)] Addition setting
18
+ # [url (string)] Link to resource
19
+ # [params (hash)] Request params
15
20
  # * [proxy (hash)] Configuration of remote proxy server
16
21
  # * *ip* address of remote proxy server
17
22
  # * *port* of remote proxy server
@@ -22,58 +27,121 @@ class TinyGrabber
22
27
  # * [auth (hash)] Basic Authentication
23
28
  # * *username* Authenticate username
24
29
  # * *password* Authenticate password
25
- # * [post (hash)] POST data
26
30
  #
27
31
  # = Example
28
32
  # TinyGrabber.get url, headers: { 'Content-Type' => 'application/json' }, proxy: { ip: 'xx.xx.xx.xx', port: xx, proxy_type: :socks }
29
33
  #
30
- # @param url Link for content
31
- # @param params Addition setting
34
+ # @param url Link to resource
35
+ # @param params Request params
32
36
  #
33
37
  def self.get url, params = {}
34
- uri = URI(URI.escape(url))
38
+ @uri = set_url url
39
+ @params = convert_params_to_sym params
40
+ @http = set_http_connect
41
+ @request = Net::HTTP::Get.new(@uri.request_uri)
42
+ set_basic_auth
43
+ set_headers
44
+ get_request
45
+ end
46
+
47
+
48
+ ##
49
+ # Get Net::HTTP object for content from remote single page
50
+ # [url (string)] Link to resource
51
+ # [data (hash)] Post data
52
+ # [params (hash)] Request params
53
+ # * [proxy (hash)] Configuration of remote proxy server
54
+ # * *ip* address of remote proxy server
55
+ # * *port* of remote proxy server
56
+ # * *proxy_type* of remote proxy server
57
+ # * *http* for http(s) proxy servers (by default)
58
+ # * *socks* for socks4/5 proxy servers
59
+ # * [headers (hash)] Headers
60
+ # * [auth (hash)] Basic Authentication
61
+ # * *username* Authenticate username
62
+ # * *password* Authenticate password
63
+ #
64
+ # = Example
65
+ # TinyGrabber.post url, data, headers: { 'Content-Type' => 'application/json' }, proxy: { ip: 'xx.xx.xx.xx', port: xx, proxy_type: :socks }
66
+ #
67
+ # @param url Link to resource
68
+ # @param params Request params
69
+ #
70
+ def self.post url, data, params = {}
71
+ @uri = set_url url
72
+ data = convert_params_to_sym data
73
+ @params = convert_params_to_sym params
74
+ @http = set_http_connect
75
+ @request = Net::HTTP::Post.new(@uri.request_uri)
76
+ @request.set_form_data(data)
77
+ set_basic_auth
78
+ set_headers
79
+ get_request
80
+ end
81
+
82
+ private
35
83
 
36
- params = convert_params_to_sym params
84
+ # Convert all params key to symbols
85
+ #
86
+ # @param params Request params
87
+ #
88
+ def self.convert_params_to_sym params
89
+ params.is_a?(Hash) ? params.inject({}) { |h, (k, v)| h[k.to_sym] = convert_params_to_sym v; h } : params
90
+ end
91
+
92
+ # Convert URL to URI
93
+ #
94
+ # @param url Link to resource
95
+ #
96
+ def self.set_url url
97
+ URI(URI.escape(url))
98
+ end
37
99
 
38
- # Use proxy for request
39
- if params[:proxy]
40
- if ['socks', :socks].include?(params[:proxy][:proxy_type])
41
- http = Net::HTTP.SOCKSProxy(params[:proxy][:ip], params[:proxy][:port])
100
+
101
+ # Use proxy for request
102
+ #
103
+ def self.set_http_connect
104
+ if @params[:proxy]
105
+ if ['socks', :socks].include?(@params[:proxy][:proxy_type])
106
+ Net::HTTP.SOCKSProxy(@params[:proxy][:ip], @params[:proxy][:port])
42
107
  else
43
- http = Net::HTTP::Proxy(params[:proxy][:ip], params[:proxy][:port])
108
+ Net::HTTP::Proxy(@params[:proxy][:ip], @params[:proxy][:port])
44
109
  end
45
110
  else
46
- http = Net::HTTP
111
+ Net::HTTP
47
112
  end
113
+ end
48
114
 
49
- # Set HTTP request type
50
- if params[:post] or params.key?(:post)
51
- request = Net::HTTP::Post.new(uri.request_uri)
52
- request.set_form_data(params[:post])
53
- else
54
- request = Net::HTTP::Get.new(uri.request_uri)
55
- end
56
115
 
57
- # Set Basic Auth
58
- if params[:auth]
59
- request.basic_auth params[:auth][:username], params[:auth][:password]
116
+ # Set Basic Auth
117
+ #
118
+ # @param request Request object
119
+ # @param params Request params
120
+ #
121
+ def self.set_basic_auth
122
+ if @params[:auth]
123
+ @request.basic_auth @params[:auth][:username], @params[:auth][:password]
60
124
  end
125
+ end
61
126
 
62
- # Set headers
63
- params[:headers].each { |k, v| request.add_field(String(k), v) } if params[:headers]
64
127
 
65
- # Get response
66
- http.start(uri.host, uri.port, use_ssl: uri.scheme == 'https') { |http| http.request(request) }
128
+ # Headers
129
+ #
130
+ # @param request Request object
131
+ # @param params Request params
132
+ #
133
+ def self.set_headers
134
+ @params[:headers].each { |k, v| @request.add_field(String(k), v) } if @params[:headers]
67
135
  end
68
136
 
69
- private
70
137
 
71
- # Convert all params key to symbols
138
+ # Make request to remote resource
72
139
  #
73
- # @param params Hash
140
+ # @param uri URI object
141
+ # @param http
74
142
  #
75
- def self.convert_params_to_sym params
76
- params = params.inject({}) { |h, (k, v)| h[k.to_sym] = convert_params_to_sym v; h } if params.is_a?(Hash)
77
- params
143
+ def self.get_request
144
+ @http.start(@uri.host, @uri.port, use_ssl: @uri.scheme == 'https') { |http| http.request(@request) }
78
145
  end
146
+
79
147
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tiny_grabber
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aleksandr Chernyshev
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-05-06 00:00:00.000000000 Z
11
+ date: 2016-05-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: socksify