dawn-api 0.10.1 → 0.11.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.
Files changed (84) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +3 -4
  3. data/lib/dawn/api/authenticate.rb +33 -7
  4. data/lib/dawn/api/base_api.rb +52 -6
  5. data/lib/dawn/api/health_check.rb +14 -0
  6. data/lib/dawn/api/hosts.rb +16 -3
  7. data/lib/dawn/api/models/account.rb +44 -15
  8. data/lib/dawn/api/models/app/domains.rb +30 -6
  9. data/lib/dawn/api/models/app/drains.rb +30 -6
  10. data/lib/dawn/api/models/app/env.rb +19 -5
  11. data/lib/dawn/api/models/app/gears.rb +31 -7
  12. data/lib/dawn/api/models/app/releases.rb +28 -8
  13. data/lib/dawn/api/models/app.rb +93 -16
  14. data/lib/dawn/api/models/domain.rb +36 -11
  15. data/lib/dawn/api/models/drain.rb +33 -19
  16. data/lib/dawn/api/models/gear.rb +45 -25
  17. data/lib/dawn/api/models/key.rb +33 -15
  18. data/lib/dawn/api/models/login.rb +5 -4
  19. data/lib/dawn/api/models/release.rb +32 -14
  20. data/lib/dawn/api/safe/base_api.rb +3 -3
  21. data/lib/dawn/api/safe/safe_extension.rb +20 -5
  22. data/lib/dawn/api/version.rb +5 -5
  23. data/lib/dawn/api.rb +1 -1
  24. data/spec/api/account_spec.rb +21 -0
  25. data/spec/api/app/domains_spec.rb +30 -0
  26. data/spec/api/app/drains_spec.rb +30 -0
  27. data/spec/api/app/gears_spec.rb +38 -0
  28. data/spec/api/app/releases_spec.rb +30 -0
  29. data/spec/api/app_spec.rb +166 -0
  30. data/spec/api/domain_spec.rb +54 -0
  31. data/spec/api/drain_spec.rb +54 -0
  32. data/spec/api/gear_spec.rb +65 -0
  33. data/spec/api/key_spec.rb +54 -0
  34. data/spec/api/release_spec.rb +13 -0
  35. data/spec/api_spec_helper.rb +18 -0
  36. data/spec/references/data.yml +16 -0
  37. data/spec/seed.rb +70 -0
  38. data/spec/seedlog.log +1454 -0
  39. data/spec/support/vcr.rb +11 -0
  40. data/spec/vcr/Dawn_Account/_current/should_retrieve_current_user_account.yml +51 -0
  41. data/spec/vcr/Dawn_Account/_update/should_update_an_account.yml +99 -0
  42. data/spec/vcr/Dawn_App/_all/should_only_have_an_array_of_apps.yml +62 -0
  43. data/spec/vcr/Dawn_App/_all/should_retrieve_all_user_apps.yml +62 -0
  44. data/spec/vcr/Dawn_App/_create/should_create_a_new_app_given_a_name.yml +51 -0
  45. data/spec/vcr/Dawn_App/_create/should_raise_an_Excon_Errors_UnprocessableEntity_when_an_invalid_name_is_given.yml +49 -0
  46. data/spec/vcr/Dawn_App/_destroy/should_destroy_1_app.yml +49 -0
  47. data/spec/vcr/Dawn_App/_destroy/should_fail_to_destroy_non-existant_app.yml +48 -0
  48. data/spec/vcr/Dawn_App/_domains/should_have_domains.yml +51 -0
  49. data/spec/vcr/Dawn_App/_domains/should_retrieve_domains.yml +98 -0
  50. data/spec/vcr/Dawn_App/_drains/should_have_drains.yml +51 -0
  51. data/spec/vcr/Dawn_App/_find/should_fail_to_find_a_non_existant_app.yml +48 -0
  52. data/spec/vcr/Dawn_App/_find/should_retrieve_1_app_by_id.yml +111 -0
  53. data/spec/vcr/Dawn_App/_find/should_retrieve_1_app_by_name.yml +51 -0
  54. data/spec/vcr/Dawn_App/_gears/should_have_gears.yml +51 -0
  55. data/spec/vcr/Dawn_App/_gears/should_restart_gears.yml +98 -0
  56. data/spec/vcr/Dawn_App/_gears/should_retrieve_gears.yml +98 -0
  57. data/spec/vcr/Dawn_App/_logs/should_fail_to_retrieve_logs_uri_for_a_non_existant_app.yml +48 -0
  58. data/spec/vcr/Dawn_App/_logs/should_retrieve_logs_url_for_app.yml +98 -0
  59. data/spec/vcr/Dawn_App/_releases/should_have_releases.yml +51 -0
  60. data/spec/vcr/Dawn_App/_releases/should_retrieve_releases.yml +98 -0
  61. data/spec/vcr/Dawn_App/_restart/should_fail_to_restart_a_non_existant_app.yml +48 -0
  62. data/spec/vcr/Dawn_App/_scale/should_have_updated_formation.yml +51 -0
  63. data/spec/vcr/Dawn_App/_scale/should_raise_an_IndexError_if_app_key_is_missing.yml +51 -0
  64. data/spec/vcr/Dawn_App/_scale/should_scale_app.yml +98 -0
  65. data/spec/vcr/Dawn_App/_update/should_fail_to_update_non-existant_app.yml +48 -0
  66. data/spec/vcr/Dawn_App_Domains/_all/should_have_only_domains.yml +98 -0
  67. data/spec/vcr/Dawn_App_Domains/_all/should_return_all_domains.yml +98 -0
  68. data/spec/vcr/Dawn_App_Domains/_create/should_create_a_new_domain.yml +99 -0
  69. data/spec/vcr/Dawn_App_Drains/_all/should_have_only_drains.yml +98 -0
  70. data/spec/vcr/Dawn_App_Drains/_all/should_return_all_drains.yml +98 -0
  71. data/spec/vcr/Dawn_App_Drains/_create/should_create_a_new_drain.yml +99 -0
  72. data/spec/vcr/Dawn_App_Gears/_all/should_return_all_gears.yml +98 -0
  73. data/spec/vcr/Dawn_App_Releases/_all/should_return_all_releases.yml +98 -0
  74. data/spec/vcr/Dawn_App_Releases/_create/should_create_a_new_release.yml +423 -0
  75. data/spec/vcr/Dawn_Key/_all/should_retrieve_all_user_keys.yml +52 -0
  76. data/spec/vcr/Dawn_Key/_create/should_create_a_new_sshkey.yml +51 -0
  77. data/spec/vcr/Dawn_Key/_create/should_fail_if_sshkey_is_invalid.yml +49 -0
  78. data/spec/vcr/Dawn_Key/_destroy/should_404_if_key_does_not_exist.yml +48 -0
  79. data/spec/vcr/Dawn_Key/_destroy/should_remove_a_key_by_id.yml +98 -0
  80. data/spec/vcr/Dawn_Key/_find/should_404_if_key_does_not_exist.yml +48 -0
  81. data/spec/vcr/Dawn_Key/_find/should_find_a_key_by_id.yml +99 -0
  82. data/spec/vcr/Dawn_Release/_find/should_find_1_release_by_id.yml +48 -0
  83. metadata +62 -3
  84. data/lib/dawn/api/safe.rb +0 -2
