heroku-api 0.2.13 → 0.3.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.
@@ -1,3 +1,9 @@
1
+ 0.3.0 07/20/2012
2
+ ================
3
+
4
+ fixes for url segment escaping of config_vars, domains and keys
5
+ add get_app_maintenance
6
+
1
7
  0.2.13 07/18/2012
2
8
  =================
3
9
 
@@ -110,6 +110,10 @@ module Heroku
110
110
  end
111
111
  end
112
112
 
113
+ def escape(string)
114
+ CGI.escape(string).gsub('.', '%2E')
115
+ end
116
+
113
117
  def ps_options(params)
114
118
  if ps_env = params.delete(:ps_env) || params.delete('ps_env')
115
119
  ps_env.each do |key, value|
@@ -28,6 +28,15 @@ module Heroku
28
28
  )
29
29
  end
30
30
 
31
+ # GET /apps/:app/server/maintenance
32
+ def get_app_maintenance(app)
33
+ request(
34
+ :expects => 200,
35
+ :method => :get,
36
+ :path => "/apps/#{app}/server/maintenance"
37
+ )
38
+ end
39
+
31
40
  # POST /apps
32
41
  def post_app(params={})
33
42
  request(
@@ -6,7 +6,7 @@ module Heroku
6
6
  request(
7
7
  :expects => 200,
8
8
  :method => :delete,
9
- :path => "/apps/#{app}/config_vars/#{key}"
9
+ :path => "/apps/#{app}/config_vars/#{escape(key)}"
10
10
  )
11
11
  end
12
12
 
@@ -6,7 +6,7 @@ module Heroku
6
6
  request(
7
7
  :expects => 200,
8
8
  :method => :delete,
9
- :path => "/apps/#{app}/domains/#{CGI.escape(domain)}"
9
+ :path => "/apps/#{app}/domains/#{escape(domain)}"
10
10
  )
11
11
  end
12
12
 
@@ -6,7 +6,7 @@ module Heroku
6
6
  request(
7
7
  :expects => 200,
8
8
  :method => :delete,
9
- :path => "/user/keys/#{CGI.escape(key).gsub('.','%2E')}"
9
+ :path => "/user/keys/#{escape(key)}"
10
10
  )
11
11
  end
12
12
 
@@ -152,6 +152,10 @@ module Heroku
152
152
  add_mock_release(mock_data, app, {'descr' => "Add-on remove #{addon_data['name']}"})
153
153
  end
154
154
 
155
+ def self.unescape(string)
156
+ CGI.unescape(string)
157
+ end
158
+
155
159
  def self.with_mock_app(mock_data, app, &block)
156
160
  if app_data = get_mock_app(mock_data, app)
157
161
  yield(app_data)
@@ -42,6 +42,20 @@ module Heroku
42
42
  end
43
43
  end
44
44
 
45
+ # stub GET /apps/:app/server/maintenance
46
+ Excon.stub(:expects => 200, :method => :get, :path => %r{^/apps/([^/]+)/server/maintenance$}) do |params|
47
+ request_params, mock_data = parse_stub_params(params)
48
+ app, _ = request_params[:captures][:path].first
49
+
50
+ with_mock_app(mock_data, app) do
51
+ maintenance = mock_data[:maintenance_mode].include?(app)
52
+ {
53
+ :body => Heroku::API::OkJson.encode('maintenance' => maintenance),
54
+ :status => 200
55
+ }
56
+ end
57
+ end
58
+
45
59
  # stub POST /apps
46
60
  Excon.stub(:expects => 202, :method => :post, :path => '/apps') do |params|
47
61
  request_params, mock_data = parse_stub_params(params)
@@ -6,6 +6,7 @@ module Heroku
6
6
  Excon.stub(:expects => 200, :method => :delete, :path => %r{^/apps/([^/]+)/config_vars/([^/]+)$}) do |params|
7
7
  request_params, mock_data = parse_stub_params(params)
8
8
  app, key, _ = request_params[:captures][:path]
9
+ key = unescape(key)
9
10
  with_mock_app(mock_data, app) do
10
11
  mock_data[:config_vars][app].delete(key)
11
12
  add_mock_release(mock_data, app, {'descr' => "Config remove #{key}"})
@@ -6,7 +6,7 @@ module Heroku
6
6
  Excon.stub(:expects => 200, :method => :delete, :path => %r{^/apps/([^/]+)/domains/([^/]+)$} ) do |params|
7
7
  request_params, mock_data = parse_stub_params(params)
8
8
  app, domain, _ = request_params[:captures][:path]
9
- domain = CGI.unescape(domain)
9
+ domain = unescape(domain)
10
10
  with_mock_app(mock_data, app) do |app_data|
11
11
  if domain = get_mock_app_domain(mock_data, app, domain)
12
12
  mock_data[:domains][app].delete(domain)
@@ -6,7 +6,7 @@ module Heroku
6
6
  Excon.stub(:expects => 200, :method => :delete, :path => %r{^/user/keys/([^/]+)}) do |params|
7
7
  request_params, mock_data = parse_stub_params(params)
8
8
  key, _ = request_params[:captures][:path]
9
- key = CGI.unescape(key).gsub('%2E', '.')
9
+ key = unescape(key)
10
10
  if key_data = get_mock_key(mock_data, key)
11
11
  mock_data[:keys].delete(key_data)
12
12
  { :status => 200 }
@@ -1,5 +1,5 @@
1
1
  module Heroku
2
2
  class API
3
- VERSION = "0.2.13"
3
+ VERSION = "0.3.0"
4
4
  end
5
5
  end
@@ -38,6 +38,15 @@ class TestApps < MiniTest::Unit::TestCase
38
38
  end
39
39
  end
40
40
 
41
+ def test_get_app_maintenance
42
+ with_app do |app_data|
43
+ response = heroku.get_app_maintenance(app_data['name'])
44
+
45
+ assert_equal(200, response.status)
46
+ assert_equal({'maintenance' => false}, response.body)
47
+ end
48
+ end
49
+
41
50
  def test_post_app
42
51
  response = heroku.post_app
43
52
 
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.13
4
+ version: 0.3.0
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-07-18 00:00:00.000000000 Z
12
+ date: 2012-07-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: excon
16
- requirement: &2168633640 !ruby/object:Gem::Requirement
16
+ requirement: &70155015136000 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 0.15.4
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2168633640
24
+ version_requirements: *70155015136000
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: minitest
27
- requirement: &2168631580 !ruby/object:Gem::Requirement
27
+ requirement: &70155015135020 !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: *2168631580
35
+ version_requirements: *70155015135020
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rake
38
- requirement: &2168629320 !ruby/object:Gem::Requirement
38
+ requirement: &70155015134300 !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: *2168629320
46
+ version_requirements: *70155015134300
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: 4095133132092254546
124
+ hash: -2807830283804152461
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: 4095133132092254546
133
+ hash: -2807830283804152461
134
134
  requirements: []
135
135
  rubyforge_project:
136
136
  rubygems_version: 1.8.15