tweakphoeus 0.5.0 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 75e41d28b98ec62b97907e6adb7fa885a1fafc784045717fa44611e4aa172a68
4
- data.tar.gz: b8c45de633c250c6c06a6307ce8cf023a8763c4579afc0513ac153e896eded6e
3
+ metadata.gz: 29477b8f68a5920b4dfccb0bb6e3ac8cfcbc1598d5cf21707b128f11ee930538
4
+ data.tar.gz: fd0d5b8abf410c60ae8ca4938ac5fd85ec7165a4a0f40759635e6ac92c9db9d5
5
5
  SHA512:
6
- metadata.gz: 21c2be488160c13d8b5202f80508e6960d0f07348880f7170bee2d541cd433cca8e865b0c7fd9eb1342f2749e9d5fa540b1ad83938ad77e3bb6b236e6b70bedd
7
- data.tar.gz: b1601abc1b9e426f2c3bc6e729464739ccebd5b3eae5f6f80c91982558a05f18352c395450be3cd50327b2f0278894f448bd91a0cf079a0305be5f1207860fbe
6
+ metadata.gz: '0183ff90c46f024adc48de310cab5e076fe6a71b1334561f0c807c0f6afc3f946c76a096d3574db994eb1df5fa905c3be1be3cd5329c49436fa62095f5b7bd97'
7
+ data.tar.gz: 685b76dc8f0da6177761f9a264e63072282865f41f526bb9b7778252991af424743f65510fd798e2c7831c5e6620e3b5d4dc12d05be43d9e16ecc511218fdf9a
@@ -0,0 +1,23 @@
1
+ name: Github on-pull-request Action
2
+
3
+ on: [pull_request]
4
+
5
+ jobs:
6
+ rubocop:
7
+ runs-on: ubuntu-latest
8
+ steps:
9
+ - uses: actions/checkout@v2
10
+ - name: RuboCop Linter Action
11
+ uses: andrewmcodes/rubocop-linter-action@v3.3.0
12
+ env:
13
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
14
+ reek:
15
+ name: Reek
16
+ runs-on: ubuntu-latest
17
+ steps:
18
+ - uses: actions/checkout@v2
19
+ - uses: actions/setup-ruby@v1
20
+ with:
21
+ ruby-version: '2.7'
22
+ - run: gem install reek --no-doc
23
+ - run: reek .
data/.rubocop.yml ADDED
@@ -0,0 +1,6 @@
1
+ AllCops:
2
+ NewCops: enable
3
+ TargetRubyVersion: 2.6
4
+
5
+ Layout/LineLength:
6
+ Max: 120
data/CHANGELOG.md CHANGED
@@ -24,13 +24,19 @@
24
24
 
25
25
  Bumping required ruby version to >=2.6.0
26
26
 
27
-
28
- Upgrading Typhoeus dependency to 1.4.0
29
-
30
-
31
27
  Upgrading Development dependencies:
32
28
  - Bundler 2.2
33
29
  - Rake 13.0
34
30
  - Rspec 3.10
35
31
 
36
32
  Swapping CI environment from CircleCI to Github Actions
33
+
34
+ Upgrading Typhoeus dependency to 1.4.0
35
+
36
+ -- v0.6.0 - Major refactor of Tweakphoeus::Client API
37
+
38
+ - New interface for Tweakphoeus::Client
39
+ - Initializer now accepts ssl_verifypeer and redirect parameters instead of having it on all HTTP verb methods (get, delete and post)
40
+ - ssl_verifypeer and redirect parameters removed from HTTP verb methods
41
+ - cookie_jar is not longer an Hash, it has been extracted to Tweakphoeus::CookieJar class
42
+ - refeer_list is not longer an Array, it has been extracted to Tweakphoeus::RefererList class
data/Gemfile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
5
  # Specify your gem's dependencies in tweakphoeus.gemspec
