Dynamised 0.1.2 → 0.1.3
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 +4 -4
- data/dynamised.gemspec +2 -2
- data/lib/dynamised/curb_dsl.rb +129 -68
- data/lib/dynamised/meta.rb +1 -1
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5ee5e3bc7ef224ead6f6389b3af2c21220b6d314
|
4
|
+
data.tar.gz: 3d19bdcc20e0742a96cdb1ebbe04b7a9dbebd566
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6668cb3446ff25bbfbac1748c712111d621f838b823522ba7cc2d397b6429c7792d7d9225eed5f494db280b31ba8dff604de7f1dec00f05c0a4ca7f6b51f50aa
|
7
|
+
data.tar.gz: 8733963e5b9f7d5d320920fd96094f76f71c20dad0c61bbffea73115bc4cee8bbd4af1cf72f0b4a710a1bfefa97fe48801cd7de2bfe9cb6303e900be3566b04b
|
data/dynamised.gemspec
CHANGED
@@ -18,8 +18,8 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
19
19
|
f.match(%r{^(test|spec|features)/})
|
20
20
|
end
|
21
|
-
spec.bindir = "
|
22
|
-
spec.executables =
|
21
|
+
spec.bindir = "bin"
|
22
|
+
spec.executables = %w{ dynamised }
|
23
23
|
spec.require_paths = ["lib"]
|
24
24
|
# {tty-spinner nokogiri awesome_print
|
25
25
|
spec.add_runtime_dependency "tty-spinner", "~> 0.4"
|
data/lib/dynamised/curb_dsl.rb
CHANGED
@@ -1,100 +1,161 @@
|
|
1
1
|
require "curb"
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
2
|
+
require 'cgi'
|
3
|
+
|
4
|
+
module Curb_DSL
|
5
|
+
Regex = {
|
6
|
+
cookie_header: /Set-Cookie: /
|
7
|
+
}
|
8
|
+
def self.included(base)
|
9
|
+
base.extend Singleton
|
10
|
+
base.instance_eval do
|
11
|
+
attr_reader :curl, :headers,:payload, :username, :password, :auth_type, :uri, :ssl, :redirects, :type_converter,:cookies, :form_field_name, :form_fields
|
12
|
+
|
13
|
+
[:get, :post, :put, :delete, :head, :options, :patch, :link, :unlink].each do |func_name|
|
14
|
+
define_method func_name do |&block|
|
15
|
+
make_request_of func_name.to_s.upcase, &block
|
15
16
|
end
|
17
|
+
end
|
16
18
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
end
|
19
|
+
[:password,:username,:payload, :auth_type, :uri, :ssl, :redirects,:type_converter,:cookies,:form_field_name,:error_handler].each do |func_name|
|
20
|
+
define_method "set_#{func_name}" do |value|
|
21
|
+
self.instance_variable_set :"@#{func_name}", value
|
21
22
|
end
|
22
23
|
end
|
23
|
-
|
24
|
-
|
25
|
-
|
26
24
|
end
|
27
25
|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
def query_params(value)
|
35
|
-
Curl::postalize(value)
|
26
|
+
def form_field name,value
|
27
|
+
@form_fields ||= []
|
28
|
+
if @form_field_name
|
29
|
+
@form_fields.push(Curl::PostField.content([("%[%]" % [@form_field_name,name]),value.to_s]))
|
30
|
+
else
|
31
|
+
@form_fields.push(Curl::PostField.content(name ,value.to_s))
|
36
32
|
end
|
37
33
|
end
|
38
34
|
|
39
35
|
|
40
36
|
|
41
|
-
|
42
|
-
|
43
|
-
|
37
|
+
end
|
38
|
+
|
39
|
+
module Singleton
|
40
|
+
def request(&block)
|
41
|
+
self.new(&block).body
|
44
42
|
end
|
45
43
|
|
46
|
-
def
|
47
|
-
|
44
|
+
def query_params(value)
|
45
|
+
Curl::postalize(value)
|
48
46
|
end
|
47
|
+
end
|
49
48
|
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
49
|
+
|
50
|
+
|
51
|
+
def initialize(&block)
|
52
|
+
@headers ||= {}
|
53
|
+
instance_eval(&block) if block_given?
|
54
|
+
end
|
55
|
+
|
56
|
+
def header(name, content)
|
57
|
+
@headers ||= {}
|
58
|
+
@headers[name] = content
|
59
|
+
end
|
60
|
+
|
61
|
+
def make_request_of(request_method,i_e =nil,&block)
|
62
|
+
i_e ||= @ignore_error
|
63
|
+
@resp_cookies = nil
|
64
|
+
@curl = Curl::Easy.new(@uri) do |http|
|
65
|
+
setup_request request_method, http
|
66
|
+
end
|
67
|
+
@curl.ssl_verify_peer = @ssl ||false
|
68
|
+
# @curl.ignore_content_length = true
|
69
|
+
if @form_fields
|
70
|
+
@curl.http_post(*@form_field)
|
71
|
+
else
|
56
72
|
@curl.http request_method
|
57
|
-
|
58
|
-
|
59
|
-
|
73
|
+
end
|
74
|
+
if @curl.response_code == 301
|
75
|
+
@uri = @curl.redirect_url
|
76
|
+
make_request_of request_method, i_e
|
77
|
+
end
|
78
|
+
if @curl.response_code != 200
|
79
|
+
if @error_handler
|
80
|
+
puts @error_handler.call unless i_e
|
60
81
|
end
|
61
82
|
end
|
83
|
+
@ignore_error = false
|
84
|
+
end
|
62
85
|
|
63
|
-
|
64
|
-
|
65
|
-
|
86
|
+
def status_code
|
87
|
+
@curl.response_code
|
88
|
+
end
|
66
89
|
|
67
|
-
|
68
|
-
|
69
|
-
|
90
|
+
def decode_html(string)
|
91
|
+
CGI.unescapeHTML(string)
|
92
|
+
end
|
70
93
|
|
71
|
-
|
72
|
-
|
73
|
-
|
94
|
+
def encode_html(string)
|
95
|
+
CGI.escapeHTML(string)
|
96
|
+
end
|
74
97
|
|
98
|
+
def post_body
|
99
|
+
get_payload
|
100
|
+
end
|
75
101
|
|
76
|
-
|
102
|
+
def ignore_error
|
103
|
+
@ignore_error = true
|
104
|
+
end
|
77
105
|
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
http.max_redirects = @redirects || 3
|
82
|
-
http.post_body = get_payload || nil
|
83
|
-
http.http_auth_types = @auth_type || nil
|
84
|
-
http.username = @username || nil
|
85
|
-
http.password = @password || nil
|
86
|
-
http.useragent = "curb"
|
87
|
-
http
|
88
|
-
end
|
106
|
+
def body
|
107
|
+
@curl.body
|
108
|
+
end
|
89
109
|
|
110
|
+
def response_code
|
111
|
+
@curl.response_code
|
112
|
+
end
|
90
113
|
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
114
|
+
def response_cookies
|
115
|
+
@resp_cookies ||=
|
116
|
+
@curl.header_str.split("\r\n").each_with_object({}) do |header,headers|
|
117
|
+
if header =~ Regex[:cookie_header]
|
118
|
+
header.gsub(Regex[:cookie_header],'').split(';').each do |segment|
|
119
|
+
unless segment =~ /secure/
|
120
|
+
headers[$1.strip.downcase] = $2.gsub('"','') if segment =~ /(.*?)=(.*?)($|;|,(?! ))/
|
121
|
+
end
|
122
|
+
end
|
96
123
|
end
|
97
124
|
end
|
125
|
+
end
|
126
|
+
|
127
|
+
def query_params(value)
|
128
|
+
Curl::postalize(value)
|
129
|
+
end
|
130
|
+
|
131
|
+
|
132
|
+
private
|
133
|
+
|
134
|
+
|
135
|
+
def setup_request(method,http)
|
136
|
+
http.headers['request-method'] = method.to_s
|
137
|
+
http.headers.update(headers || {})
|
138
|
+
http.max_redirects = @redirects || 3
|
139
|
+
http.post_body = get_payload || nil
|
140
|
+
http.http_auth_types = @auth_type || nil
|
141
|
+
http.username = @username || nil
|
142
|
+
http.password = @password || nil
|
143
|
+
http.useragent = "curb"
|
144
|
+
http.multipart_form_post = @form_field_name ? true : false
|
145
|
+
if @cookies
|
146
|
+
http.enable_cookies = true
|
147
|
+
http.cookies = (@cookies.is_a? String) ? @cookies : @cookies.inject("") {|cookies,data| "%s%s=%s;" % data.unshift(cookies) }
|
148
|
+
end
|
149
|
+
http
|
150
|
+
end
|
98
151
|
|
152
|
+
|
153
|
+
def get_payload
|
154
|
+
if @type_converter
|
155
|
+
@type_converter.call(@payload)
|
156
|
+
else
|
157
|
+
@payload
|
158
|
+
end
|
99
159
|
end
|
160
|
+
|
100
161
|
end
|
data/lib/dynamised/meta.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: Dynamised
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Martin Becker
|
8
8
|
autorequire:
|
9
|
-
bindir:
|
9
|
+
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-04-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: tty-spinner
|
@@ -99,7 +99,8 @@ description: |
|
|
99
99
|
it finds the requested infomation.
|
100
100
|
email:
|
101
101
|
- mbeckerwork@gmail.com
|
102
|
-
executables:
|
102
|
+
executables:
|
103
|
+
- dynamised
|
103
104
|
extensions: []
|
104
105
|
extra_rdoc_files: []
|
105
106
|
files:
|