@@ -6,49 +6,73 @@ require 'dawn/api/models/app/drains'
6
6
  require 'dawn/api/models/app/domains'
7
7
  require 'dawn/api/models/app/releases'
8
8
 
9
- module Dawn
10
- class App
11
-
9
+ module Dawn #:nodoc:
10
+ class App #:nodoc:
12
11
  include BaseApi
13
12
 
14
- attr_reader :data
13
+ # @type [Dawn::App::Env]
15
14
  attr_reader :env
15
+ # @type [String]
16
+ data_key :id, write: false
17
+ # @type [Integer]
18
+ data_key :created_at, write: false
19
+ # @type [Integer]
20
+ data_key :updated_at, write: false
21
+ # @type [String]
22
+ data_key :name, write: false
23
+ # @type [Hash<String, Integer>]
24
+ data_key :formation
16
25
 
17
- def initialize(hsh)
18
- @data = hsh
19
- @env = Env.new(self, @data.delete("env"))
26
+ ###
27
+ # @param [Hash] data
28
+ ###
29
+ def initialize(data)
30
+ @data = data
31
+ @data["env"] = @env = Env.new(self, @data.delete("env"))
20
32
  end
21
33
 
22
- data_key :id
23
- data_key :created_at
24
- data_key :updated_at
25
- data_key :name
26
- data_key :formation
27
- data_key :git
28
-
34
+ ###
35
+ # @return [Dawn::App::Gears]
36
+ ###
29
37
  def gears
