Module: Nordvpn::Api::Endpoints::Servers
- Included in:
- Client
- Defined in:
- lib/nordvpn/api/endpoints/servers.rb
Instance Method Summary collapse
- #country_servers ⇒ Object
- #ikev2_servers(servers: nil, memoize: true) ⇒ Object
- #l2tp_servers(servers: nil, memoize: true) ⇒ Object
- #openvpn_tcp_servers(servers: nil, memoize: true) ⇒ Object
- #openvpn_udp_servers(servers: nil, memoize: true) ⇒ Object
- #pptp_servers(servers: nil, memoize: true) ⇒ Object
- #proxy_servers(servers: nil, memoize: true) ⇒ Object
- #retrieve_servers(memoize: true) ⇒ Object
- #servers_by_country(country, servers: nil, memoize: true) ⇒ Object
- #servers_by_features(features: [], servers: nil, memoize: true) ⇒ Object
- #servers_by_type_and_country(type, country, servers: nil, memoize: true) ⇒ Object
- #socks_servers(servers: nil, memoize: true) ⇒ Object
Instance Method Details
#country_servers ⇒ Object
17 18 19 |
# File 'lib/nordvpn/api/endpoints/servers.rb', line 17 def country_servers get("/v1/servers/countries")&.body end |
#ikev2_servers(servers: nil, memoize: true) ⇒ Object
21 22 23 |
# File 'lib/nordvpn/api/endpoints/servers.rb', line 21 def ikev2_servers(servers: nil, memoize: true) servers_by_features(features: ["ikev2"], servers: servers, memoize: memoize) end |
#l2tp_servers(servers: nil, memoize: true) ⇒ Object
45 46 47 |
# File 'lib/nordvpn/api/endpoints/servers.rb', line 45 def l2tp_servers(servers: nil, memoize: true) servers_by_features(features: ["l2tp"], servers: servers, memoize: memoize) end |
#openvpn_tcp_servers(servers: nil, memoize: true) ⇒ Object
25 26 27 |
# File 'lib/nordvpn/api/endpoints/servers.rb', line 25 def openvpn_tcp_servers(servers: nil, memoize: true) servers_by_features(features: ["openvpn_tcp"], servers: servers, memoize: memoize) end |
#openvpn_udp_servers(servers: nil, memoize: true) ⇒ Object
29 30 31 |
# File 'lib/nordvpn/api/endpoints/servers.rb', line 29 def openvpn_udp_servers(servers: nil, memoize: true) servers_by_features(features: ["openvpn_udp"], servers: servers, memoize: memoize) end |
#pptp_servers(servers: nil, memoize: true) ⇒ Object
41 42 43 |
# File 'lib/nordvpn/api/endpoints/servers.rb', line 41 def pptp_servers(servers: nil, memoize: true) servers_by_features(features: ["pptp"], servers: servers, memoize: memoize) end |
#proxy_servers(servers: nil, memoize: true) ⇒ Object
37 38 39 |
# File 'lib/nordvpn/api/endpoints/servers.rb', line 37 def proxy_servers(servers: nil, memoize: true) servers_by_features(features: ["proxy", "proxy_ssl"], servers: servers, memoize: memoize) end |
#retrieve_servers(memoize: true) ⇒ Object
6 7 8 9 10 11 12 13 14 15 |
# File 'lib/nordvpn/api/endpoints/servers.rb', line 6 def retrieve_servers(memoize: true) servers = memoize ? self.cache.fetch("servers", nil) : nil if servers.nil? servers = get("/server")&.body self.cache["servers"] = servers if memoize end return servers end |
#servers_by_country(country, servers: nil, memoize: true) ⇒ Object
68 69 70 71 |
# File 'lib/nordvpn/api/endpoints/servers.rb', line 68 def servers_by_country(country, servers: nil, memoize: true) servers = servers.nil? ? retrieve_servers(memoize: memoize) : servers filtered = servers&.select { |server| server["flag"].downcase.eql?(country.downcase) } end |
#servers_by_features(features: [], servers: nil, memoize: true) ⇒ Object
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/nordvpn/api/endpoints/servers.rb', line 49 def servers_by_features(features: [], servers: nil, memoize: true) filtered = [] servers = servers.nil? ? retrieve_servers(memoize: memoize) : servers servers&.each do |server| matching_all = true features.each do |feature| matching_all = matching_all && server.dig("features", feature).eql?(true) break if !matching_all end filtered << server if matching_all end return filtered end |
#servers_by_type_and_country(type, country, servers: nil, memoize: true) ⇒ Object
73 74 75 76 |
# File 'lib/nordvpn/api/endpoints/servers.rb', line 73 def servers_by_type_and_country(type, country, servers: nil, memoize: true) result = send("#{type}_servers", servers: servers, memoize: memoize) result = servers_by_country(country, servers: result, memoize: memoize) end |
#socks_servers(servers: nil, memoize: true) ⇒ Object
33 34 35 |
# File 'lib/nordvpn/api/endpoints/servers.rb', line 33 def socks_servers(servers: nil, memoize: true) servers_by_features(features: ["socks"], servers: servers, memoize: memoize) end |