Class: DigitalOcean::API

Inherits:
Object
  • Object
show all
Defined in:
lib/digital_ocean/api.rb

Instance Method Summary collapse

Constructor Details

#initialize(params) ⇒ API

Creates a new API client instance.

Examples:

client = DigitalOcean::API.new :client_id => '######', :api_key => '#######'

Parameters:

  • params (Hash)

Options Hash (params):

  • :client_id (String)

    The client_id (required)

  • :api_key (String)

    The api_key (required)

  • :base_url (String) — default: 'https://api.digitalocean.com/'

    API base url

  • :faraday_adapter (Symbol) — default: 'Faraday.default_adapter'

    Faraday adapter/http client library to use.

Raises:

  • (ArgumentError)

    when no client_id is provided

  • (ArgumentError)

    when no api_key is provided

See Also:

  • [Faraday]


16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/digital_ocean/api.rb', line 16

def initialize(params)
  @client_id           = params[:client_id]
  @api_key             = params[:api_key]
  @debug               = params[:debug]
  @ssl                 = params[:ssl] || { :verify => true }
  @base_url            = params[:base_url]            || 'https://api.digitalocean.com/'
  @faraday_adapter     = params[:faraday_adapter]     || Faraday.default_adapter
  @raise_status_errors = params[:raise_status_errors] || false
  @faraday             = params[:faraday]             || default_faraday
  raise ArgumentError, ':client_id missing' unless @client_id
  raise ArgumentError, ':api_key missing' unless @api_key
end

Instance Method Details

#default_faradayObject



68
69
70
71
72
73
74
75
76
77
78
# File 'lib/digital_ocean/api.rb', line 68

def default_faraday
  Faraday.new(:url => @base_url, :ssl => @ssl) do |faraday|
    faraday.use AuthenticationMiddleware, @client_id, @api_key
    faraday.use Faraday::Response::RaiseError if @raise_status_errors
    faraday.request  :url_encoded
    faraday.response :rashify
    faraday.response :json
    faraday.response(:logger) if @debug
    faraday.adapter @faraday_adapter
  end
end

#domainsObject



64
65
66
# File 'lib/digital_ocean/api.rb', line 64

def domains
    DigitalOcean::Resource::Domain.new(@faraday)
end

#dropletsDigitalOcean::Resource::Droplet

Access Droplets (virtual machines)



32
33
34
# File 'lib/digital_ocean/api.rb', line 32

def droplets
  DigitalOcean::Resource::Droplet.new(@faraday)
end

#imagesDigitalOcean::Resource::Image

Access Images (Snapshots, Backups)



60
61
62
# File 'lib/digital_ocean/api.rb', line 60

def images
  DigitalOcean::Resource::Image.new(@faraday)
end

#regionsDigitalOcean::Resource::Region

Access Regions (data center location)



46
47
48
# File 'lib/digital_ocean/api.rb', line 46

def regions
  DigitalOcean::Resource::Region.new(@faraday)
end

#sizesDigitalOcean::Resource::Size

Access Sizes (virtual machine types/sizes)



39
40
41
# File 'lib/digital_ocean/api.rb', line 39

def sizes
  DigitalOcean::Resource::Size.new(@faraday)
end

#ssh_keysDigitalOcean::Resource::SSHKey

Access SSH keys



53
54
55
# File 'lib/digital_ocean/api.rb', line 53

def ssh_keys
  DigitalOcean::Resource::SSHKey.new(@faraday)
end