30
38
  @gears ||= Gears.new self
31
39
  end
32
40
 
41
+ ###
42
+ # @return [Dawn::App::Drains]
43
+ ###
33
44
  def drains
34
45
  @drains ||= Drains.new self
35
46
  end
36
47
 
48
+ ###
49
+ # @return [Dawn::App::Domains]
50
+ ###
37
51
  def domains
38
52
  @domains ||= Domains.new self
39
53
  end
40
54
 
55
+ ###
56
+ # @return [Dawn::App::Releases]
57
+ ###
41
58
  def releases
42
59
  @releases ||= Releases.new self
43
60
  end
44
61
 
62
+ ###
63
+ # @return [self]
64
+ ###
45
65
  def refresh(options={})
46
66
  @data = get(
47
67
  path: "/apps/#{id}",
48
68
  query: options
49
69
  )["app"]
70
+ self
50
71
  end
51
72
 
73
+ ###
74
+ # @return [self]
75
+ ###
52
76
  def update(options={})
53
77
  options.fetch(:app)
54
78
 
@@ -56,34 +80,63 @@ module Dawn
56
80
  path: "/apps/#{id}",
57
81
  body: options.to_json
58
82
  )["app"]
83
+ self
59
84
  end
60
85
 
86
+ ###
87
+ # @return [self]
88
+ ###
89
+ def save
90
+ update(app: @data)
91
+ end
92
+
93
+ ###
94
+ # @param [Hash] options
95
+ ###
61
96
  def destroy(options={})
62
97
  self.class.destroy(options.merge(id: id))
63
98
  end
64
99
 
100
+ ###
101
+ # @param [Hash] options
102
+ ###
65
103
  def run(options={})
66
104
  self.class.run(options.merge(id: id))
67
105
  end
68
106
 
107
+ ###
108
+ # @param [Hash] options
109
+ ###
69
110
  def logs(options={})
70
111
  self.class.logs(options.merge(id: id))
71
112
  end
72
113
 
114
+ ###
115
+ # @param [Hash] options
116
+ ###
73
117
  def scale(options={})
74
- self.class.scale(options.merge(id: id))
118
+ @data["formation"] = self.class.scale(options.merge(id: id))
75
119
  end
76
120
 
121
+ ###
122
+ # @param [Hash] options
123
+ ###
77
124
  def restart(options={})
78
125
  self.class.restart(options.merge(id: id))
79
126
  end
80
127
 
128
+ ###
129
+ # @param [Hash] options
130
+ ###
81
131
  def self.id_param(options)
82
132
  options.delete(:id) ||
83
133
  options.delete(:name) ||
84
134
  raise
85
135
  end
86
136
 
137
+ ###
138
+ # @param [Hash] options
139
+ ###
87
140
  def self.create(options)
88
141
  options.fetch(:app)
89
142
 
@@ -93,6 +146,10 @@ module Dawn
93
146
  )["app"]
94
147
  end
95
148
 
149
+ ###
150
+ # @param [Hash] options
151
+ # @return [Array<Dawn::App>]
152
+ ###
96
153
  def self.all(options={})
97
154
  get(
98
155
  path: "/apps",
@@ -100,6 +157,9 @@ module Dawn
100
157
  ).map { |d| new d["app"] }
101
158
  end
102
159
 
160
+ ###
161
+ # @param [Hash] options
162
+ ###
103
163
  def self.find(options)
104
164
  id = id_param(options)
105
165
 
@@ -109,6 +169,9 @@ module Dawn
109
169
  )["app"]
110
170
  end
111
171
 
172
+ ###
173
+ # @param [Hash] options
174
+ ###
112
175
  def self.update(options)
113
176
  id = id_param(options)
114
177
  options.fetch(:app)
@@ -119,6 +182,9 @@ module Dawn
119
182
  )["app"]
120
183
  end
121
184
 
185
+ ###
186
+ # @param [Hash] options
187
+ ###
122
188
  def self.destroy(options={})
123
189
  id = id_param(options)
124
190
 
@@ -128,6 +194,9 @@ module Dawn
128
194
  )
