heroku-api 0.2.13 → 0.3.0

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