module Nordvpn::Api::Endpoints::Servers

Public Instance Methods

country_servers() click to toggle source
# File lib/nordvpn/api/endpoints/servers.rb, line 17
def country_servers
  get("/v1/servers/countries")&.body
end
ikev2_servers(servers: nil, memoize: true) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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