129
195
  end
130
196
 
197
+ ###
198
+ # @param [Hash] options
199
+ ###
131
200
  def self.restart(options={})
132
201
  id = id_param(options)
133
202
 
@@ -137,6 +206,9 @@ module Dawn
137
206
  )
138
207
  end
139
208
 
209
+ ###
210
+ # @param [Hash] options
211
+ ###
140
212
  def self.logs(options={})
141
213
  id = id_param(options)
142
214
 
@@ -148,6 +220,9 @@ module Dawn
148
220
  "http://#{Dawn.log_host}#{url}"
149
221
  end
150
222
 
223
+ ###
224
+ # @param [Hash] options
225
+ ###
151
226
  def self.scale(options={})
152
227
  id = id_param(options)
153
228
  options.fetch(:app).fetch(:formation)
@@ -158,6 +233,9 @@ module Dawn
158
233
  )
159
234
  end
160
235
 
236
+ ###
237
+ # @param [Hash] options
238
+ ###
161
239
  def self.run(options={})
162
240
  id = id_param(options)
163
241
  options.fetch(:command)
@@ -167,6 +245,5 @@ module Dawn
167
245
  body: options.to_json
168
246
  )
169
247
  end
170
-
171
248
  end
172
249
  end
@@ -1,39 +1,59 @@
1
1
  require 'dawn/api/base_api'
2
2
 
3
- module Dawn
4
- class Domain
5
-
3
+ module Dawn #:nodoc:
4
+ class Domain #:nodoc:
6
5
  include BaseApi
7
6
 
8
- attr_reader :data
7
+ # @type [Dawn::App]
9
8
  attr_writer :app
9
+ # @type [String]
10
+ data_key :id, write: false
11
+ # @type [Integer]
12
+ data_key :created_at, write: false
13
+ # @type [Integer]
14
+ data_key :updated_at, write: false
15
+ # @type [String]
16
+ data_key :url, write: false
17
+ # @type [String]
18
+ data_key :app_id, path: "app/id", write: false
10
19
 
20
+ ###
21
+ # @param [Hash] data
22
+ ###
11
23
  def initialize(data)
12
24
  @app = nil
13
25
  @data = data
14
26
  end
15
27
 
16
- data_key :id
17
- data_key :created_at
18
- data_key :updated_at
19
- data_key :url
20
- data_key :app_id, "app/id"
21
-
28
+ ###
29
+ # @return [Dawn::App]
30
+ ###
22
31
  def app
23
32
  @app ||= App.find(id: app_id)
24
33
  end
25
34
 
35
+ ###
36
+ # @return [self]
37
+ ###
26
38
  def refresh
27
39
  @data = get(
28
40
  path: "/domains/#{id}",
29
41
  query: options
30
42
  )["domain"]
43
+ self
31
44
  end
32
45
 
46
+ ###
47
+ # @param [Hash] options
48
+ # @return [Void]
49
+ ###
33
50
  def destroy(options={})
34
51
  self.class.destroy(options.merge(id: id))
35
52
  end
36
53
 
54
+ ###
55
+ # @param [Hash] options
56
+ ###
37
57
  def self.id_param(options)
38
58
  id = options.delete(:id) ||
39
59
  options.delete(:name) ||
@@ -42,6 +62,9 @@ module Dawn
42
62
  raise
43
63
  end
44
64
 
65
+ ###
66
+ # @param [Hash] options
67
+ ###
45
68
  def self.find(options)
46
69
  id = id_param(options)
47
70
 
@@ -51,6 +74,9 @@ module Dawn
51
74
  )["domain"]
52
75
  end
53
76
 
77
+ ###
78
+ # @param [Hash] options
79
+ ###
54
80
  def self.destroy(options)
55
81
  id = id_param(options)
56
82
 
@@ -59,6 +85,5 @@ module Dawn
59
85
  query: options
60
86
  )
61
87
  end
62
-
63
88
  end
64
89
  end
@@ -1,46 +1,58 @@
1
1
  require 'dawn/api/base_api'
2
2
 
3
- module Dawn
4
- class Drain
5
-
3
+ module Dawn #:nodoc:
4
+ class Drain #:nodoc:
6
5
  include BaseApi
7
6
 
8
- attr_reader :data
7
+ # @type [Dawn::App]
9
8
  attr_writer :app
