Class: Nordvpn::Api::Client
Instance Attribute Summary collapse
Instance Method Summary
collapse
-
#connect(host:, options: {}) ⇒ Object
-
#delete(path, parameters: {}, data: {}, headers: {}, options: {}) ⇒ Object
-
#generate_proxy(host:, port:, username:, password:) ⇒ Object
-
#get(path, parameters: {}, headers: {}, options: {}) ⇒ Object
-
#head(path, parameters: {}, headers: {}, options: {}) ⇒ Object
-
#initialize(proxy: nil, configuration: ::Nordvpn::Api.configuration) ⇒ Client
constructor
A new instance of Client.
-
#patch(path, parameters: {}, data: {}, headers: {}, options: {}) ⇒ Object
-
#post(path, parameters: {}, data: {}, headers: {}, options: {}) ⇒ Object
-
#put(path, parameters: {}, data: {}, headers: {}, options: {}) ⇒ Object
-
#request(path, method: :get, parameters: {}, data: {}, headers: {}, options: {}) ⇒ Object
#country_servers, #ikev2_servers, #l2tp_servers, #openvpn_tcp_servers, #openvpn_udp_servers, #pptp_servers, #proxy_servers, #retrieve_servers, #servers_by_country, #servers_by_features, #servers_by_type_and_country, #socks_servers
Constructor Details
#initialize(proxy: nil, configuration: ::Nordvpn::Api.configuration) ⇒ Client
Returns a new instance of Client.
6
7
8
9
10
|
# File 'lib/nordvpn/api/client.rb', line 6
def initialize(proxy: nil, configuration: ::Nordvpn::Api.configuration)
self.proxy = proxy
self.configuration = configuration
self.cache = {}
end
|
Instance Attribute Details
#cache ⇒ Object
Returns the value of attribute cache.
4
5
6
|
# File 'lib/nordvpn/api/client.rb', line 4
def cache
@cache
end
|
#configuration ⇒ Object
Returns the value of attribute configuration.
4
5
6
|
# File 'lib/nordvpn/api/client.rb', line 4
def configuration
@configuration
end
|
#proxy ⇒ Object
Returns the value of attribute proxy.
4
5
6
|
# File 'lib/nordvpn/api/client.rb', line 4
def proxy
@proxy
end
|
Instance Method Details
#connect(host:, options: {}) ⇒ Object
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
# File 'lib/nordvpn/api/client.rb', line 12
def connect(host:, options: {})
request_options = options.fetch(:request, {})
connection = ::Faraday.new(host, request: request_options) do |builder|
builder.options[:timeout] = options.fetch(:timeout, nil) if options.fetch(:timeout, nil)
builder.options[:open_timeout] = options.fetch(:open_timeout, nil) if options.fetch(:open_timeout, nil)
builder.request :json
builder.response :logger, ::Logger.new(STDOUT), bodies: true if self.configuration.verbose
builder.response :json, content_type: /\bjson$/
builder.use ::FaradayMiddleware::FollowRedirects, limit: 10
if self.proxy
builder.proxy = generate_proxy(self.proxy)
puts "[NordVpn::Api::Client] - Will connect to NordVPN's API using proxy: #{self.proxy.inspect}" if self.configuration.verbose
end
builder.adapter self.configuration.faraday.fetch(:adapter, ::Faraday.default_adapter)
end
end
|
#delete(path, parameters: {}, data: {}, headers: {}, options: {}) ⇒ Object
55
56
57
|
# File 'lib/nordvpn/api/client.rb', line 55
def delete(path, parameters: {}, data: {}, headers: {}, options: {})
request path, method: :delete, parameters: parameters, data: data, headers: , options: options
end
|
#generate_proxy(host:, port:, username:, password:) ⇒ Object
87
88
89
90
91
92
93
|
# File 'lib/nordvpn/api/client.rb', line 87
def generate_proxy(host:, port:, username:, password:)
{
uri: "http://#{host}:#{port}",
user: username,
password: password
}
end
|
#get(path, parameters: {}, headers: {}, options: {}) ⇒ Object
35
36
37
|
# File 'lib/nordvpn/api/client.rb', line 35
def get(path, parameters: {}, headers: {}, options: {})
request path, method: :get, parameters: parameters, headers: , options: options
end
|
#head(path, parameters: {}, headers: {}, options: {}) ⇒ Object
39
40
41
|
# File 'lib/nordvpn/api/client.rb', line 39
def head(path, parameters: {}, headers: {}, options: {})
request path, method: :head, parameters: parameters, headers: , options: options
end
|
#patch(path, parameters: {}, data: {}, headers: {}, options: {}) ⇒ Object
51
52
53
|
# File 'lib/nordvpn/api/client.rb', line 51
def patch(path, parameters: {}, data: {}, headers: {}, options: {})
request path, method: :patch, parameters: parameters, data: data, headers: , options: options
end
|
#post(path, parameters: {}, data: {}, headers: {}, options: {}) ⇒ Object
43
44
45
|
# File 'lib/nordvpn/api/client.rb', line 43
def post(path, parameters: {}, data: {}, headers: {}, options: {})
request path, method: :post, parameters: parameters, data: data, headers: , options: options
end
|
#put(path, parameters: {}, data: {}, headers: {}, options: {}) ⇒ Object
47
48
49
|
# File 'lib/nordvpn/api/client.rb', line 47
def put(path, parameters: {}, data: {}, headers: {}, options: {})
request path, method: :put, parameters: parameters, data: data, headers: , options: options
end
|
#request(path, method: :get, parameters: {}, data: {}, headers: {}, options: {}) ⇒ Object
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
# File 'lib/nordvpn/api/client.rb', line 59
def request(path, method: :get, parameters: {}, data: {}, headers: {}, options: {})
connection = connect(host: self.configuration.host, options: options)
["User-Agent"] = .fetch("User-Agent", ::Agents.random_user_agent(:desktop))
response = case method
when :get
connection.get do |request|
request.url path unless path.to_s.empty?
request. = connection..merge()
request.params = parameters if parameters && !parameters.empty?
end
when :head
connection.head do |request|
request.url path unless path.to_s.empty?
request. = connection..merge()
request.params = parameters if parameters && !parameters.empty?
end
when :post, :put, :patch, :delete
connection.send(method) do |request|
request.url path unless path.to_s.empty?
request. = connection..merge()
request.body = data if data && !data.empty?
request.params = parameters if parameters && !parameters.empty?
end
end
end
|