class DropletKit::Client

Constants

DEFAULT_OPEN_TIMEOUT
DEFAULT_TIMEOUT
DIGITALOCEAN_API

Attributes

access_token[R]
api_url[R]
open_timeout[R]
timeout[R]
user_agent[R]

Public Class Methods

new(options = {}) click to toggle source
# File lib/droplet_kit/client.rb, line 12
def initialize(options = {})
  options = DropletKit::Utils.transform_keys(options, &:to_sym)
  @access_token = options[:access_token]
  @api_url      = options[:api_url] || DIGITALOCEAN_API
  @open_timeout = options[:open_timeout] || DEFAULT_OPEN_TIMEOUT
  @timeout      = options[:timeout] || DEFAULT_TIMEOUT
  @user_agent   = options[:user_agent]
end
resources() click to toggle source
# File lib/droplet_kit/client.rb, line 29
def self.resources
  {
    actions: ActionResource,
    cdns: CDNResource,
    certificates: CertificateResource,
    container_registry: ContainerRegistryResource,
    container_registry_repository: ContainerRegistryRepositoryResource,
    databases: DatabaseResource,
    droplets: DropletResource,
    kubernetes_clusters: KubernetesClusterResource,
    kubernetes_options: KubernetesOptionsResource,
    domains: DomainResource,
    domain_records: DomainRecordResource,
    droplet_actions: DropletActionResource,
    firewalls: FirewallResource,
    images: ImageResource,
    image_actions: ImageActionResource,
    invoices: InvoiceResource,
    load_balancers: LoadBalancerResource,
    regions: RegionResource,
    sizes: SizeResource,
    ssh_keys: SSHKeyResource,
    snapshots: SnapshotResource,
    account: AccountResource,
    balance: BalanceResource,
    floating_ips: FloatingIpResource,
    floating_ip_actions: FloatingIpActionResource,
    tags: TagResource,
    projects: ProjectResource,
    volumes: VolumeResource,
    volume_actions: VolumeActionResource,
    vpcs: VPCResource
  }
end

Public Instance Methods

connection() click to toggle source
# File lib/droplet_kit/client.rb, line 21
def connection
  @faraday ||= Faraday.new connection_options do |req|
    req.adapter :net_http
    req.options.open_timeout = open_timeout
    req.options.timeout = timeout
  end
end
default_user_agent() click to toggle source
# File lib/droplet_kit/client.rb, line 77
def default_user_agent
  "DropletKit/#{DropletKit::VERSION} Faraday/#{Faraday::VERSION}"
end
method_missing(name, *args, &block) click to toggle source
Calls superclass method
# File lib/droplet_kit/client.rb, line 64
def method_missing(name, *args, &block)
  if self.class.resources.keys.include?(name)
    resources[name] ||= self.class.resources[name].new(connection: connection)
    resources[name]
  else
    super
  end
end
resources() click to toggle source
# File lib/droplet_kit/client.rb, line 73
def resources
  @resources ||= {}
end

Private Instance Methods

connection_options() click to toggle source
# File lib/droplet_kit/client.rb, line 83
def connection_options
  {
    url: @api_url,
    headers: {
      content_type: 'application/json',
      authorization: "Bearer #{access_token}",
      user_agent: "#{user_agent} #{default_user_agent}".strip
    }
  }
end