9
+ # @type [String]
10
+ data_key :id, write: false
11
+ # @type [Integer]
12
+ data_key :created_at, write: false
13
+ # @type [Integer]
14
+ data_key :updated_at, write: false
15
+ # @type [String]
16
+ data_key :url, write: false
17
+ # @type [String]
18
+ data_key :app_id, path: "app/id", write: false
10
19
 
20
+ ###
21
+ # @param [Hash] options
22
+ ###
11
23
  def initialize(data)
12
24
  @app = nil
13
25
  @data = data
14
26
  end
15
27
 
16
- data_key :id
17
- data_key :created_at
18
- data_key :updated_at
19
- data_key :url
20
- data_key :app_id, "app/id"
21
-
28
+ ###
29
+ # @return [Dawn::App]
30
+ ###
22
31
  def app
23
32
  @app ||= App.find(id: app_id)
24
33
  end
25
34
 
35
+ ###
36
+ # @return [self]
37
+ ###
26
38
  def refresh
27
39
  @data = get(
28
40
  path: "/drains/#{id}",
29
41
  query: options
30
42
  )["drain"]
43
+ self
31
44
  end
32
45
 
33
- def destroy(options)
46
+ ###
47
+ # @param [Hash] options
48
+ ###
49
+ def destroy(options={})
34
50
  Drain.destroy(options.merge(id: id))
35
51
  end
36
52
 
37
- def self.all(options={})
38
- get(
39
- path: "/drains",
40
- query: options
41
- ).map { |hsh| new hsh["drain"] }
42
- end
43
-
53
+ ###
54
+ # @param [Hash] options
55
+ ###
44
56
  def self.find(options={})
45
57
  id = id_param(options)
46
58
 
@@ -50,6 +62,9 @@ module Dawn
50
62
  )["drain"]
51
63
  end
52
64
 
65
+ ###
66
+ # @param [Hash] options
67
+ ###
53
68
  def self.destroy(options={})
54
69
  id = id_param(options)
55
70
 
@@ -58,6 +73,5 @@ module Dawn
58
73
  query: options
59
74
  )
60
75
  end
61
-
62
76
  end
63
77
  end
@@ -1,27 +1,39 @@
1
1
  require 'dawn/api/base_api'
2
2
 
3
- module Dawn
4
- class Gear
5
-
3
+ module Dawn #:nodoc:
4
+ class Gear #:nodoc:
6
5
  include BaseApi
7
6
 
8
- attr_reader :data
7
+ # @type [Dawn::App]
9
8
  attr_writer :app
10
-
9
+ # @type [String]
10
+ data_key :id, write: false
11
+ # @type [Integer]
12
+ data_key :created_at, write: false
13
+ # @type [Integer]
14
+ data_key :updated_at, write: false
15
+ # @type [String]
16
+ data_key :name, write: false
17
+ # @type [Integer]
18
+ data_key :uptime, write: false
19
+ # @type [String]
20
+ data_key :proctype, write: false
21
+ # @type [Integer]
22
+ data_key :number, write: false
23
+ # @type [String]
24
+ data_key :app_id, path: "app/id", write: false
25
+
26
+ ###
27
+ # @param [Hash] data
28
+ ###
11
29
  def initialize(data)
12
30
  @app = nil
13
31
  @data = data
14
32
  end
15
33
 
16
- data_key :id
17
- data_key :created_at
18
- data_key :updated_at
19
- data_key :name
20
- data_key :uptime
21
- data_key :proctype
22
- data_key :number
23
- data_key :app_id, "app/id"
24
-
34
+ ###
35
+ # @return [Dawn::App]
36
+ ###
25
37
  def app
26
38
  @app ||= App.find(id: app_id)
27
39
  end
@@ -31,23 +43,26 @@ module Dawn
31
43
  path: "/gears/#{id}",
32
44
  query: options
33
45
  )["gear"]
46
+ self
34
47
  end
35
48
 
49
+ ###
50
+ # @param [Hash] options
51
+ ###
36
52
  def restart(options={})
37
53
  self.class.restart(options.merge(id: id))
38
54
  end
39
55
 
40
- def destroy(options)
56
+ ###
57
+ # @param [Hash] options
58
+ ###
59
+ def destroy(options={})
41
60
  self.class.destroy(options.merge(id: id))
