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 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
 
@@ -1,3 +1,10 @@
1
+ 0.1.3 05/03/2012
2
+ ================
3
+
4
+ update README examples to include put_app
5
+ correct mocks to change git/web urls during app rename
6
+ split out known heroku errors into their own error classes
7
+
1
8
  0.1.2 04/10/2012
2
9
  ================
3
10
 
@@ -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
- reerror = Heroku::API::Errors::Error.new(error.message)
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
@@ -3,7 +3,22 @@ module Heroku
3
3
  module Errors
4
4
  class Error < StandardError; end
5
5
 
6
- class NotFound < Error; end
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
@@ -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
- app_data['name'] = request_params[:query]['app[name]']
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]']
@@ -1,5 +1,5 @@
1
1
  module Heroku
2
2
  class API
3
- VERSION = "0.1.2"
3
+ VERSION = "0.1.3"
4
4
  end
5
5
  end
@@ -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::Error) do
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::Error) do
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::Error) do
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::Error) do
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::Error) do
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::Error) do
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::Error) do
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::Error) do
170
+ assert_raises(Heroku::API::Errors::RequestFailed) do
171
171
  heroku.put_addon(app_data['name'], 'releases:basic')
172
172
  end
173
173
  end
@@ -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::Error) do
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::Error) do
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
@@ -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::Error) do
51
+ assert_raises(Heroku::API::Errors::RequestFailed) do
52
52
  heroku.post_domain(app_data['name'], 'example.com')
53
53
  end
54
54
  end
@@ -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::Error) do
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::Error) do
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::Error) do
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::Error) do
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::Error) do
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
@@ -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::Error) do
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::Error) do
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::Error) do
79
+ assert_raises(Heroku::API::Errors::RequestFailed) do
80
80
  heroku.post_release(app_data['name'], 'v3')
81
81
  end
82
82
  end
@@ -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::Error) do
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.2
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-04-11 00:00:00.000000000 Z
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: &70252964835500 !ruby/object:Gem::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: *70252964835500
24
+ version_requirements: *70122010935080
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: minitest
27
- requirement: &70252964834300 !ruby/object:Gem::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: *70252964834300
35
+ version_requirements: *70122010934400
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rake
38
- requirement: &70252964833580 !ruby/object:Gem::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: *70252964833580
46
+ version_requirements: *70122010933620
47
47
  description: Ruby Client for the Heroku API
48
48
  email:
49
49
  - wesley@heroku.com