heroku-api 0.1.2 → 0.1.3
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.
- data/README.md +1 -0
- data/changelog.txt +7 -0
- data/lib/heroku/api.rb +13 -2
- data/lib/heroku/api/errors.rb +16 -1
- data/lib/heroku/api/mock/apps.rb +4 -1
- data/lib/heroku/api/version.rb +1 -1
- data/test/test_addons.rb +8 -8
- data/test/test_apps.rb +2 -2
- data/test/test_domains.rb +1 -1
- data/test/test_processes.rb +5 -5
- data/test/test_releases.rb +3 -3
- data/test/test_stacks.rb +1 -1
- metadata +8 -8
data/README.md
CHANGED
@@ -43,6 +43,7 @@ For additional details about any of the commands, see the [API docs](http://api-
|
|
43
43
|
heroku.post_app # create an app with a generated name and the default stack
|
44
44
|
heroku.post_app('name' => 'app') # create an app with a specified name
|
45
45
|
heroku.post_app_maintenance('app', '1') # toggle maintenance mode
|
46
|
+
heroku.put_app('name' => 'myapp') # update an app to have a different name
|
46
47
|
|
47
48
|
### Collaborators
|
48
49
|
|
data/changelog.txt
CHANGED
data/lib/heroku/api.rb
CHANGED
@@ -58,11 +58,22 @@ module Heroku
|
|
58
58
|
begin
|
59
59
|
response = @connection.request(params, &block)
|
60
60
|
rescue Excon::Errors::NotFound => error
|
61
|
-
reerror = Heroku::API::Errors::NotFound.new(error.message)
|
61
|
+
reerror = Heroku::API::Errors::NotFound.new(error.message, error.response)
|
62
62
|
reerror.set_backtrace(error.backtrace)
|
63
63
|
raise reerror
|
64
64
|
rescue Excon::Errors::Error => error
|
65
|
-
|
65
|
+
klass = case error.response.status
|
66
|
+
when 401 then Heroku::API::Errors::Unauthorized
|
67
|
+
when 402 then Heroku::API::Errors::VerificationRequired
|
68
|
+
when 403 then Heroku::API::Errors::Forbidden
|
69
|
+
when 408 then Heroku::API::Errors::Timeout
|
70
|
+
when 422 then Heroku::API::Errors::RequestFailed
|
71
|
+
when 423 then Heroku::API::Errors::Locked
|
72
|
+
when /50./ then Heroku::API::Errors::RequestFailed
|
73
|
+
else Heroku::API::Errors::ErrorWithResponse
|
74
|
+
end
|
75
|
+
|
76
|
+
reerror = klass.new(error.message, error.response)
|
66
77
|
reerror.set_backtrace(error.backtrace)
|
67
78
|
raise reerror
|
68
79
|
end
|
data/lib/heroku/api/errors.rb
CHANGED
@@ -3,7 +3,22 @@ module Heroku
|
|
3
3
|
module Errors
|
4
4
|
class Error < StandardError; end
|
5
5
|
|
6
|
-
class
|
6
|
+
class ErrorWithResponse < Error
|
7
|
+
attr_reader :response
|
8
|
+
|
9
|
+
def initialize(message, response)
|
10
|
+
super message
|
11
|
+
@response = response
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
class Unauthorized < ErrorWithResponse; end
|
16
|
+
class VerificationRequired < ErrorWithResponse; end
|
17
|
+
class Forbidden < ErrorWithResponse; end
|
18
|
+
class NotFound < ErrorWithResponse; end
|
19
|
+
class Timeout < ErrorWithResponse; end
|
20
|
+
class Locked < ErrorWithResponse; end
|
21
|
+
class RequestFailed < ErrorWithResponse; end
|
7
22
|
end
|
8
23
|
end
|
9
24
|
end
|
data/lib/heroku/api/mock/apps.rb
CHANGED
@@ -144,7 +144,10 @@ module Heroku
|
|
144
144
|
|
145
145
|
with_mock_app(mock_data, app) do |app_data|
|
146
146
|
if request_params[:query].has_key?('app[name]')
|
147
|
-
|
147
|
+
name = request_params[:query]['app[name]']
|
148
|
+
app_data['git_url'] = "git@heroku.com:#{name}.git"
|
149
|
+
app_data['name'] = name
|
150
|
+
app_data['web_url'] = "http://#{name}.herokuapp.com/"
|
148
151
|
end
|
149
152
|
if request_params[:query].has_key?('app[transfer_owner]')
|
150
153
|
email = request_params[:query]['app[transfer_owner]']
|
data/lib/heroku/api/version.rb
CHANGED
data/test/test_addons.rb
CHANGED
@@ -4,7 +4,7 @@ class TestAddons < MiniTest::Unit::TestCase
|
|
4
4
|
|
5
5
|
def test_delete_addon_addon_not_found
|
6
6
|
with_app do |app_data|
|
7
|
-
assert_raises(Heroku::API::Errors::
|
7
|
+
assert_raises(Heroku::API::Errors::RequestFailed) do
|
8
8
|
heroku.delete_addon(app_data['name'], random_name)
|
9
9
|
end
|
10
10
|
end
|
@@ -12,7 +12,7 @@ class TestAddons < MiniTest::Unit::TestCase
|
|
12
12
|
|
13
13
|
def test_delete_addon_addon_not_installed
|
14
14
|
with_app do |app_data|
|
15
|
-
assert_raises(Heroku::API::Errors::
|
15
|
+
assert_raises(Heroku::API::Errors::RequestFailed) do
|
16
16
|
heroku.delete_addon(app_data['name'], 'custom_domains:basic')
|
17
17
|
end
|
18
18
|
end
|
@@ -105,7 +105,7 @@ class TestAddons < MiniTest::Unit::TestCase
|
|
105
105
|
|
106
106
|
def test_post_addon_addon_already_installed
|
107
107
|
with_app do |app_data|
|
108
|
-
assert_raises(Heroku::API::Errors::
|
108
|
+
assert_raises(Heroku::API::Errors::RequestFailed) do
|
109
109
|
heroku.post_addon(app_data['name'], 'logging:basic')
|
110
110
|
heroku.post_addon(app_data['name'], 'logging:basic')
|
111
111
|
end
|
@@ -114,7 +114,7 @@ class TestAddons < MiniTest::Unit::TestCase
|
|
114
114
|
|
115
115
|
def test_post_addon_addon_type_already_installed
|
116
116
|
with_app do |app_data|
|
117
|
-
assert_raises(Heroku::API::Errors::
|
117
|
+
assert_raises(Heroku::API::Errors::RequestFailed) do
|
118
118
|
heroku.post_addon(app_data['name'], 'logging:basic')
|
119
119
|
heroku.post_addon(app_data['name'], 'logging:expanded')
|
120
120
|
end
|
@@ -123,7 +123,7 @@ class TestAddons < MiniTest::Unit::TestCase
|
|
123
123
|
|
124
124
|
def test_post_addon_addon_not_found
|
125
125
|
with_app do |app_data|
|
126
|
-
assert_raises(Heroku::API::Errors::
|
126
|
+
assert_raises(Heroku::API::Errors::RequestFailed) do
|
127
127
|
heroku.post_addon(app_data['name'], random_name)
|
128
128
|
end
|
129
129
|
end
|
@@ -150,7 +150,7 @@ class TestAddons < MiniTest::Unit::TestCase
|
|
150
150
|
|
151
151
|
def test_put_addon_addon_already_installed
|
152
152
|
with_app do |app_data|
|
153
|
-
assert_raises(Heroku::API::Errors::
|
153
|
+
assert_raises(Heroku::API::Errors::RequestFailed) do
|
154
154
|
heroku.post_addon(app_data['name'], 'logging:basic')
|
155
155
|
heroku.put_addon(app_data['name'], 'logging:basic')
|
156
156
|
end
|
@@ -159,7 +159,7 @@ class TestAddons < MiniTest::Unit::TestCase
|
|
159
159
|
|
160
160
|
def test_put_addon_addon_not_found
|
161
161
|
with_app do |app_data|
|
162
|
-
assert_raises(Heroku::API::Errors::
|
162
|
+
assert_raises(Heroku::API::Errors::RequestFailed) do
|
163
163
|
heroku.put_addon(app_data['name'], random_name)
|
164
164
|
end
|
165
165
|
end
|
@@ -167,7 +167,7 @@ class TestAddons < MiniTest::Unit::TestCase
|
|
167
167
|
|
168
168
|
def test_put_addon_addon_type_not_installed
|
169
169
|
with_app do |app_data|
|
170
|
-
assert_raises(Heroku::API::Errors::
|
170
|
+
assert_raises(Heroku::API::Errors::RequestFailed) do
|
171
171
|
heroku.put_addon(app_data['name'], 'releases:basic')
|
172
172
|
end
|
173
173
|
end
|
data/test/test_apps.rb
CHANGED
@@ -60,7 +60,7 @@ class TestApps < MiniTest::Unit::TestCase
|
|
60
60
|
name = random_name
|
61
61
|
response = heroku.post_app('name' => name)
|
62
62
|
|
63
|
-
assert_raises(Heroku::API::Errors::
|
63
|
+
assert_raises(Heroku::API::Errors::RequestFailed) do
|
64
64
|
heroku.post_app('name' => name)
|
65
65
|
end
|
66
66
|
|
@@ -97,7 +97,7 @@ class TestApps < MiniTest::Unit::TestCase
|
|
97
97
|
|
98
98
|
def test_put_app_with_transfer_owner_non_collaborator
|
99
99
|
with_app do |app_data|
|
100
|
-
assert_raises(Heroku::API::Errors::
|
100
|
+
assert_raises(Heroku::API::Errors::RequestFailed) do
|
101
101
|
heroku.put_app(app_data['name'], 'transfer_owner' => random_email_address)
|
102
102
|
end
|
103
103
|
end
|
data/test/test_domains.rb
CHANGED
@@ -48,7 +48,7 @@ class TestDomains < MiniTest::Unit::TestCase
|
|
48
48
|
|
49
49
|
def test_post_domain_addon_not_installed
|
50
50
|
with_app do |app_data|
|
51
|
-
assert_raises(Heroku::API::Errors::
|
51
|
+
assert_raises(Heroku::API::Errors::RequestFailed) do
|
52
52
|
heroku.post_domain(app_data['name'], 'example.com')
|
53
53
|
end
|
54
54
|
end
|
data/test/test_processes.rb
CHANGED
@@ -132,7 +132,7 @@ class TestProcesses < MiniTest::Unit::TestCase
|
|
132
132
|
end
|
133
133
|
|
134
134
|
def test_post_ps_scale_type_not_found
|
135
|
-
assert_raises(Heroku::API::Errors::
|
135
|
+
assert_raises(Heroku::API::Errors::RequestFailed) do
|
136
136
|
with_app('stack' => 'cedar') do |app_data|
|
137
137
|
heroku.post_ps_scale(app_data['name'], 'run', 2)
|
138
138
|
end
|
@@ -149,7 +149,7 @@ class TestProcesses < MiniTest::Unit::TestCase
|
|
149
149
|
end
|
150
150
|
|
151
151
|
def test_post_ps_scale_without_cedar
|
152
|
-
assert_raises(Heroku::API::Errors::
|
152
|
+
assert_raises(Heroku::API::Errors::RequestFailed) do
|
153
153
|
with_app do |app_data|
|
154
154
|
heroku.post_ps_scale(app_data['name'], 'web', 2)
|
155
155
|
end
|
@@ -157,7 +157,7 @@ class TestProcesses < MiniTest::Unit::TestCase
|
|
157
157
|
end
|
158
158
|
|
159
159
|
def test_post_ps_stop
|
160
|
-
assert_raises(Heroku::API::Errors::
|
160
|
+
assert_raises(Heroku::API::Errors::RequestFailed) do
|
161
161
|
with_app do |app_data|
|
162
162
|
heroku.post_ps_stop(app_data['name'], {})
|
163
163
|
end
|
@@ -208,7 +208,7 @@ class TestProcesses < MiniTest::Unit::TestCase
|
|
208
208
|
end
|
209
209
|
|
210
210
|
def test_put_dynos_with_cedar
|
211
|
-
assert_raises(Heroku::API::Errors::
|
211
|
+
assert_raises(Heroku::API::Errors::RequestFailed) do
|
212
212
|
with_app('stack' => 'cedar') do |app_data|
|
213
213
|
heroku.put_dynos(app_data['name'], 2)
|
214
214
|
end
|
@@ -235,7 +235,7 @@ class TestProcesses < MiniTest::Unit::TestCase
|
|
235
235
|
end
|
236
236
|
|
237
237
|
def test_put_workers_with_cedar
|
238
|
-
assert_raises(Heroku::API::Errors::
|
238
|
+
assert_raises(Heroku::API::Errors::RequestFailed) do
|
239
239
|
with_app('stack' => 'cedar') do |app_data|
|
240
240
|
heroku.put_workers(app_data['name'], 2)
|
241
241
|
end
|
data/test/test_releases.rb
CHANGED
@@ -20,7 +20,7 @@ class TestReleases < MiniTest::Unit::TestCase
|
|
20
20
|
|
21
21
|
def test_get_releases_addon_not_installed
|
22
22
|
with_app do |app_data|
|
23
|
-
assert_raises(Heroku::API::Errors::
|
23
|
+
assert_raises(Heroku::API::Errors::RequestFailed) do
|
24
24
|
heroku.get_releases(app_data['name'])
|
25
25
|
end
|
26
26
|
end
|
@@ -45,7 +45,7 @@ class TestReleases < MiniTest::Unit::TestCase
|
|
45
45
|
|
46
46
|
def test_get_release_addon_not_installed
|
47
47
|
with_app do |app_data|
|
48
|
-
assert_raises(Heroku::API::Errors::
|
48
|
+
assert_raises(Heroku::API::Errors::RequestFailed) do
|
49
49
|
heroku.get_release(app_data['name'], 'v2')
|
50
50
|
end
|
51
51
|
end
|
@@ -76,7 +76,7 @@ class TestReleases < MiniTest::Unit::TestCase
|
|
76
76
|
|
77
77
|
def test_post_release_addon_not_installed
|
78
78
|
with_app do |app_data|
|
79
|
-
assert_raises(Heroku::API::Errors::
|
79
|
+
assert_raises(Heroku::API::Errors::RequestFailed) do
|
80
80
|
heroku.post_release(app_data['name'], 'v3')
|
81
81
|
end
|
82
82
|
end
|
data/test/test_stacks.rb
CHANGED
@@ -40,7 +40,7 @@ class TestStacks < MiniTest::Unit::TestCase
|
|
40
40
|
|
41
41
|
def test_put_stack_cedar
|
42
42
|
with_app do |app_data|
|
43
|
-
assert_raises(Heroku::API::Errors::
|
43
|
+
assert_raises(Heroku::API::Errors::RequestFailed) do
|
44
44
|
heroku.put_stack(app_data['name'], 'cedar')
|
45
45
|
end
|
46
46
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: heroku-api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-05-03 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: excon
|
16
|
-
requirement: &
|
16
|
+
requirement: &70122010935080 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 0.13.3
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70122010935080
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: minitest
|
27
|
-
requirement: &
|
27
|
+
requirement: &70122010934400 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70122010934400
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rake
|
38
|
-
requirement: &
|
38
|
+
requirement: &70122010933620 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,7 +43,7 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70122010933620
|
47
47
|
description: Ruby Client for the Heroku API
|
48
48
|
email:
|
49
49
|
- wesley@heroku.com
|