heroku-api 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
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