dawn-api 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/lib/dawn/api/app/domains.rb +40 -0
- data/lib/dawn/api/app/drains.rb +40 -0
- data/lib/dawn/api/app/env.rb +37 -0
- data/lib/dawn/api/app/gears.rb +49 -0
- data/lib/dawn/api/app.rb +131 -0
- data/lib/dawn/api/authenticate.rb +66 -0
- data/lib/dawn/api/base_api.rb +23 -0
- data/lib/dawn/api/domain.rb +80 -0
- data/lib/dawn/api/drain.rb +80 -0
- data/lib/dawn/api/gear.rb +101 -0
- data/lib/dawn/api/hosts.rb +11 -0
- data/lib/dawn/api/key.rb +73 -0
- data/lib/dawn/api/login.rb +18 -0
- data/lib/dawn/api/version.rb +13 -0
- data/lib/dawn/api.rb +10 -0
- metadata +116 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: f67aba9063e02175a8f39faef656f1046d01a474
|
4
|
+
data.tar.gz: 1b4424a7e02702a2acf8625162e30f233f58c6ea
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: c680999789ae45609b11fc9e311ae2a9a09437b9d182ab1d0beb5c30f0b9111e06466d364e3a85047bd6d16b52d6fed140d9abc7790fff925680442016e3e779
|
7
|
+
data.tar.gz: 569ba8aab02dbd02e00952dcca4b32d5d6f251222d3ae8047ad448c0f748fe882bb3e781ccac24f7ed2d5441ea6ab496203683855b42db4fd3b75d4c6bef1e77
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'dawn/api/base_api'
|
2
|
+
require 'dawn/api/domain'
|
3
|
+
|
4
|
+
module Dawn
|
5
|
+
class App
|
6
|
+
class Domains
|
7
|
+
|
8
|
+
include BaseApi
|
9
|
+
|
10
|
+
attr_reader :app
|
11
|
+
|
12
|
+
def initialize(app)
|
13
|
+
@app = app
|
14
|
+
end
|
15
|
+
|
16
|
+
def create(options={})
|
17
|
+
Domain.new(json_request(
|
18
|
+
expects: 200,
|
19
|
+
method: :post,
|
20
|
+
path: "/apps/#{app.id}/domains",
|
21
|
+
body: options.to_json
|
22
|
+
)["domain"]).tap { |d| d.app = @app }
|
23
|
+
end
|
24
|
+
|
25
|
+
def all(options={})
|
26
|
+
json_request(
|
27
|
+
expects: 200,
|
28
|
+
method: :get,
|
29
|
+
path: "/apps/#{app.id}/domains",
|
30
|
+
query: options
|
31
|
+
).map { |hsh| Domain.new(hsh["domain"]).tap { |d| d.app = @app } }
|
32
|
+
end
|
33
|
+
|
34
|
+
def find(options={})
|
35
|
+
Domain.find(options).tap { |d| d.app = @app }
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'dawn/api/base_api'
|
2
|
+
require 'dawn/api/drain'
|
3
|
+
|
4
|
+
module Dawn
|
5
|
+
class App
|
6
|
+
class Drains
|
7
|
+
|
8
|
+
include BaseApi
|
9
|
+
|
10
|
+
attr_reader :app
|
11
|
+
|
12
|
+
def initialize(app)
|
13
|
+
@app = app
|
14
|
+
end
|
15
|
+
|
16
|
+
def create(options={})
|
17
|
+
Drain.new(json_request(
|
18
|
+
expects: 200,
|
19
|
+
method: :post,
|
20
|
+
path: "/apps/#{app.id}/drains",
|
21
|
+
body: options.to_json
|
22
|
+
)["drain"]).tap { |d| d.app = @app }
|
23
|
+
end
|
24
|
+
|
25
|
+
def all(options={})
|
26
|
+
json_request(
|
27
|
+
expects: 200,
|
28
|
+
method: :get,
|
29
|
+
path: "/apps/#{app.id}/drains",
|
30
|
+
query: options
|
31
|
+
).map { |hsh| Drain.new(hsh["drain"]).tap { |d| d.app = @app } }
|
32
|
+
end
|
33
|
+
|
34
|
+
def find(options={})
|
35
|
+
Drain.find(options).tap { |d| d.app = @app }
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'dawn/api/base_api'
|
2
|
+
|
3
|
+
module Dawn
|
4
|
+
class App
|
5
|
+
class Env < Hash
|
6
|
+
|
7
|
+
include BaseApi
|
8
|
+
|
9
|
+
attr_reader :app
|
10
|
+
|
11
|
+
def initialize(app, data)
|
12
|
+
@app = app
|
13
|
+
super()
|
14
|
+
replace(data)
|
15
|
+
end
|
16
|
+
|
17
|
+
def refresh(options={})
|
18
|
+
replace json_request(
|
19
|
+
expects: 200,
|
20
|
+
method: :get,
|
21
|
+
path: "/apps/#{app.id}/env",
|
22
|
+
query: options
|
23
|
+
)["env"]
|
24
|
+
end
|
25
|
+
|
26
|
+
def save(options={})
|
27
|
+
replace json_request(
|
28
|
+
expects: 200,
|
29
|
+
method: :post,
|
30
|
+
path: "/apps/#{app.id}/env",
|
31
|
+
body: { env: merge(options) }.to_json
|
32
|
+
)["env"]
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'dawn/api/base_api'
|
2
|
+
require 'dawn/api/gear'
|
3
|
+
|
4
|
+
module Dawn
|
5
|
+
class App
|
6
|
+
class Gears
|
7
|
+
|
8
|
+
include BaseApi
|
9
|
+
|
10
|
+
attr_reader :app
|
11
|
+
|
12
|
+
def initialize(app)
|
13
|
+
@app = app
|
14
|
+
end
|
15
|
+
|
16
|
+
def create(options={})
|
17
|
+
Gear.new(json_request(
|
18
|
+
expects: 200,
|
19
|
+
method: :post,
|
20
|
+
path: "/apps/#{app.id}/gears",
|
21
|
+
body: options.to_json
|
22
|
+
)["gear"]).tap { |d| d.app = @app }
|
23
|
+
end
|
24
|
+
|
25
|
+
def all(options={})
|
26
|
+
json_request(
|
27
|
+
expects: 200,
|
28
|
+
method: :get,
|
29
|
+
path: "/apps/#{app.id}/gears",
|
30
|
+
query: options
|
31
|
+
).map { |hsh| Gear.new(hsh["gear"]).tap { |d| d.app = @app } }
|
32
|
+
end
|
33
|
+
|
34
|
+
def find(options={})
|
35
|
+
Gear.find(options).tap { |d| d.app = @app }
|
36
|
+
end
|
37
|
+
|
38
|
+
def restart(options={})
|
39
|
+
request(
|
40
|
+
expects: 200,
|
41
|
+
method: :post,
|
42
|
+
path: "/apps/#{app.id}/gears/restart",
|
43
|
+
body: options.to_json
|
44
|
+
)
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
data/lib/dawn/api/app.rb
ADDED
@@ -0,0 +1,131 @@
|
|
1
|
+
require 'dawn/api/hosts'
|
2
|
+
require 'dawn/api/base_api'
|
3
|
+
require 'dawn/api/app/env'
|
4
|
+
require 'dawn/api/app/gears'
|
5
|
+
require 'dawn/api/app/drains'
|
6
|
+
require 'dawn/api/app/domains'
|
7
|
+
|
8
|
+
module Dawn
|
9
|
+
class App
|
10
|
+
|
11
|
+
include BaseApi
|
12
|
+
|
13
|
+
attr_reader :data
|
14
|
+
attr_reader :env
|
15
|
+
|
16
|
+
def initialize(hsh)
|
17
|
+
@data = hsh
|
18
|
+
@env = Env.new(self, @data.delete("env"))
|
19
|
+
end
|
20
|
+
|
21
|
+
def name
|
22
|
+
data["name"]
|
23
|
+
end
|
24
|
+
|
25
|
+
def id
|
26
|
+
data["id"]
|
27
|
+
end
|
28
|
+
|
29
|
+
def formation
|
30
|
+
data["formation"]
|
31
|
+
end
|
32
|
+
|
33
|
+
def git
|
34
|
+
data["git"]
|
35
|
+
end
|
36
|
+
|
37
|
+
def restart(options={})
|
38
|
+
request(
|
39
|
+
expects: 200,
|
40
|
+
method: :delete,
|
41
|
+
path: "/apps/#{id}/gears",
|
42
|
+
query: options
|
43
|
+
)
|
44
|
+
end
|
45
|
+
|
46
|
+
def gears
|
47
|
+
@gears ||= Gears.new self
|
48
|
+
end
|
49
|
+
|
50
|
+
def drains
|
51
|
+
@drains ||= Drains.new self
|
52
|
+
end
|
53
|
+
|
54
|
+
def domains
|
55
|
+
@domains ||= Domains.new self
|
56
|
+
end
|
57
|
+
|
58
|
+
def logs(options={})
|
59
|
+
url = json_request(
|
60
|
+
expects: 200,
|
61
|
+
method: :get,
|
62
|
+
path: "/apps/#{id}/logs",
|
63
|
+
query: options
|
64
|
+
)["logs"]
|
65
|
+
"http://#{Dawn.log_host}#{url}"
|
66
|
+
end
|
67
|
+
|
68
|
+
def update(options={})
|
69
|
+
data.merge!(json_request(
|
70
|
+
expects: 200,
|
71
|
+
method: :patch,
|
72
|
+
path: "/apps/#{id}",
|
73
|
+
body: { name: name }.merge(options).to_json
|
74
|
+
)["app"])
|
75
|
+
end
|
76
|
+
|
77
|
+
def scale(options={})
|
78
|
+
request(
|
79
|
+
expects: 200,
|
80
|
+
method: :post,
|
81
|
+
path: "/apps/#{id}/scale",
|
82
|
+
body: options.to_json
|
83
|
+
)
|
84
|
+
end
|
85
|
+
|
86
|
+
def destroy(options={})
|
87
|
+
request(
|
88
|
+
expects: 200,
|
89
|
+
method: :delete,
|
90
|
+
path: "/apps/#{id}",
|
91
|
+
query: options
|
92
|
+
)
|
93
|
+
end
|
94
|
+
|
95
|
+
def self.all(options={})
|
96
|
+
json_request(
|
97
|
+
expects: 200,
|
98
|
+
method: :get,
|
99
|
+
path: "/apps",
|
100
|
+
query: options
|
101
|
+
).map { |hsh| new(hsh["app"]) }
|
102
|
+
end
|
103
|
+
|
104
|
+
def self.create(options)
|
105
|
+
new json_request(
|
106
|
+
expects: 200,
|
107
|
+
method: :post,
|
108
|
+
path: '/apps',
|
109
|
+
body: options.to_json
|
110
|
+
)["app"]
|
111
|
+
end
|
112
|
+
|
113
|
+
def self.find(options)
|
114
|
+
path = options[:id] ? "/apps/#{options.delete(:id)}" : "/apps"
|
115
|
+
hsh = json_request(
|
116
|
+
expects: 200,
|
117
|
+
method: :get,
|
118
|
+
path: path,
|
119
|
+
query: options
|
120
|
+
)
|
121
|
+
hsh = hsh.first if hsh.is_a?(Array)
|
122
|
+
hsh && new(hsh["app"])
|
123
|
+
end
|
124
|
+
|
125
|
+
def self.destroy(options)
|
126
|
+
app = find options
|
127
|
+
app.destroy if app
|
128
|
+
end
|
129
|
+
|
130
|
+
end
|
131
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
require 'dawn/api/version'
|
2
|
+
require 'excon'
|
3
|
+
require 'netrc'
|
4
|
+
|
5
|
+
module Dawn
|
6
|
+
|
7
|
+
HEADERS = {
|
8
|
+
'Accept' => 'application/json',
|
9
|
+
'Content-Type' => 'application/json',
|
10
|
+
'Accept-Encoding' => 'gzip',
|
11
|
+
'User-Agent' => "dawn/#{API::VERSION}",
|
12
|
+
'X-Ruby-Version' => RUBY_VERSION,
|
13
|
+
'X-Ruby-Platform' => RUBY_PLATFORM
|
14
|
+
}
|
15
|
+
|
16
|
+
OPTIONS = {
|
17
|
+
headers: {},
|
18
|
+
host: 'api.dawn.dev',
|
19
|
+
nonblock: false,
|
20
|
+
scheme: 'http'
|
21
|
+
}
|
22
|
+
|
23
|
+
class AuthenticationError < RuntimeError
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.request(options)
|
27
|
+
Dawn.authenticate unless @connection
|
28
|
+
@connection.request(options)
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.authenticate(options={})
|
32
|
+
options = OPTIONS.merge options
|
33
|
+
options[:headers] = options[:headers].merge(HEADERS)
|
34
|
+
@api_key = options.delete(:api_key) || ENV['DAWN_API_KEY']
|
35
|
+
|
36
|
+
if !@api_key
|
37
|
+
hostname = options[:host]
|
38
|
+
url = "#{options[:scheme]}://#{hostname}"
|
39
|
+
|
40
|
+
if options.key?(:username) && options.key?(:password)
|
41
|
+
username = options.delete(:username)
|
42
|
+
password = options.delete(:password)
|
43
|
+
|
44
|
+
@connection = Excon.new url, headers: HEADERS
|
45
|
+
|
46
|
+
@api_key = User.login(username: username, password: password)['api_key']
|
47
|
+
|
48
|
+
netrc = Netrc.read
|
49
|
+
netrc[hostname] = username, @api_key
|
50
|
+
netrc.save
|
51
|
+
else
|
52
|
+
netrc = Netrc.read
|
53
|
+
username, api_key = netrc[hostname]
|
54
|
+
if api_key
|
55
|
+
@api_key = api_key
|
56
|
+
else
|
57
|
+
raise AuthenticationError, "api_key was not found, try dawn login to reset your .netrc"
|
58
|
+
# "please provide a DAWN_API_KEY, username and password, or update your .netrc with the dawn details (use dawn login)"
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
@headers = HEADERS.merge 'Authorization' => "Token token=\"#{@api_key}\""
|
63
|
+
@connection = Excon.new "#{options[:scheme]}://#{options[:host]}", headers: @headers
|
64
|
+
end
|
65
|
+
|
66
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'dawn/api/authenticate'
|
2
|
+
require 'json'
|
3
|
+
|
4
|
+
module Dawn
|
5
|
+
module BaseApi
|
6
|
+
module Extension
|
7
|
+
def request(options)
|
8
|
+
Dawn.request options
|
9
|
+
end
|
10
|
+
|
11
|
+
def json_request(options)
|
12
|
+
JSON.load request(options).body
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
include Extension
|
17
|
+
|
18
|
+
def self.included(mod)
|
19
|
+
mod.extend Extension
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,80 @@
|
|
1
|
+
require 'dawn/api/base_api'
|
2
|
+
|
3
|
+
module Dawn
|
4
|
+
class Domain
|
5
|
+
|
6
|
+
include BaseApi
|
7
|
+
|
8
|
+
attr_reader :data
|
9
|
+
attr_writer :app
|
10
|
+
|
11
|
+
def initialize(data)
|
12
|
+
@app = nil
|
13
|
+
@data = data
|
14
|
+
end
|
15
|
+
|
16
|
+
def app_id
|
17
|
+
data["app_id"]
|
18
|
+
end
|
19
|
+
|
20
|
+
def app
|
21
|
+
@app ||= App.find(id: app_id)
|
22
|
+
end
|
23
|
+
|
24
|
+
def id
|
25
|
+
data["id"]
|
26
|
+
end
|
27
|
+
|
28
|
+
def url
|
29
|
+
data["url"]
|
30
|
+
end
|
31
|
+
|
32
|
+
def refresh
|
33
|
+
@data = json_request(
|
34
|
+
expects: 200,
|
35
|
+
method: :get,
|
36
|
+
path: "/domains/#{id}",
|
37
|
+
query: options
|
38
|
+
)["domain"]
|
39
|
+
end
|
40
|
+
|
41
|
+
def update(options={})
|
42
|
+
request(
|
43
|
+
expects: 200,
|
44
|
+
method: :post,
|
45
|
+
path: "/domains/#{id}",
|
46
|
+
body: options.to_json
|
47
|
+
)
|
48
|
+
end
|
49
|
+
|
50
|
+
def destroy(options={})
|
51
|
+
request(
|
52
|
+
expects: 200,
|
53
|
+
method: :delete,
|
54
|
+
path: "/domains/#{id}",
|
55
|
+
query: options
|
56
|
+
)
|
57
|
+
end
|
58
|
+
|
59
|
+
def self.all(options={})
|
60
|
+
json_request(
|
61
|
+
expects: 200,
|
62
|
+
method: :get,
|
63
|
+
path: "/domains",
|
64
|
+
query: options
|
65
|
+
).map { |hsh| new hsh["domain"] }
|
66
|
+
end
|
67
|
+
|
68
|
+
def self.find(options)
|
69
|
+
id = options.delete(:id)
|
70
|
+
|
71
|
+
new json_request(
|
72
|
+
expects: 200,
|
73
|
+
method: :get,
|
74
|
+
path: "/domains/#{id}",
|
75
|
+
query: options
|
76
|
+
)["domain"]
|
77
|
+
end
|
78
|
+
|
79
|
+
end
|
80
|
+
end
|
@@ -0,0 +1,80 @@
|
|
1
|
+
require 'dawn/api/base_api'
|
2
|
+
|
3
|
+
module Dawn
|
4
|
+
class Drain
|
5
|
+
|
6
|
+
include BaseApi
|
7
|
+
|
8
|
+
attr_reader :data
|
9
|
+
attr_writer :app
|
10
|
+
|
11
|
+
def initialize(data)
|
12
|
+
@app = nil
|
13
|
+
@data = data
|
14
|
+
end
|
15
|
+
|
16
|
+
def app_id
|
17
|
+
data["app_id"]
|
18
|
+
end
|
19
|
+
|
20
|
+
def app
|
21
|
+
@app ||= App.find(id: app_id)
|
22
|
+
end
|
23
|
+
|
24
|
+
def id
|
25
|
+
data["id"]
|
26
|
+
end
|
27
|
+
|
28
|
+
def url
|
29
|
+
data["url"]
|
30
|
+
end
|
31
|
+
|
32
|
+
def refresh
|
33
|
+
@data = json_request(
|
34
|
+
expects: 200,
|
35
|
+
method: :get,
|
36
|
+
path: "/drains/#{id}",
|
37
|
+
query: options
|
38
|
+
)["drain"]
|
39
|
+
end
|
40
|
+
|
41
|
+
def update(options={})
|
42
|
+
request(
|
43
|
+
expects: 200,
|
44
|
+
method: :post,
|
45
|
+
path: "/drains/#{id}",
|
46
|
+
body: options.to_json
|
47
|
+
)
|
48
|
+
end
|
49
|
+
|
50
|
+
def destroy(options={})
|
51
|
+
request(
|
52
|
+
expects: 200,
|
53
|
+
method: :delete,
|
54
|
+
path: "/drains/#{id}",
|
55
|
+
query: options
|
56
|
+
)
|
57
|
+
end
|
58
|
+
|
59
|
+
def self.all(options={})
|
60
|
+
json_request(
|
61
|
+
expects: 200,
|
62
|
+
method: :get,
|
63
|
+
path: "/drains",
|
64
|
+
query: options
|
65
|
+
).map { |hsh| new hsh["drain"] }
|
66
|
+
end
|
67
|
+
|
68
|
+
def self.find(options={})
|
69
|
+
id = options.delete(:id)
|
70
|
+
|
71
|
+
new json_request(
|
72
|
+
expects: 200,
|
73
|
+
method: :get,
|
74
|
+
path: "/drains/#{id}",
|
75
|
+
query: options
|
76
|
+
)["drain"]
|
77
|
+
end
|
78
|
+
|
79
|
+
end
|
80
|
+
end
|
@@ -0,0 +1,101 @@
|
|
1
|
+
require 'dawn/api/base_api'
|
2
|
+
|
3
|
+
module Dawn
|
4
|
+
class Gear
|
5
|
+
|
6
|
+
include BaseApi
|
7
|
+
|
8
|
+
attr_reader :data
|
9
|
+
attr_writer :app
|
10
|
+
|
11
|
+
def initialize(data)
|
12
|
+
@app = nil
|
13
|
+
@data = data
|
14
|
+
end
|
15
|
+
|
16
|
+
def app_id
|
17
|
+
data["app_id"]
|
18
|
+
end
|
19
|
+
|
20
|
+
def app
|
21
|
+
@app ||= App.find(id: app_id)
|
22
|
+
end
|
23
|
+
|
24
|
+
def id
|
25
|
+
data["id"]
|
26
|
+
end
|
27
|
+
|
28
|
+
def name
|
29
|
+
data["name"]
|
30
|
+
end
|
31
|
+
|
32
|
+
def uptime
|
33
|
+
data["uptime"]
|
34
|
+
end
|
35
|
+
|
36
|
+
def type
|
37
|
+
data["type"]
|
38
|
+
end
|
39
|
+
|
40
|
+
def number
|
41
|
+
data["number"]
|
42
|
+
end
|
43
|
+
|
44
|
+
def refresh
|
45
|
+
@data = json_request(
|
46
|
+
expects: 200,
|
47
|
+
method: :get,
|
48
|
+
path: "/gears/#{id}",
|
49
|
+
query: options
|
50
|
+
)["gear"]
|
51
|
+
end
|
52
|
+
|
53
|
+
def restart(options={})
|
54
|
+
request(
|
55
|
+
expects: 200,
|
56
|
+
method: :post,
|
57
|
+
path: "/gears/#{id}/restart",
|
58
|
+
query: options
|
59
|
+
)
|
60
|
+
end
|
61
|
+
|
62
|
+
def update(options={})
|
63
|
+
request(
|
64
|
+
expects: 200,
|
65
|
+
method: :post,
|
66
|
+
path: "/gears/#{id}",
|
67
|
+
body: options.to_json
|
68
|
+
)
|
69
|
+
end
|
70
|
+
|
71
|
+
def destroy(options={})
|
72
|
+
request(
|
73
|
+
expects: 200,
|
74
|
+
method: :delete,
|
75
|
+
path: "/gears/#{id}",
|
76
|
+
query: options
|
77
|
+
)
|
78
|
+
end
|
79
|
+
|
80
|
+
def self.all(options={})
|
81
|
+
json_request(
|
82
|
+
expects: 200,
|
83
|
+
method: :get,
|
84
|
+
path: "/gears",
|
85
|
+
query: options
|
86
|
+
).map { |hsh| new hsh["gear"] }
|
87
|
+
end
|
88
|
+
|
89
|
+
def self.find(options)
|
90
|
+
id = options.delete(:id)
|
91
|
+
|
92
|
+
new json_request(
|
93
|
+
expects: 200,
|
94
|
+
method: :get,
|
95
|
+
path: "/gears/#{id}",
|
96
|
+
query: options
|
97
|
+
)["gear"]
|
98
|
+
end
|
99
|
+
|
100
|
+
end
|
101
|
+
end
|
data/lib/dawn/api/key.rb
ADDED
@@ -0,0 +1,73 @@
|
|
1
|
+
require 'dawn/api/base_api'
|
2
|
+
|
3
|
+
module Dawn
|
4
|
+
class Key
|
5
|
+
|
6
|
+
include BaseApi
|
7
|
+
|
8
|
+
attr_reader :data
|
9
|
+
|
10
|
+
def initialize(data)
|
11
|
+
@data = data
|
12
|
+
end
|
13
|
+
|
14
|
+
def id
|
15
|
+
data["id"]
|
16
|
+
end
|
17
|
+
|
18
|
+
def fingerprint
|
19
|
+
data["fingerprint"]
|
20
|
+
end
|
21
|
+
|
22
|
+
def key
|
23
|
+
data["key"]
|
24
|
+
end
|
25
|
+
|
26
|
+
def destroy
|
27
|
+
request(
|
28
|
+
method: :delete,
|
29
|
+
expects: 200,
|
30
|
+
path: "/account/keys/#{id}"
|
31
|
+
)
|
32
|
+
end
|
33
|
+
|
34
|
+
def self.add(pubkey)
|
35
|
+
new json_request(
|
36
|
+
method: :post,
|
37
|
+
expects: 200,
|
38
|
+
path: '/account/keys',
|
39
|
+
query: { key: pubkey }
|
40
|
+
)["key"]
|
41
|
+
end
|
42
|
+
|
43
|
+
def self.get(id)
|
44
|
+
new json_request(
|
45
|
+
method: :get,
|
46
|
+
expects: 200,
|
47
|
+
path: "/account/keys/#{id}"
|
48
|
+
)["key"]
|
49
|
+
end
|
50
|
+
|
51
|
+
def self.all(options={})
|
52
|
+
json_request(
|
53
|
+
method: :get,
|
54
|
+
expects: 200,
|
55
|
+
path: '/account/keys',
|
56
|
+
query: options
|
57
|
+
).map { |hsh| new(hsh["key"]) }
|
58
|
+
end
|
59
|
+
|
60
|
+
def self.destroy(options={})
|
61
|
+
request(
|
62
|
+
method: :delete,
|
63
|
+
expects: 200,
|
64
|
+
path: "/account/keys/#{options[:id]}"
|
65
|
+
)
|
66
|
+
end
|
67
|
+
|
68
|
+
class << self
|
69
|
+
private :new
|
70
|
+
end
|
71
|
+
|
72
|
+
end
|
73
|
+
end
|
data/lib/dawn/api.rb
ADDED
metadata
ADDED
@@ -0,0 +1,116 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: dawn-api
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.9.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Blaž Hrastnik
|
8
|
+
- Corey Powell
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2014-06-07 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: excon
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - "~>"
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: '0.34'
|
21
|
+
type: :runtime
|
22
|
+
prerelease: false
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - "~>"
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: '0.34'
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: json
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - "~>"
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '1.8'
|
35
|
+
type: :runtime
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - "~>"
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '1.8'
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: netrc
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - "~>"
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '0.7'
|
49
|
+
type: :runtime
|
50
|
+
prerelease: false
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - "~>"
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '0.7'
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: sshkey
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - "~>"
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '1.6'
|
63
|
+
type: :runtime
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - "~>"
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '1.6'
|
70
|
+
description: Dawn Client API
|
71
|
+
email:
|
72
|
+
executables: []
|
73
|
+
extensions: []
|
74
|
+
extra_rdoc_files: []
|
75
|
+
files:
|
76
|
+
- lib/dawn/api.rb
|
77
|
+
- lib/dawn/api/app.rb
|
78
|
+
- lib/dawn/api/app/domains.rb
|
79
|
+
- lib/dawn/api/app/drains.rb
|
80
|
+
- lib/dawn/api/app/env.rb
|
81
|
+
- lib/dawn/api/app/gears.rb
|
82
|
+
- lib/dawn/api/authenticate.rb
|
83
|
+
- lib/dawn/api/base_api.rb
|
84
|
+
- lib/dawn/api/domain.rb
|
85
|
+
- lib/dawn/api/drain.rb
|
86
|
+
- lib/dawn/api/gear.rb
|
87
|
+
- lib/dawn/api/hosts.rb
|
88
|
+
- lib/dawn/api/key.rb
|
89
|
+
- lib/dawn/api/login.rb
|
90
|
+
- lib/dawn/api/version.rb
|
91
|
+
homepage: https://github.com/dawn/dawn-api
|
92
|
+
licenses:
|
93
|
+
- MIT
|
94
|
+
metadata: {}
|
95
|
+
post_install_message:
|
96
|
+
rdoc_options: []
|
97
|
+
require_paths:
|
98
|
+
- lib
|
99
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
105
|
+
requirements:
|
106
|
+
- - ">="
|
107
|
+
- !ruby/object:Gem::Version
|
108
|
+
version: '0'
|
109
|
+
requirements: []
|
110
|
+
rubyforge_project:
|
111
|
+
rubygems_version: 2.2.2
|
112
|
+
signing_key:
|
113
|
+
specification_version: 4
|
114
|
+
summary: Dawn API
|
115
|
+
test_files: []
|
116
|
+
has_rdoc:
|