proxylinker 0.1.1 → 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fddd4b8645ae8cb1b2ee406cdc53bcafd830e5657563005442aee620e3204458
4
- data.tar.gz: a372cbeb56a5e070204fc9984705680610b5cafca1516ed0b6000f44761b788a
3
+ metadata.gz: 314680df64623ac88f6916517e064822f9ecfac9facf8b7c8c3ac45da1bd0fed
4
+ data.tar.gz: 6586e23d1a9bafbdfc87e2f39cd3c00bc5dbd8ae75dcb0c4913bb2bdcec237cf
5
5
  SHA512:
6
- metadata.gz: 48958cc5956e045c4ea6c7dca32462fbe8c2282a9bc09ad8a18e5d1baa6977ddcd0ffec09dc98f8c73d6d9623fe61ae0a07d627584fcac0eec13320ef268eb80
7
- data.tar.gz: 4dbde18e225d9406f5ce03c21188776a27d5044478feaa3c5ca32db175037dda663e46e54a4b9f900b90b99e88c5aec1b87e72c482ae9db75406eb37915ad5c2
6
+ metadata.gz: f248846aac9a26bf11c5598ee0505505cbeefbddfe60187dacdf29f93a4a82625a9e912b76e284249276e13bc472132d8209f8b81e28235e24520d02fe9bde6b
7
+ data.tar.gz: eb6ab78145918be7736da750e923f03c7121d131139e734f355c9940c070aac11e78f5b3d47fa7ad2300c6d23934a2c11bf3e3c3e2e2e2d1b698141ef230c3f2
@@ -0,0 +1,54 @@
1
+ require 'net/http'
2
+ require 'uri'
3
+ require 'ostruct'
4
+
5
+ module Proxylinker
6
+ class ProxyList
7
+ attr_reader :proxies, :timeout
8
+
9
+ # Initialiserer ProxyList med en filsti og timeout-parameter (standard: 5 sek.)
10
+ def initialize(proxy_file_path, timeout: 5)
11
+ @proxy_file_path = proxy_file_path
12
+ @timeout = timeout
13
+ @proxies = load_proxies
14
+ end
15
+
16
+ # Læs proxies fra en fil (forventet format: IP:PORT per linje)
17
+ def load_proxies
18
+ proxies = []
19
+ File.readlines(@proxy_file_path).each do |line|
20
+ addr, port = line.strip.split(':')
21
+ proxies << OpenStruct.new(addr: addr, port: port)
22
+ end
23
+ proxies
24
+ end
25
+
26
+ # Hent en tilfældig proxy uden at validere
27
+ def get_random_proxy
28
+ @proxies.sample
29
+ end
30
+
31
+ # Metode til at udføre en HTTP-get-anmodning med eller uden proxy
32
+ def fetch_with_proxy(uri_str)
33
+ uri = URI.parse(uri_str)
34
+ proxy = get_random_proxy
35
+
36
+ begin
37
+ http = Net::HTTP.new(uri.host, uri.port, proxy.addr, proxy.port)
38
+ http.open_timeout = @timeout
39
+ http.read_timeout = @timeout
40
+ request = Net::HTTP::Get.new(uri.request_uri)
41
+ response = http.request(request)
42
+ return response.body
43
+ rescue
44
+ # Hvis der opstår en fejl med proxyen, prøv uden proxy
45
+ http = Net::HTTP.new(uri.host, uri.port)
46
+ http.open_timeout = @timeout
47
+ http.read_timeout = @timeout
48
+ request = Net::HTTP::Get.new(uri.request_uri)
49
+ response = http.request(request)
50
+ return response.body
51
+ end
52
+ end
53
+ end
54
+ end
@@ -1,5 +1,3 @@
1
- # lib/proxylinker/version.rb
2
-
3
1
  module Proxylinker
4
- VERSION = "0.1.1"
2
+ VERSION = "0.1.3"
5
3
  end
data/proxylinker.gemspec CHANGED
@@ -12,7 +12,7 @@ Gem::Specification.new do |spec|
12
12
  spec.description = "ProxyLinker allows you to load, validate, and use proxies from a list."
13
13
  spec.license = "MIT"
14
14
  spec.required_ruby_version = ">= 3.0.0"
15
-
15
+ spec.homepage = "https://github.com/Max-lindberg/Proxylinker-gem"
16
16
  # Specify which files should be added to the gem when it is released.
17
17
  spec.files = Dir.glob("lib/**/*.rb") + ["proxylinker.gemspec", "README.md", "LICENSE.txt"]
18
18
  spec.require_paths = ["lib"]
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: proxylinker
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Max Lindberg
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-10-19 00:00:00.000000000 Z
11
+ date: 2024-10-20 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: ProxyLinker allows you to load, validate, and use proxies from a list.
14
14
  email:
@@ -19,11 +19,11 @@ extra_rdoc_files: []
19
19
  files:
20
20
  - LICENSE.txt
21
21
  - README.md
22
- - lib/proxy_list.rb
23
22
  - lib/proxylinker.rb
23
+ - lib/proxylinker/proxy_list.rb
24
24
  - lib/proxylinker/version.rb
25
25
  - proxylinker.gemspec
26
- homepage:
26
+ homepage: https://github.com/Max-lindberg/Proxylinker-gem
27
27
  licenses:
28
28
  - MIT
29
29
  metadata: {}
data/lib/proxy_list.rb DELETED
@@ -1,49 +0,0 @@
1
- require 'net/http'
2
- require 'uri'
3
- require 'ostruct'
4
-
5
- module Proxylinker
6
- class ProxyList
7
- attr_reader :proxies, :timeout
8
-
9
- # Initialiserer ProxyList med en filsti og timeout-parameter (standard: 5 sek.)
10
- def initialize(proxy_file_path, timeout: 5)
11
- @proxy_file_path = proxy_file_path
12
- @timeout = timeout
13
- @proxies = load_proxies
14
- end
15
-
16
- # Læs proxies fra en fil (forventet format: IP:PORT per linje)
17
- def load_proxies
18
- proxies = []
19
- File.readlines(@proxy_file_path).each do |line|
20
- addr, port = line.strip.split(':')
21
- proxies << OpenStruct.new(addr: addr, port: port)
22
- end
23
- proxies
24
- end
25
-
26
- # Validér en proxy ved at forsøge at oprette forbindelse til en kendt URL
27
- def validate_proxy(proxy)
28
- uri = URI.parse('https://google.com')
29
- http = Net::HTTP.new(uri.host, uri.port, proxy.addr, proxy.port)
30
- http.open_timeout = @timeout
31
- http.read_timeout = @timeout
32
-
33
- begin
34
- response = http.get(uri.path)
35
- return response.is_a?(Net::HTTPSuccess)
36
- rescue
37
- false
38
- end
39
- end
40
-
41
- # Hent en tilfældig fungerende proxy
42
- def get_random_proxy
43
- @proxies.shuffle.each do |proxy|
44
- return proxy if validate_proxy(proxy)
45
- end
46
- nil
47
- end
48
- end
49
- end