heroku-api 0.2.6 → 0.2.7

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,9 +1,4 @@
1
- script: bundle exec rake
2
-
3
- rvm:
4
- - 1.8.7
5
- - 1.9.2
6
- - 1.9.3
1
+ language: ruby
7
2
 
8
3
  notifications:
9
4
  email: false
@@ -12,3 +7,10 @@ notifications:
12
7
  on_failure: always
13
8
  urls:
14
9
  - http://dx-helper.herokuapp.com/travis
10
+
11
+ rvm:
12
+ - 1.8.7
13
+ - 1.9.2
14
+ - 1.9.3
15
+
16
+ script: bundle exec rake
data/README.md CHANGED
@@ -29,7 +29,7 @@ For additional details about any of the commands, see the [API docs](http://api-
29
29
 
30
30
  ### Add-ons
31
31
 
32
- heroku.delete('app', 'addon') # remove 'addon' add-on from an 'app' app
32
+ heroku.delete_addon('app', 'addon') # remove 'addon' add-on from an 'app' app
33
33
  heroku.get_addons # see a listing of all available add-ons
34
34
  heroku.get_addons('app') # see listing of installed add-ons for 'app' app
35
35
  heroku.post_addon('app', 'addon') # add 'addon' add-on to 'app' app
@@ -47,60 +47,60 @@ For additional details about any of the commands, see the [API docs](http://api-
47
47
 
48
48
  ### Collaborators
49
49
 
50
- delete_collaborator('app', 'email@example.com') # remove 'email@example.com' collaborator from 'app' app
51
- get_collaborators('app') # list collaborators for 'app' app
52
- post_collaborator('app', 'email@example.com') # add 'email@example.com' collaborator to 'app' app
50
+ heroku.delete_collaborator('app', 'email@example.com') # remove 'email@example.com' collaborator from 'app' app
51
+ heroku.get_collaborators('app') # list collaborators for 'app' app
52
+ heroku.post_collaborator('app', 'email@example.com') # add 'email@example.com' collaborator to 'app' app
53
53
 
54
54
  ### Config Variables
55
55
 
56
- delete_config_var('app', 'KEY') # remove 'KEY' key from 'app' app
57
- get_config_vars('app') # get list of config vars for 'app' app
58
- put_config_vars('app', 'KEY' => 'value') # set 'KEY' key to 'value' for 'app' app
56
+ heroku.delete_config_var('app', 'KEY') # remove 'KEY' key from 'app' app
57
+ heroku.get_config_vars('app') # get list of config vars for 'app' app
58
+ heroku.put_config_vars('app', 'KEY' => 'value') # set 'KEY' key to 'value' for 'app' app
59
59
 
60
60
  ### Domains
61
61
 
62
- delete_domain('app', 'example.com') # remove the 'example.com' domain from the 'app' app
63
- get_domains('app') # list configured domains for the 'app' app
64
- post_domains('app', 'example.com') # add 'example.com' domain to the 'app' app
62
+ heroku.delete_domain('app', 'example.com') # remove the 'example.com' domain from the 'app' app
63
+ heroku.get_domains('app') # list configured domains for the 'app' app
64
+ heroku.post_domains('app', 'example.com') # add 'example.com' domain to the 'app' app
65
65
 
66
66
  ### Keys
67
67
 
68
- delete_key('user@hostname.local') # remove the 'user@hostname.local' key
69
- delete_keys # remove all keys
70
- get_keys # list configured keys
71
- post_key('key data') # add key defined by 'key data'
68
+ heroku.delete_key('user@hostname.local') # remove the 'user@hostname.local' key
69
+ heroku.delete_keys # remove all keys
70
+ heroku.get_keys # list configured keys
71
+ heroku.post_key('key data') # add key defined by 'key data'
72
72
 
73
73
  ### Logs
74
74
 
75
- get_logs('app') # return logs information for 'app' app
75
+ heroku.get_logs('app') # return logs information for 'app' app
76
76
 
77
77
  ### Processes
78
78
 
79
- get_ps('app') # list current processes for 'app' app
80
- post_ps('app', 'command') # run 'command' command in context of 'app' app
81
- post_ps_restart('app') # restart all processes for 'app' app
82
- post_ps_scale('app', 'type', 'quantity') # scale 'type' type processes to 'quantity' for 'app' app
83
- post_ps_stop('app', 'ps' => 'web.1') # stop 'web.1' process for 'app' app
84
- post_ps_stop('app', 'type' => 'web') # stop all 'web' processes for 'app' app
85
- put_dynos('app', 'dynos') # set number of dynos for bamboo app 'app' to 'dynos'
86
- put_workers('app', 'workers') # set number of workers for bamboo app 'app' to 'workers'
79
+ heroku.get_ps('app') # list current processes for 'app' app
80
+ heroku.post_ps('app', 'command') # run 'command' command in context of 'app' app
81
+ heroku.post_ps_restart('app') # restart all processes for 'app' app
82
+ heroku.post_ps_scale('app', 'type', 'quantity') # scale 'type' type processes to 'quantity' for 'app' app
83
+ heroku.post_ps_stop('app', 'ps' => 'web.1') # stop 'web.1' process for 'app' app
84
+ heroku.post_ps_stop('app', 'type' => 'web') # stop all 'web' processes for 'app' app
85
+ heroku.put_dynos('app', 'dynos') # set number of dynos for bamboo app 'app' to 'dynos'
86
+ heroku.put_workers('app', 'workers') # set number of workers for bamboo app 'app' to 'workers'
87
87
 
88
- post_ps_restart('app', 'ps' => 'web.1') # restart 'web.1' process for 'app' app
88
+ heroku.post_ps_restart('app', 'ps' => 'web.1') # restart 'web.1' process for 'app' app
89
89
 
90
90
  ### Releases
91
91
 
92
- get_releases('app') # list of releases for 'app' app
93
- get_release('app', 'v#') # get details of 'v#' release for 'app' app
94
- post_release('app', 'v#') # rollback 'app' app to 'v#' release
92
+ heroku.get_releases('app') # list of releases for 'app' app
93
+ heroku.get_release('app', 'v#') # get details of 'v#' release for 'app' app
94
+ heroku.post_release('app', 'v#') # rollback 'app' app to 'v#' release
95
95
 
96
96
  ### Stacks
97
97
 
98
- get_stack('app') # list available stacks
99
- put_stack('app', 'stack') # migrate 'app' app to 'stack' stack
98
+ heroku.get_stack('app') # list available stacks
99
+ heroku.put_stack('app', 'stack') # migrate 'app' app to 'stack' stack
100
100
 
101
101
  ### User
102
102
 
103
- get_user # list user info
103
+ heroku.get_user # list user info
104
104
 
105
105
  Mock
106
106
  ----
@@ -1,3 +1,11 @@
1
+ 0.2.7 07/05/2012
2
+ ================
3
+
4
+ doc fixes (fixes delete_addon and improves consistency)
5
+ post_collaborator returns 201 when users does not yet exist
6
+ use json (instead of okjson) when available
7
+ update excon dependency
8
+
1
9
  0.2.6 06/21/2012
2
10
  ================
3
11
 
@@ -16,7 +16,7 @@ Gem::Specification.new do |s|
16
16
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
17
17
  s.require_paths = ["lib"]
18
18
 
19
- s.add_runtime_dependency 'excon', '~>0.14.0'
19
+ s.add_runtime_dependency 'excon', '~>0.14.3'
20
20
 
21
21
  s.add_development_dependency 'minitest'
22
22
  s.add_development_dependency 'rake'
@@ -9,8 +9,6 @@ unless $LOAD_PATH.include?(__LIB_DIR__)
9
9
  $LOAD_PATH.unshift(__LIB_DIR__)
10
10
  end
11
11
 
12
- require "heroku/api/vendor/okjson"
13
-
14
12
  require "heroku/api/errors"
15
13
  require "heroku/api/mock"
16
14
  require "heroku/api/version"
@@ -34,6 +32,36 @@ srand
34
32
  module Heroku
35
33
  class API
36
34
 
35
+ begin
36
+
37
+ require('json')
38
+
39
+ def self.json_decode(json)
40
+ JSON.parse(json)
41
+ rescue
42
+ json
43
+ end
44
+
45
+ def self.json_encode(object)
46
+ JSON.dump(object)
47
+ end
48
+
49
+ rescue LoadError
50
+
51
+ require('heroku/api/vendor/okjson')
52
+
53
+ def self.json_decode(json)
54
+ Heroku::API::OkJson.decode(json)
55
+ rescue
56
+ json
57
+ end
58
+
59
+ def self.json_encode(object)
60
+ Heroku::API::OkJson.encode(object)
61
+ end
62
+
63
+ end
64
+
37
65
  def initialize(options={})
38
66
  @api_key = options.delete(:api_key) || ENV['HEROKU_API_KEY']
39
67
  user_pass = ":#{@api_key}"
@@ -81,9 +109,7 @@ module Heroku
81
109
  response.body = Zlib::GzipReader.new(StringIO.new(response.body)).read
82
110
  end
83
111
  begin
84
- response.body = Heroku::API::OkJson.decode(response.body)
85
- rescue
86
- # leave non-JSON body as is
112
+ response.body = Heroku::API.json_decode(response.body)
87
113
  end
88
114
  end
89
115
 
@@ -22,7 +22,7 @@ module Heroku
22
22
  # POST /apps/:app/collaborators
23
23
  def post_collaborator(app, email)
24
24
  request(
25
- :expects => 200,
25
+ :expects => [200, 201],
26
26
  :method => :post,
27
27
  :path => "/apps/#{app}/collaborators",
28
28
  :query => {'collaborator[email]' => email}
@@ -22,7 +22,7 @@ module Heroku
22
22
  # PUT /apps/:app/config_vars
23
23
  def put_config_vars(app, vars)
24
24
  request(
25
- :body => Heroku::API::OkJson.encode(vars),
25
+ :body => Heroku::API.json_encode(vars),
26
26
  :expects => 200,
27
27
  :method => :put,
28
28
  :path => "/apps/#{app}/config_vars"
@@ -72,7 +72,7 @@ module Heroku
72
72
  def self.get_mock_addon(mock_data, addon)
73
73
  @addons ||= begin
74
74
  data = File.read("#{File.dirname(__FILE__)}/mock/cache/get_addons.json")
75
- Heroku::API::OkJson.decode(data)
75
+ Heroku::API.json_decode(data)
76
76
  end
77
77
  @addons.detect {|addon_data| addon_data['name'] == addon}
78
78
  end
@@ -106,7 +106,7 @@ module Heroku
106
106
  def self.get_mock_feature(mock_data, feature)
107
107
  @features ||= begin
108
108
  data = File.read("#{File.dirname(__FILE__)}/mock/cache/get_features.json")
109
- Heroku::API::OkJson.decode(data)
109
+ Heroku::API.json_decode(data)
110
110
  end
111
111
  @features.detect {|feature_data| feature_data['name'] == feature}
112
112
  end
@@ -139,7 +139,7 @@ module Heroku
139
139
 
140
140
  parsed = params.dup
141
141
  begin # try to JSON decode
142
- parsed[:body] &&= Heroku::API::OkJson.decode(parsed[:body])
142
+ parsed[:body] &&= Heroku::API.json_decode(parsed[:body])
143
143
  rescue # else leave as is
144
144
  end
145
145
 
@@ -14,7 +14,7 @@ module Heroku
14
14
  # addon is currently installed
15
15
  remove_mock_app_addon(mock_data, app, addon)
16
16
  {
17
- :body => Heroku::API::OkJson.encode({
17
+ :body => Heroku::API.json_encode({
18
18
  "message" => nil,
19
19
  "price" => get_mock_addon_price(mock_data, addon),
20
20
  "status" => 'Uninstalled'
@@ -24,14 +24,14 @@ module Heroku
24
24
  else
25
25
  # addon is not currently installed
26
26
  {
27
- :body => Heroku::API::OkJson.encode({'error' => "The add-on #{addon} is not installed for this app. Did you mean:\n\t#{addon_names.join("\n\t")}"}),
27
+ :body => Heroku::API.json_encode({'error' => "The add-on #{addon} is not installed for this app. Did you mean:\n\t#{addon_names.join("\n\t")}"}),
28
28
  :status => 422
29
29
  }
30
30
  end
31
31
  else
32
32
  # addon does not exist
33
33
  {
34
- :body => Heroku::API::OkJson.encode({'error' => "Could not find add-on #{addon}. Did you mean:\n\t#{addon_names.join("\n\t")}"}),
34
+ :body => Heroku::API.json_encode({'error' => "Could not find add-on #{addon}. Did you mean:\n\t#{addon_names.join("\n\t")}"}),
35
35
  :status => 422
36
36
  }
37
37
  end
@@ -53,7 +53,7 @@ module Heroku
53
53
  app, _ = request_params[:captures][:path]
54
54
  with_mock_app(mock_data, app) do
55
55
  {
56
- :body => Heroku::API::OkJson.encode(mock_data[:addons][app].map {|addon| addon['configured'] = true; addon}),
56
+ :body => Heroku::API.json_encode(mock_data[:addons][app].map {|addon| addon['configured'] = true; addon}),
57
57
  :status => 200
58
58
  }
59
59
  end
@@ -72,7 +72,7 @@ module Heroku
72
72
  # addon is not currently installed
73
73
  add_mock_app_addon(mock_data, app, addon)
74
74
  {
75
- :body => Heroku::API::OkJson.encode({
75
+ :body => Heroku::API.json_encode({
76
76
  "message" => nil,
77
77
  "price" => get_mock_addon_price(mock_data, addon),
78
78
  "status" => 'Installed'
@@ -82,21 +82,21 @@ module Heroku
82
82
  else
83
83
  # addon is currently installed
84
84
  {
85
- :body => Heroku::API::OkJson.encode({'error' => "Add-on already installed."}),
85
+ :body => Heroku::API.json_encode({'error' => "Add-on already installed."}),
86
86
  :status => 422
87
87
  }
88
88
  end
89
89
  else
90
90
  # addon of same type exists
91
91
  {
92
- :body => Heroku::API::OkJson.encode({'error' => "#{app_addon_type_data['name']} add-on already added.\nTo upgrade, use addons:upgrade instead.\n"}),
92
+ :body => Heroku::API.json_encode({'error' => "#{app_addon_type_data['name']} add-on already added.\nTo upgrade, use addons:upgrade instead.\n"}),
93
93
  :status => 422
94
94
  }
95
95
  end
96
96
  else
97
97
  # addon does not exist
98
98
  {
99
- :body => Heroku::API::OkJson.encode({'error' => "Add-on not found."}),
99
+ :body => Heroku::API.json_encode({'error' => "Add-on not found."}),
100
100
  :status => 404
101
101
  }
102
102
  end
@@ -117,7 +117,7 @@ module Heroku
117
117
  mock_data[:addons][app].delete(app_addon_data)
118
118
  add_mock_app_addon(mock_data, app, addon)
119
119
  {
120
- :body => Heroku::API::OkJson.encode({
120
+ :body => Heroku::API.json_encode({
121
121
  "message" => 'Plan upgraded',
122
122
  "price" => get_mock_addon_price(mock_data, addon),
123
123
  "status" => 'Updated'
@@ -127,21 +127,21 @@ module Heroku
127
127
  else
128
128
  # addon is currently installed
129
129
  {
130
- :body => Heroku::API::OkJson.encode({'error' => "Add-on already installed."}),
130
+ :body => Heroku::API.json_encode({'error' => "Add-on already installed."}),
131
131
  :status => 422
132
132
  }
133
133
  end
134
134
  else
135
135
  # addon of same type not installed
136
136
  {
137
- :body => Heroku::API::OkJson.encode({'error' => "Can't upgrade, no #{addon.split(':').join(' ')} add-on has been added.\nTo add, use addons:add instead.\n"}),
137
+ :body => Heroku::API.json_encode({'error' => "Can't upgrade, no #{addon.split(':').join(' ')} add-on has been added.\nTo add, use addons:add instead.\n"}),
138
138
  :status => 422
139
139
  }
140
140
  end
141
141
  else
142
142
  # addon does not exist
143
143
  {
144
- :body => Heroku::API::OkJson.encode({'error' => "Add-on not found."}),
144
+ :body => Heroku::API.json_encode({'error' => "Add-on not found."}),
145
145
  :status => 404
146
146
  }
147
147
  end
@@ -15,7 +15,7 @@ module Heroku
15
15
  mock_data[:ps].delete(app)
16
16
  mock_data[:releases].delete(app)
17
17
  {
18
- :body => Heroku::API::OkJson.encode({}),
18
+ :body => Heroku::API.json_encode({}),
19
19
  :status => 200
20
20
  }
21
21
  end
@@ -25,7 +25,7 @@ module Heroku
25
25
  Excon.stub(:expects => 200, :method => :get, :path => '/apps') do |params|
26
26
  request_params, mock_data = parse_stub_params(params)
27
27
  {
28
- :body => Heroku::API::OkJson.encode(mock_data[:apps]),
28
+ :body => Heroku::API.json_encode(mock_data[:apps]),
29
29
  :status => 200
30
30
  }
31
31
  end
@@ -36,7 +36,7 @@ module Heroku
36
36
  app, _ = request_params[:captures][:path]
37
37
  with_mock_app(mock_data, app) do |app_data|
38
38
  {
39
- :body => Heroku::API::OkJson.encode(app_data),
39
+ :body => Heroku::API.json_encode(app_data),
40
40
  :status => 200
41
41
  }
42
42
  end
@@ -49,7 +49,7 @@ module Heroku
49
49
 
50
50
  if get_mock_app(mock_data, app)
51
51
  {
52
- :body => Heroku::API::OkJson.encode('error' => 'Name is already taken'),
52
+ :body => Heroku::API.json_encode('error' => 'Name is already taken'),
53
53
  :status => 422
54
54
  }
55
55
  else
@@ -112,7 +112,7 @@ module Heroku
112
112
  end
113
113
 
114
114
  {
115
- :body => Heroku::API::OkJson.encode(app_data),
115
+ :body => Heroku::API.json_encode(app_data),
116
116
  :status => 202
117
117
  }
118
118
  end
@@ -157,12 +157,12 @@ module Heroku
157
157
  end
158
158
  if email && !collaborator
159
159
  {
160
- :body => Heroku::API::OkJson.encode('error' => 'Only existing collaborators can receive ownership for an app'),
160
+ :body => Heroku::API.json_encode('error' => 'Only existing collaborators can receive ownership for an app'),
161
161
  :status => 422
162
162
  }
163
163
  else
164
164
  {
165
- :body => Heroku::API::OkJson.encode('name' => app_data['name']),
165
+ :body => Heroku::API.json_encode('name' => app_data['name']),
166
166
  :status => 200
167
167
  }
168
168
  end
@@ -176,7 +176,7 @@ module Heroku
176
176
 
177
177
  with_mock_app(mock_data, app) do |app_data|
178
178
  {
179
- :body => Heroku::API::OkJson.encode({}),
179
+ :body => Heroku::API.json_encode({}),
180
180
  :status => 201
181
181
  }
182
182
  end
@@ -25,14 +25,14 @@ module Heroku
25
25
  app, _ = request_params[:captures][:path]
26
26
  with_mock_app(mock_data, app) do
27
27
  {
28
- :body => Heroku::API::OkJson.encode(mock_data[:collaborators][app]),
28
+ :body => Heroku::API.json_encode(mock_data[:collaborators][app]),
29
29
  :status => 200
30
30
  }
31
31
  end
32
32
  end
33
33
 
34
34
  # stub POST /apps/:app/collaborators
35
- Excon.stub(:expects => 200, :method => :post, :path => %r{^/apps/([^/]+)/collaborators}) do |params|
35
+ Excon.stub(:expects => [200, 201], :method => :post, :path => %r{^/apps/([^/]+)/collaborators}) do |params|
36
36
  request_params, mock_data = parse_stub_params(params)
37
37
  app, _ = request_params[:captures][:path]
38
38
  email = request_params[:query]['collaborator[email]']
@@ -40,7 +40,7 @@ module Heroku
40
40
  mock_data[:collaborators][app] |= [{'access' => 'edit', 'email' => email, 'name' => nil}]
41
41
  {
42
42
  :body => "#{email} added as a collaborator on #{app}.",
43
- :status => 200
43
+ :status => 201
44
44
  }
45
45
  # Existing user response
46
46
  #{
@@ -10,7 +10,7 @@ module Heroku
10
10
  mock_data[:config_vars][app].delete(key)
11
11
  add_mock_release(mock_data, app, {'descr' => "Config remove #{key}"})
12
12
  {
13
- :body => Heroku::API::OkJson.encode(mock_data[:config_vars][app]),
13
+ :body => Heroku::API.json_encode(mock_data[:config_vars][app]),
14
14
  :status => 200
15
15
  }
16
16
  end
@@ -22,7 +22,7 @@ module Heroku
22
22
  app, _ = request_params[:captures][:path]
23
23
  with_mock_app(mock_data, app) do
24
24
  {
25
- :body => Heroku::API::OkJson.encode(mock_data[:config_vars][app]),
25
+ :body => Heroku::API.json_encode(mock_data[:config_vars][app]),
26
26
  :status => 200
27
27
  }
28
28
  end
@@ -37,7 +37,7 @@ module Heroku
37
37
  mock_data[:config_vars][app].merge!(new_config_vars)
38
38
  add_mock_release(mock_data, app, {'descr' => "Config add #{new_config_vars.keys.join(', ')}"})
39
39
  {
40
- :body => Heroku::API::OkJson.encode(mock_data[:config_vars][app]),
40
+ :body => Heroku::API.json_encode(mock_data[:config_vars][app]),
41
41
  :status => 200
42
42
  }
43
43
  end
@@ -42,7 +42,7 @@ module Heroku
42
42
  app, _ = request_params[:captures][:path]
43
43
  with_mock_app(mock_data, app) do |app_data|
44
44
  {
45
- :body => Heroku::API::OkJson.encode(mock_data[:domains][app]),
45
+ :body => Heroku::API.json_encode(mock_data[:domains][app]),
46
46
  :status => 200
47
47
  }
48
48
  end
@@ -66,7 +66,7 @@ module Heroku
66
66
  }
67
67
  end
68
68
  {
69
- :body => Heroku::API::OkJson.encode('domain' => domain),
69
+ :body => Heroku::API.json_encode('domain' => domain),
70
70
  :status => 201
71
71
  }
72
72
  end
@@ -16,20 +16,20 @@ module Heroku
16
16
  when 'app'
17
17
  mock_data[:features][:app][app].delete(feature_data)
18
18
  {
19
- :body => Heroku::API::OkJson.encode(feature_data.merge('enabled' => false)),
19
+ :body => Heroku::API.json_encode(feature_data.merge('enabled' => false)),
20
20
  :status => 200
21
21
  }
22
22
  when 'user'
23
23
  mock_data[:features][:user].delete(feature_data.merge('enabled' => false))
24
24
  {
25
- :body => Heroku::API::OkJson.encode(feature_data),
25
+ :body => Heroku::API.json_encode(feature_data),
26
26
  :status => 200
27
27
  }
28
28
  end
29
29
  else
30
30
  # feature does not exist
31
31
  {
32
- :body => Heroku::API::OkJson.encode({'error' => "Feature not found."}),
32
+ :body => Heroku::API.json_encode({'error' => "Feature not found."}),
33
33
  :status => 404
34
34
  }
35
35
  end
@@ -56,13 +56,13 @@ module Heroku
56
56
  feature, _ = request_params[:captures][:path]
57
57
  if feature_data = get_mock_feature(mock_data, feature)
58
58
  {
59
- :body => Heroku::API::OkJson.encode(feature_data),
59
+ :body => Heroku::API.json_encode(feature_data),
60
60
  :status => 200
61
61
  }
62
62
  else
63
63
  # feature does not exist
64
64
  {
65
- :body => Heroku::API::OkJson.encode({'error' => "Feature not found."}),
65
+ :body => Heroku::API.json_encode({'error' => "Feature not found."}),
66
66
  :status => 404
67
67
  }
68
68
  end
@@ -82,7 +82,7 @@ module Heroku
82
82
  when 'app'
83
83
  mock_data[:features][:app][app] << feature_data
84
84
  {
85
- :body => Heroku::API::OkJson.encode(feature_data),
85
+ :body => Heroku::API.json_encode(feature_data),
86
86
  :status => 200
87
87
  }
88
88
  when 'user'
@@ -95,7 +95,7 @@ module Heroku
95
95
  else
96
96
  # feature does not exist
97
97
  {
98
- :body => Heroku::API::OkJson.encode({'error' => "Feature not found."}),
98
+ :body => Heroku::API.json_encode({'error' => "Feature not found."}),
99
99
  :status => 404
100
100
  }
101
101
  end
@@ -26,7 +26,7 @@ module Heroku
26
26
  Excon.stub(:expects => 200, :method => :get, :path => %r{^/user/keys}) do |params|
27
27
  request_params, mock_data = parse_stub_params(params)
28
28
  {
29
- :body => Heroku::API::OkJson.encode(mock_data[:keys]),
29
+ :body => Heroku::API.json_encode(mock_data[:keys]),
30
30
  :status => 200
31
31
  }
32
32
  end
@@ -8,7 +8,7 @@ module Heroku
8
8
  app, _ = request_params[:captures][:path]
9
9
  with_mock_app(mock_data, app) do |app_data|
10
10
  {
11
- :body => Heroku::API::OkJson.encode(get_mock_processes(mock_data, app)),
11
+ :body => Heroku::API.json_encode(get_mock_processes(mock_data, app)),
12
12
  :status => 200
13
13
  }
14
14
  end
@@ -43,7 +43,7 @@ module Heroku
43
43
  }
44
44
  mock_data[:ps][app] << data
45
45
  {
46
- :body => Heroku::API::OkJson.encode(data),
46
+ :body => Heroku::API.json_encode(data),
47
47
  :status => 200,
48
48
  }
49
49
  end
@@ -117,13 +117,13 @@ module Heroku
117
117
  }
118
118
  else
119
119
  {
120
- :body => Heroku::API::OkJson.encode('error' => "No such type as #{type}") ,
120
+ :body => Heroku::API.json_encode('error' => "No such type as #{type}") ,
121
121
  :status => 422
122
122
  }
123
123
  end
124
124
  else
125
125
  {
126
- :body => Heroku::API::OkJson.encode('error' => "That feature is not available on this app's stack"),
126
+ :body => Heroku::API.json_encode('error' => "That feature is not available on this app's stack"),
127
127
  :status => 422
128
128
  }
129
129
  end
@@ -139,7 +139,7 @@ module Heroku
139
139
  type = request_params[:query].has_key?('type') && request_params[:query]['type']
140
140
  if !ps && !type
141
141
  {
142
- :body => Heroku::API::OkJson.encode({'error' => 'Missing process argument'}),
142
+ :body => Heroku::API.json_encode({'error' => 'Missing process argument'}),
143
143
  :status => 422
144
144
  }
145
145
  else
@@ -160,12 +160,12 @@ module Heroku
160
160
  unless app_data['stack'] == 'cedar'
161
161
  app_data['dynos'] = dynos
162
162
  {
163
- :body => Heroku::API::OkJson.encode({'name' => app, 'dynos' => dynos}),
163
+ :body => Heroku::API.json_encode({'name' => app, 'dynos' => dynos}),
164
164
  :status => 200
165
165
  }
166
166
  else
167
167
  {
168
- :body => Heroku::API::OkJson.encode({'error' => "For Cedar apps, use `heroku scale web=#{dynos}`"}),
168
+ :body => Heroku::API.json_encode({'error' => "For Cedar apps, use `heroku scale web=#{dynos}`"}),
169
169
  :status => 422
170
170
  }
171
171
  end
@@ -181,12 +181,12 @@ module Heroku
181
181
  unless app_data['stack'] == 'cedar'
182
182
  app_data['workers'] = workers
183
183
  {
184
- :body => Heroku::API::OkJson.encode({'name' => app, 'workers' => workers}),
184
+ :body => Heroku::API.json_encode({'name' => app, 'workers' => workers}),
185
185
  :status => 200
186
186
  }
187
187
  else
188
188
  {
189
- :body => Heroku::API::OkJson.encode({'error' => "For Cedar apps, use `heroku scale worker=#{workers}`"}),
189
+ :body => Heroku::API.json_encode({'error' => "For Cedar apps, use `heroku scale worker=#{workers}`"}),
190
190
  :status => 422
191
191
  }
192
192
  end
@@ -8,7 +8,7 @@ module Heroku
8
8
  app, _ = request_params[:captures][:path]
9
9
  with_mock_app(mock_data, app) do |app_data|
10
10
  {
11
- :body => Heroku::API::OkJson.encode(mock_data[:releases][app]),
11
+ :body => Heroku::API.json_encode(mock_data[:releases][app]),
12
12
  :status => 200
13
13
  }
14
14
  end
@@ -22,7 +22,7 @@ module Heroku
22
22
  releases = mock_data[:releases][app]
23
23
  if release_data = (release_name == 'current' && releases.last) || releases.detect {|release| release['name'] == release_name}
24
24
  {
25
- :body => Heroku::API::OkJson.encode(release_data),
25
+ :body => Heroku::API.json_encode(release_data),
26
26
  :status => 200
27
27
  }
28
28
  else
@@ -51,7 +51,7 @@ module Heroku
51
51
  }
52
52
  else
53
53
  {
54
- :body => Heroku::API::OkJson.encode({'error' => 'Cannot rollback to a release that had a different set of addons installed'}),
54
+ :body => Heroku::API.json_encode({'error' => 'Cannot rollback to a release that had a different set of addons installed'}),
55
55
  :status => 422
56
56
  }
57
57
  end
@@ -37,7 +37,7 @@ module Heroku
37
37
  stack_data = Marshal::load(Marshal.dump(STACKS))
38
38
  stack_data.detect {|stack| stack['name'] == app_data['stack']}['current'] = true
39
39
  {
40
- :body => Heroku::API::OkJson.encode(stack_data),
40
+ :body => Heroku::API.json_encode(stack_data),
41
41
  :status => 200
42
42
  }
43
43
  end
@@ -65,13 +65,13 @@ BODY
65
65
  }
66
66
  else
67
67
  {
68
- :body => Heroku::API::OkJson.encode('error' => 'Stack not found'),
68
+ :body => Heroku::API.json_encode('error' => 'Stack not found'),
69
69
  :status => 404
70
70
  }
71
71
  end
72
72
  else
73
73
  {
74
- :body => Heroku::API::OkJson.encode('error' => 'Stack migration to/from Cedar is not available. Create a new app with --stack cedar instead.'),
74
+ :body => Heroku::API.json_encode('error' => 'Stack migration to/from Cedar is not available. Create a new app with --stack cedar instead.'),
75
75
  :status => 422
76
76
  }
77
77
  end
@@ -1,5 +1,5 @@
1
1
  module Heroku
2
2
  class API
3
- VERSION = "0.2.6"
3
+ VERSION = "0.2.7"
4
4
  end
5
5
  end
@@ -43,7 +43,7 @@ class TestAddons < MiniTest::Unit::TestCase
43
43
  data = File.read("#{File.dirname(__FILE__)}/../lib/heroku/api/mock/cache/get_addons.json")
44
44
 
45
45
  assert_equal(200, response.status)
46
- assert_equal(Heroku::API::OkJson.decode(data), response.body)
46
+ assert_equal(Heroku::API.json_decode(data), response.body)
47
47
  end
48
48
 
49
49
  def test_get_addons_with_app
@@ -54,7 +54,7 @@ class TestCollaborators < MiniTest::Unit::TestCase
54
54
  email_address = 'wesley@heroku.com'
55
55
  response = heroku.post_collaborator(app_data['name'], email_address)
56
56
 
57
- assert_equal(200, response.status)
57
+ assert_equal(201, response.status)
58
58
  assert_equal(
59
59
  "#{email_address} added as a collaborator on #{app_data['name']}.",
60
60
  response.body
@@ -5,7 +5,7 @@ class TestFeatures < MiniTest::Unit::TestCase
5
5
  def setup
6
6
  @feature_data ||= begin
7
7
  data = File.read("#{File.dirname(__FILE__)}/../lib/heroku/api/mock/cache/get_features.json")
8
- features_data = Heroku::API::OkJson.decode(data)
8
+ features_data = Heroku::API.json_decode(data)
9
9
  features_data.detect {|feature| feature['name'] == 'user_env_compile'}
10
10
  end
11
11
  end
@@ -40,7 +40,7 @@ class TestFeatures < MiniTest::Unit::TestCase
40
40
  data = File.read("#{File.dirname(__FILE__)}/../lib/heroku/api/mock/cache/get_features.json")
41
41
 
42
42
  assert_equal(200, response.status)
43
- assert_equal(Heroku::API::OkJson.decode(data), response.body)
43
+ assert_equal(Heroku::API.json_decode(data), response.body)
44
44
  end
45
45
  end
46
46
 
@@ -7,7 +7,7 @@ class TestUser < MiniTest::Unit::TestCase
7
7
  data = File.read("#{File.dirname(__FILE__)}/../lib/heroku/api/mock/cache/get_user.json")
8
8
 
9
9
  assert_equal(200, response.status)
10
- assert_equal(Heroku::API::OkJson.decode(data), response.body)
10
+ assert_equal(Heroku::API.json_decode(data), response.body)
11
11
  end
12
12
 
13
13
  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.2.6
4
+ version: 0.2.7
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,22 +9,22 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-06-21 00:00:00.000000000 Z
12
+ date: 2012-07-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: excon
16
- requirement: &70281784396440 !ruby/object:Gem::Requirement
16
+ requirement: &70181884166000 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
20
20
  - !ruby/object:Gem::Version
21
- version: 0.14.0
21
+ version: 0.14.3
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70281784396440
24
+ version_requirements: *70181884166000
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: minitest
27
- requirement: &70281784395620 !ruby/object:Gem::Requirement
27
+ requirement: &70181884165300 !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: *70281784395620
35
+ version_requirements: *70181884165300
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rake
38
- requirement: &70281784394080 !ruby/object:Gem::Requirement
38
+ requirement: &70181884164420 !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: *70281784394080
46
+ version_requirements: *70181884164420
47
47
  description: Ruby Client for the Heroku API
48
48
  email:
49
49
  - wesley@heroku.com
@@ -121,7 +121,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
121
121
  version: '0'
122
122
  segments:
123
123
  - 0
124
- hash: 2230486657400776682
124
+ hash: 3317431445359256884
125
125
  required_rubygems_version: !ruby/object:Gem::Requirement
126
126
  none: false
127
127
  requirements:
@@ -130,7 +130,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
130
130
  version: '0'
131
131
  segments:
132
132
  - 0
133
- hash: 2230486657400776682
133
+ hash: 3317431445359256884
134
134
  requirements: []
135
135
  rubyforge_project:
136
136
  rubygems_version: 1.8.15