42
61
  end
43
62
 
44
- def self.all(options={})
45
- get(
46
- path: "/gears",
47
- query: options
48
- ).map { |d| new d["gear"] }
49
- end
50
-
63
+ ###
64
+ # @param [Hash] options
65
+ ###
51
66
  def self.find(options)
52
67
  id = id_param(options)
53
68
 
@@ -57,8 +72,11 @@ module Dawn
57
72
  )["gear"]
58
73
  end
59
74
 
60
- def self.restart(options={})
61
- self.class.restart(options.merge(id: id))
75
+ ###
76
+ # @param [Hash] options
77
+ ###
78
+ def self.restart(options)
79
+ id = id_param(options)
62
80
 
63
81
  post(
64
82
  path: "/gears/#{id}/restart",
@@ -66,6 +84,9 @@ module Dawn
66
84
  )
67
85
  end
68
86
 
87
+ ###
88
+ # @param [Hash] options
89
+ ###
69
90
  def self.destroy(options)
70
91
  id = id_param(options)
71
92
 
@@ -74,6 +95,5 @@ module Dawn
74
95
  query: options
75
96
  )
76
97
  end
77
-
78
98
  end
79
99
  end
@@ -1,26 +1,38 @@
1
1
  require 'dawn/api/base_api'
2
2
 
3
- module Dawn
4
- class Key
5
-
3
+ module Dawn #:nodoc:
4
+ class Key #:nodoc:
6
5
  include BaseApi
7
6
 
8
- attr_reader :data
7
+ # @type [String]
8
+ data_key :id, write: false
9
+ # @type [Integer]
10
+ data_key :created_at, write: false
11
+ # @type [Integer]
12
+ data_key :updated_at, write: false
13
+ # @type [String]
14
+ data_key :fingerprint, write: false
15
+ # @type [String]
16
+ data_key :key, write: false
9
17
 
18
+ ###
19
+ # @param [Hash] data
20
+ ###
10
21
  def initialize(data)
11
22
  @data = data
12
23
  end
13
24
 
14
- data_key :id
15
- data_key :created_at
16
- data_key :updated_at
17
- data_key :fingerprint
18
- data_key :key
19
-
25
+ ###
26
+ # @return [Void]
27
+ ###
20
28
  def destroy(options={})
21
29
  self.class.destroy(options.merge(id: id))
22
30
  end
23
31
 
32
+ ###
33
+ # @param [Hash] options
34
+ # @return [Dawn::Key]
35
+ ###
24
36
  def self.create(options={})
25
37
  options.fetch(:key)
26
38
 
@@ -30,6 +42,10 @@ module Dawn
30
42
  )["key"]
31
43
  end
32
44
 
45
+ ###
46
+ # @param [Hash] options
47
+ # @return [Array<Dawn::Key>]
48
+ ###
33
49
  def self.all(options={})
34
50
  get(
35
51
  path: '/account/keys',
@@ -37,6 +53,10 @@ module Dawn
37
53
  ).map { |hsh| new hsh["key"] }
38
54
  end
39
55
 
56
+ ###
57
+ # @param [Hash] options
58
+ # @return [Dawn::Key]
59
+ ###
40
60
  def self.find(options={})
41
61
  id = id_param(options)
42
62
 
@@ -46,6 +66,9 @@ module Dawn
46
66
  )["key"]
47
67
  end
48
68
 
69
+ ###
70
+ # @return [Void]
71
+ ###
49
72
  def self.destroy(options={})
50
73
  id = id_param(options)
51
74
 
@@ -54,10 +77,5 @@ module Dawn
54
77
  query: options
55
78
  )
56
79
  end
57
-
58
- class << self
59
- private :new
60
- end
61
-
62
80
  end
63
81
  end
@@ -1,16 +1,17 @@
1
1
  require 'dawn/api/base_api'
2
2
 
3
- module Dawn
4
- class User
5
-
3
+ module Dawn #:nodoc:
4
+ class User #:nodoc:
6
5
  include BaseApi
7
6
 
7
+ ###
8
+ # @param [Hash] options
9
+ ###
8
10
  def self.login(options={})
9
11
  post(
10
12
  path: '/login',
11
13
  body: options.to_json
12
14
  )
13
15
  end
14
-
15
16
  end
16
17
  end