data/README.md CHANGED
@@ -1,6 +1,8 @@
1
- [![Gem Version](https://badge.fury.io/rb/tweakphoeus.svg)](https://badge.fury.io/rb/tweakphoeus)
2
- [![Code Climate](https://codeclimate.com/github/basestylo/Tweakphoeus/badges/gpa.svg)](https://codeclimate.com/github/basestylo/Tweakphoeus)
1
+ [![Gem Version](https://img.shields.io/gem/v/tweakphoeus.svg)](https://rubygems.org/gems/tweakphoeus)
2
+ [![Maintainability](https://api.codeclimate.com/v1/badges/f4c831c3308b1f53bc2a/maintainability)](https://codeclimate.com/github/basestylo/Tweakphoeus/maintainability)
3
+ [![GitHub license](https://img.shields.io/github/license/Naereen/StrapDown.js.svg)](https://github.com/Naereen/StrapDown.js/blob/master/LICENSE)
3
4
  [![Issue Count](https://codeclimate.com/github/basestylo/Tweakphoeus/badges/issue_count.svg)](https://codeclimate.com/github/basestylo/Tweakphoeus)
5
+
4
6
  # Tweakphoeus
5
7
 
6
8
  We usually describe this gem as 'typhoeus on steroids'. We add some browser features, for example cookies management and automation in tipical headers that browsers define in his HTTP stack.
data/Rakefile CHANGED
@@ -1,6 +1,8 @@
1
- require "bundler/gem_tasks"
2
- require "rspec/core/rake_task"
1
+ # frozen_string_literal: true
2
+
3
+ require 'bundler/gem_tasks'
4
+ require 'rspec/core/rake_task'
3
5
 
4
6
  RSpec::Core::RakeTask.new(:spec)
5
7
 
6
- task :default => :spec
8
+ task default: :spec
data/bin/console CHANGED
@@ -1,7 +1,8 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
 
3
- require "bundler/setup"
4
- require "tweakphoeus"
4
+ require 'bundler/setup'
5
+ require 'tweakphoeus'
5
6
 
6
7
  # You can add fixtures and/or initialization code here to make experimenting
7
8
  # with your gem easier. You can also use a different console, if you like.
@@ -10,5 +11,5 @@ require "tweakphoeus"
10
11
  # require "pry"
11
12
  # Pry.start
12
13
 
13
- require "irb"
14
+ require 'irb'
14
15
  IRB.start
data/lib/tweakphoeus.rb CHANGED
@@ -1,87 +1,44 @@
1
- require "tweakphoeus/version"
2
- require "tweakphoeus/user_agent"
3
- require "typhoeus"
1
+ # frozen_string_literal: true
2
+
3
+ require 'tweakphoeus/version'
4
+ require 'tweakphoeus/user_agent'
5
+ require 'typhoeus'
4
6
 
5
7
  module Tweakphoeus
8
+ # Http client class
6
9
  class Client
7
- attr_accessor :cookie_jar
8
- attr_accessor :base_headers
9
-
10
- def initialize(ua_systems: [:linux, :mac])
11
- @cookie_jar = {}
12
- @referer = [""]
13
- @base_headers = {
14
- "User-Agent" => UserAgent.random(systems: ua_systems),
15
- "Accept-Language" => "es-ES,es;q=0.9,en;q=0.8",
16
- "Accept-Encoding" => "",
17
- "Connection" => "keep-alive"
18
- }
10
+ attr_accessor :cookie_jar, :referer_list, :base_headers, :redirect
11
+ attr_reader :ssl_verifypeer
12
+
13
+ def initialize(ua_systems: %i[linux mac], ssl_verifypeer: true, redirect: false)
14
+ @cookie_jar = Tweakphoeus::CookieJar.new
15
+ @referer_list = Tweakphoeus::RefererList.new
16
+ @redirect = redirect
17
+ @base_headers = build_base_headers(ua_systems)
19
18
  @proxy = nil
20
19
  @proxyuserpwd = nil
21
- @ssl_verifypeer = true
22
- end
23
-
24
- def get(url, body: nil, params: nil, headers: nil, redirect: true, ssl_verifypeer: @ssl_verifypeer)
25
- set_referer_from_headers(headers)
26
- http_request(url, body: body, params: params, headers: headers, redirect: redirect, method: :get, ssl_verifypeer: ssl_verifypeer)
27
- end
28
-
29
- def delete(url, body: nil, headers: nil, redirect: true, ssl_verifypeer: @ssl_verifypeer)
30
- set_referer_from_headers(headers)
31
- http_request(url, body: body, headers: headers, redirect: redirect, method: :delete, ssl_verifypeer: ssl_verifypeer)
32
- end
33
-
34
- def post(url, body: nil, params: nil, headers: nil, redirect: false, ssl_verifypeer: @ssl_verifypeer)
35
- set_referer_from_headers(headers)
36
- http_request(url, body: body, params: nil, headers: headers, redirect: redirect, method: :post, ssl_verifypeer: ssl_verifypeer)
37
- end
38
-
39
- def get_hide_inputs response
40
- #TODO
20
+ @ssl_verifypeer = ssl_verifypeer
41
21
  end
42
22
 
43
- def add_cookies host, key, value
44
- domain = get_domain(host)
45
- @cookie_jar[domain] ||= {}
46
- @cookie_jar[domain][key] = value
23
+ def get(url, body: nil, params: nil, headers: nil)
24
+ referer_from_headers(headers)
25
+ http_request(url, body: body, params: params, headers: headers, method: :get)
47
26
  end
48
27
 
49
- def get_domain domain
50
- domain.match(/([a-zA-Z0-9]+:\/\/|)([^\/]+)/)[2].gsub(/^\./,'')
28
+ def delete(url, body: nil, headers: nil)
29
+ referer_from_headers(headers)
30
+ http_request(url, body: body, headers: headers, method: :delete)
51
31
  end
52
32
 
53
- def push_referer url = ""
54
- @referer << url
55
- url
33
+ def post(url, body: nil, headers: nil)
34
+ referer_from_headers(headers)
35
+ http_request(url, body: body, headers: headers, method: :post)
56
36
  end
57
37
 
58
- def pop_referer
59
- @referer.pop
60
- end
38
+ def set_proxy(url, auth)
39
+ return unless auth
61
40
 
62
- def get_referer
63
- @referer.last
64
- end
65
-
66
- def cookie_string(url, headers={})
67
- domain = get_domain(url)
68
- headers ||= {}
69
- cookies = parse_cookie(headers["Cookie"])
70
-
71
- while domain != ""
72
- if @cookie_jar[domain]
73
- @cookie_jar[domain].each do |key, value|
74
- cookies[key] ||= value
75
- end
76
- end
77
- domain = domain.gsub(/^([^\.]+\.?)/, '')
78
- end
79
-
80
- cookies.map{ |key, value| "#{key}=#{value}" }.join('; ')
81
- end
82
-
83
- def set_proxy(url, auth = nil)
84
- @proxyuserpwd = "#{auth[:user]}:#{auth[:password]}" if auth.is_a?(Hash)
41
+ @proxyuserpwd = "#{auth[:user]}:#{auth[:password]}"
85
42
  @proxy = url
86
43
  end
87
44
 
@@ -92,94 +49,53 @@ module Tweakphoeus
92
49
 
93
50
  private
94
51
 
95
- def http_request(url, body: nil, params: nil, headers: nil, redirect: false, method: :get, ssl_verifypeer: @ssl_verifypeer)
96
- request_headers = merge_default_headers(headers)
97
- request_headers["Cookie"] = cookie_string(url, headers)
98
- request_headers["Referer"] = get_referer
99
- response = Typhoeus.send(method, url, body: body, params: params, headers: request_headers, proxy: @proxy, proxyuserpwd: @proxyuserpwd, ssl_verifypeer: ssl_verifypeer)
100
- obtain_cookies(response)
101
- set_referer(url) if method != :post
102
- if redirect && has_redirect?(response)
103
- if response.code != 307
104
- method = :get
105
- body = nil
106
- end
107
- response = http_request(redirect_url(response),
108
- body: body,
109
- headers: headers,
110
- redirect: redirect,
111
- method: method,
112
- ssl_verifypeer: ssl_verifypeer)
113
- end
114
- response
115
- end
52
+ def http_request(url, body: nil, params: nil, headers: nil, method: :get)
53
+ response = Typhoeus.send(method, url, body: body, params: params, headers: build_request_headers(headers),
54
+ proxy: @proxy, proxyuserpwd: @proxyuserpwd, ssl_verifypeer: ssl_verifypeer)
116
55
 
117
- def merge_default_headers headers
118
- headers ? @base_headers.merge(headers) : @base_headers
119
- end
56
+ @cookie_jar.obtain_cookies(response)
57
+ @referer_list.push_referer(url) if method != :post
120
58
 
121
- def obtain_cookies response
122
- set_cookies_field = response.headers["Set-Cookie"]
123
- return if set_cookies_field.nil?
124
- if set_cookies_field.is_a?(String)
125
- set_cookies_field = [set_cookies_field]
126
- end
59
+ return process_redirect(response) if redirect && redirect?(response)
127
60
 
128
- set_cookies_field.each do |cookie|
129
- key, value = cookie.match(/^([^=]+)=(.+)/).to_a[1..-1]
130
- domain = cookie.match(/Domain=([^;]+)/)
131
-
132
- if domain.nil?
133
- domain = get_domain(response.request.url)
134
- else
135
- domain = domain[1].gsub(/^\./,'')
136
- end
137
-
138
- value = value.split(';').first
139
- if value != "\"\""
140
- @cookie_jar[domain] ||= {}
141
- @cookie_jar[domain][key] = value
142
- else
143
- @cookie_jar[domain] ||= {}
144
- @cookie_jar[domain].delete(key)
145
- end
146
- end
61
+ response
147
62
  end
148
63
 
149
- def parse_cookie(string)
150
- cookies = {}
64
+ def build_request_headers(headers)
65
+ request_headers = merge_default_headers(headers)
66
+ request_headers['Cookie'] = @cookie_jar.cookie_string(url, headers)
67
+ request_headers['Referer'] = @referer_list.last_referer
68
+ end
151
69
 
152
- if string.is_a?(String)
153
- string.split(';').each do |part|
154
- key, value = part.split('=')
155
- key.strip!
156
- cookies[key.strip] = value if value && !["Domain","Path","domain","path"].include?(key)
157
- end
70
+ def process_redirect(response)
71
+ if response.code != 307
72
+ method = :get
73
+ body = nil
158
74
  end
159
75
 
160
- cookies
161
- end
162
-
163
- def has_redirect? response
164
- !redirect_url(response).nil?
76
+ http_request(redirect_url(response), body: body, headers: headers,
77
+ redirect: redirect, method: method, ssl_verifypeer: ssl_verifypeer)
165
78
  end
166
79
 
167
- def redirect_url response
168
- response.headers["Location"]
80
+ def build_base_headers(ua_systems)
81
+ {
82
+ 'User-Agent' => UserAgent.random(systems: ua_systems),
83
+ 'Accept-Language' => 'es-ES,es;q=0.9,en;q=0.8',
84
+ 'Accept-Encoding' => '',
85
+ 'Connection' => 'keep-alive'
86
+ }
169
87
  end
170
88
 
171
- def purge_bad_cookies cookies
172
- cookies.reject{|e| e.first.last=="\"\""}
89
+ def merge_default_headers(headers)
90
+ headers ? @base_headers.merge(headers) : @base_headers
173
91
  end
174
92
 
175
- def set_referer_from_headers headers
176
- if headers && headers["Referer"].is_a?(String)
177
- @referer.last.replace headers["Referer"]
178
- end
93
+ def redirect?(response)
94
+ !redirect_url(response).nil?
179
95
  end
180
96
 
181
- def set_referer url
182
- @referer.last.replace url
97
+ def redirect_url(response)
98
+ response.headers['Location']
183
99
  end
184
100
  end
185
101
  end
@@ -0,0 +1,79 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'tweakphoeus/helpers'
4
+
5
+ module Tweakphoeus
6
+ # Cookie manager
7
+ class CookieJar
8
+ include Tweakphoeus::Helpers
9
+
10
+ def initialize
11
+ @cookie_jar = {}
12
+ end
13
+
14
+ def purge_bad_cookies(cookies)
15
+ cookies.reject { |cookie| cookie.first.last == '""' }
16
+ end
17
+
18
+ def cookie_string(url, headers = {})
19
+ domain = get_domain(url)
20
+ headers ||= {}
21
+ cookies = parse_cookie(headers['Cookie'])
22
+
23
+ while domain != ''
24
+ @cookie_jar[domain]&.each do |key, value|
25
+ cookies[key] ||= value
26
+ end
27
+ domain = domain.gsub(/^([^.]+\.?)/, '')
28
+ end
29
+
30
+ cookies.map { |key, value| "#{key}=#{value}" }.join('; ')
31
+ end
32
+
33
+ def obtain_cookies(response)
34
+ set_cookies_field = [response.headers['Set-Cookie']].compact
35
+
36
+ set_cookies_field.each do |cookie|
37
+ key, value = cookie.match(/^([^=]+)=(.+)/).to_a[1..]
38
+ domain = cookie.match(/Domain=([^;]+)/)&.at(1)&.gsub(/^\./, '')
39
+
40
+ domain = get_domain(response.request.url) if domain.nil
41
+ set_cookie(domain, key, value)
42
+ end
43
+ end
44
+
45
+ def add_cookies(host, key, value)
46
+ domain = get_domain(host)
47
+ @cookie_jar[domain] ||= {}
48
+ @cookie_jar[domain][key] = value
49
+ end
50
+
51
+ private
52
+
53
+ def set_cookie(domain, key, value)
54
+ @cookie_jar[domain] ||= {}
55
+
56
+ value = value.split(';').first
57
+
58
+ if value == '""'
59
+ @cookie_jar[domain].delete(key)
60
+ else
61
+ @cookie_jar[domain][key] = value
62
+ end
63
+ end
64
+
65
+ def parse_cookie(string)
66
+ cookies = {}
67
+
68
+ if string.is_a?(String)
69
+ string.split(';').each do |part|
70
+ key, value = part.split('=')
71
+ key.strip!
72
+ cookies[key.strip] = value if value && !%w[Domain Path domain path].include?(key)
73
+ end
74
+ end
75
+
76
+ cookies
77
+ end
78
+ end
79
+ end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Tweakphoeus
4
+ # Helper functions for common behavious across all classes
5
+ module Helpers
6
+ def get_domain(domain)
7
+ domain.match(%r{([a-zA-Z0-9]+://|)([^/]+)})[2].gsub(/^\./, '')
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Tweakphoeus
4
+ # RefererList class handle referer logic for Referer header in requests
5
+ class RefererList
6
+ def initialize
7
+ @referer = []
8
+ end
9
+
10
+ def push_referer(url)
11
+ @referer << url
12
+ end
13
+
14
+ def pop_referer
15
+ @referer.pop || ''
16
+ end
17
+
18
+ def last_referer
19
+ @referer.last
20
+ end
21
+
22
+ def referer_from_headers(headers)
23
+ @referer.last.replace(headers['Referer']) if headers && headers['Referer'].is_a?(String)
24
+ end
25
+ end
26
+ end
@@ -1,16 +1,19 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tweakphoeus
4
+ # User agent data generator
2
5
  class UserAgent
3
6
  OS_DATA = {
4
- types: [:win, :linux, :mac],
5
- linux_distro: ["Ubuntu", "Debian", "Fedora", "gNewSense", "Linux Mint", "OpenSUSE", "Mandriva"],
6
- arch: ["x86", "x86_64"],
7
- win_arch: ["Win64; x64", "WOW64"]
8
- }
7
+ types: %i[win linux mac],
8
+ linux_distro: ['Ubuntu', 'Debian', 'Fedora', 'gNewSense', 'Linux Mint', 'OpenSUSE', 'Mandriva'],
9
+ arch: %w[x86 x86_64],
10
+ win_arch: ['Win64; x64', 'WOW64']
11
+ }.freeze
9
12
 
10
13
  class << self
11
14
  def random(systems: OS_DATA[:types])
12
15
  user_agent = "Mozilla/5.0 (#{os[systems.sample]}) #{browser}"
13
- firefox_version = user_agent.match(/Firefox\/([0-9\.]+)/)
16
+ firefox_version = user_agent.match(%r{Firefox/([0-9.]+)})
14
17
  user_agent.gsub!(')', "; rv:#{firefox_version[1]})") if firefox_version.is_a?(MatchData)
15
18
  user_agent
16
19
  end
@@ -19,19 +22,18 @@ module Tweakphoeus
19
22
 
20
23
  def os
21
24
  {
22
- win: "Windows NT #{%w(5 6 7 8 10).sample + '.' + %w(0 1).sample}",
23
- linux: "X11; #{["", OS_DATA[:linux_distro].sample+"; "].sample}Linux #{OS_DATA[:arch].sample}",
25
+ win: "Windows NT #{"#{%w[5 6 7 8 10].sample}.#{%w[0 1].sample}"}",
26
+ linux: "X11; #{['', "#{OS_DATA[:linux_distro].sample}; "].sample}Linux #{OS_DATA[:arch].sample}",
24
27
  mac: "Macintosh; Intel Mac OS X 10_#{Random.rand(11..13)}_#{Random.rand(0..3)}"
25
28
  }
26
29
  end
27
30
 
28
31
  def browser
29
- chrome_version = "Chrome/6#{Random.rand(0..5)}.0.#{Random.rand(1000..4000)}.#{Random.rand(100..900)}"
30
- webkit_603 = "603.#{Random.rand(0..9)}.#{Random.rand(0..9)}"
31
- ["Gecko/20100101 Firefox/#{Random.rand(55..59)}.0",
32
+ chrome_version = "Chrome/#{Random.rand(90..92)}.0.#{Random.rand(1000..4000)}.#{Random.rand(100..900)}"
33
+ webkit603 = "603.#{Random.rand(0..9)}.#{Random.rand(0..9)}"
34
+ ["Gecko/20100101 Firefox/#{Random.rand(82..90)}.0",
32
35
  "AppleWebKit/537.36 (KHTML, like Gecko) #{chrome_version} Safari/537.36",
33
- "AppleWebKit/#{webkit_603} (KHTML, like Gecko) Version/10.1 #{chrome_version} Safari/#{webkit_603}"
34
- ].sample
36
+ "AppleWebKit/#{webkit603} (KHTML, like Gecko) Version/10.1 #{chrome_version} Safari/#{webkit603}"].sample
35
37
  end
36
38
  end
37
39
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tweakphoeus
2
- VERSION = "0.5.0"
4
+ VERSION = '0.6.0'
3
5
  end
data/tweakphoeus.gemspec CHANGED
@@ -1,36 +1,34 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative "lib/tweakphoeus/version"
3
+ require_relative 'lib/tweakphoeus/version'
4
4
 
5
5
  Gem::Specification.new do |spec|
6
- spec.name = "tweakphoeus"
6
+ spec.name = 'tweakphoeus'
7
7
  spec.version = Tweakphoeus::VERSION
8
- spec.authors = ["David Martin Garcia"]
9
- spec.email = ["davidmartingarcia@gmail.com"]
8
+ spec.authors = ['David Martin Garcia']
9
+ spec.email = ['davidmartingarcia@gmail.com']
10
10
 
11
- spec.summary = %q{Typhoeus on steroids.}
12
- spec.description = %q{Typhoeus wrapper with some extras.}
13
- spec.homepage = "https://github.com/basestylo/Tweakphoeus/"
14
- spec.license = "MIT"
15
- spec.required_ruby_version = ">= 2.6.0"
11
+ spec.summary = 'Typhoeus on steroids.'
12
+ spec.description = 'Typhoeus wrapper with some extras.'
13
+ spec.homepage = 'https://github.com/basestylo/Tweakphoeus/'
14
+ spec.license = 'MIT'
15
+ spec.required_ruby_version = '>= 2.6.0'
16
16
 
17
- spec.metadata["allowed_push_host"] = "https://rubygems.org/"
18
-
19
- spec.metadata["homepage_uri"] = spec.homepage
20
- spec.metadata["source_code_uri"] = "https://github.com/dmartingarcia/Tweakphoeus"
21
- spec.metadata["changelog_uri"] = "https://github.com/dmartingarcia/Tweakphoeus/blob/master/CHANGELOG.md"
17
+ spec.metadata['homepage_uri'] = spec.homepage
18
+ spec.metadata['source_code_uri'] = 'https://github.com/dmartingarcia/Tweakphoeus'
19
+ spec.metadata['changelog_uri'] = 'https://github.com/dmartingarcia/Tweakphoeus/blob/master/CHANGELOG.md'
22
20
 
23
21
  # Specify which files should be added to the gem when it is released.
24
22
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
25
23
  spec.files = Dir.chdir(File.expand_path(__dir__)) do
26
24
  `git ls-files -z`.split("\x0").reject { |f| f.match(%r{\A(?:test|spec|features)/}) }
27
25
  end
28
- spec.bindir = "exe"
26
+ spec.bindir = 'exe'
29
27
  spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
30
- spec.require_paths = ["lib"]
28
+ spec.require_paths = ['lib']
31
29
 
32
30
  spec.add_dependency 'typhoeus', '~> 1.4'
33
- spec.add_development_dependency "bundler", "~> 2.2"
34
- spec.add_development_dependency "rake", "~> 13.0"
35
- spec.add_development_dependency "rspec", "~> 3.10"
31
+ spec.add_development_dependency 'bundler', '~> 2.2'
32
+ spec.add_development_dependency 'rake', '~> 13.0'
33
+ spec.add_development_dependency 'rspec', '~> 3.10'
36
34
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tweakphoeus
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Martin Garcia
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-08-17 00:00:00.000000000 Z
11
+ date: 2021-08-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: typhoeus
@@ -75,10 +75,12 @@ extra_rdoc_files: []
75
75
  files:
76
76
  - ".github/workflows/auto-tag.yaml"
77
77
  - ".github/workflows/main.yml"
78
+ - ".github/workflows/on-pull-request.yaml"
78
79
  - ".github/workflows/on_new_tag.yaml"
79
80
  - ".github/workflows/version-forget-me-not.yaml"
80
81
  - ".gitignore"
81
82
  - ".rspec"
83
+ - ".rubocop.yml"
82
84
  - CHANGELOG.md
83
85
  - CODE_OF_CONDUCT.md
84
86
  - Gemfile
@@ -88,6 +90,9 @@ files:
88
90
  - bin/console
89
91
  - bin/setup
90
92
  - lib/tweakphoeus.rb
93
+ - lib/tweakphoeus/cookie_jar.rb
94
+ - lib/tweakphoeus/helpers.rb
95
+ - lib/tweakphoeus/referer_list.rb
91
96
  - lib/tweakphoeus/user_agent.rb
92
97
  - lib/tweakphoeus/version.rb
93
98
  - tweakphoeus.gemspec
@@ -95,7 +100,6 @@ homepage: https://github.com/basestylo/Tweakphoeus/
95
100
  licenses:
96
101
  - MIT
97
102
  metadata:
98
- allowed_push_host: https://rubygems.org/
99
103
  homepage_uri: https://github.com/basestylo/Tweakphoeus/
100
104
  source_code_uri: https://github.com/dmartingarcia/Tweakphoeus
101
105
  changelog_uri: https://github.com/dmartingarcia/Tweakphoeus/blob/master/CHANGELOG.md