Class: OutlineVpnApi::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/outline_vpn_api/client.rb

Constant Summary collapse

DEFAULT_TIMEOUT =
30
CONNECTION_ERRORS =
[
  SocketError,
  SystemCallError,
  Net::OpenTimeout,
  Net::ReadTimeout,
  HTTParty::RedirectionTooDeep
].freeze

Instance Method Summary collapse

Constructor Details

#initialize(api_url, cert_sha256: nil, timeout: DEFAULT_TIMEOUT) ⇒ Client

Returns a new instance of Client.



22
23
24
25
26
27
28
# File 'lib/outline_vpn_api/client.rb', line 22

def initialize(api_url, cert_sha256: nil, timeout: DEFAULT_TIMEOUT)
  @base_uri = api_url.to_s.chomp("/")
  @options = {
    headers: { "Content-Type" => "application/json" },
    timeout: timeout
  }.merge(ssl_options(cert_sha256))
end

Instance Method Details

#create_keyObject



38
39
40
# File 'lib/outline_vpn_api/client.rb', line 38

def create_key
  request(:post, "/access-keys")
end

#delete_key(key_id) ⇒ Object



50
51
52
# File 'lib/outline_vpn_api/client.rb', line 50

def delete_key(key_id)
  request(:delete, "/access-keys/#{key_id}")
end

#keys_listObject



30
31
32
# File 'lib/outline_vpn_api/client.rb', line 30

def keys_list
  request(:get, "/access-keys")["accessKeys"]
end

#rename_key(key_id, name) ⇒ Object



46
47
48
# File 'lib/outline_vpn_api/client.rb', line 46

def rename_key(key_id, name)
  request(:put, "/access-keys/#{key_id}/name", body: { name: })
end

#set_limit(key_id, limit) ⇒ Object



42
43
44
# File 'lib/outline_vpn_api/client.rb', line 42

def set_limit(key_id, limit)
  request(:put, "/access-keys/#{key_id}/data-limit", body: { limit: { bytes: limit } })
end

#transferred_data_by_idObject



34
35
36
# File 'lib/outline_vpn_api/client.rb', line 34

def transferred_data_by_id
  request(:get, "/metrics/transfer")
end