Skip to content
This repository was archived by the owner on Jun 2, 2021. It is now read-only.

Commit cad908a

Browse files
committed
v3: Make ApiUrlBuilder have class method, not instance method
There was no need to have multiple instances of this class, so change its single method to a class method. Authored-by: Reid Mitchell <rmitchell@pivotal.io>
1 parent fd233c7 commit cad908a

7 files changed

Lines changed: 9 additions & 15 deletions

File tree

app/controllers/runtime/root_controller.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ class RootController < RestController::BaseController
77
get '/', :read
88

99
def read
10-
api_url_builder = VCAP::CloudController::Presenters::ApiUrlBuilder.new
10+
api_url_builder = VCAP::CloudController::Presenters::ApiUrlBuilder
1111

1212
response = {
1313
links: {

app/controllers/v3/application_controller.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ def user_audit_info
8989
end
9090

9191
def url_builder
92-
@url_builder ||= VCAP::CloudController::Presenters::ApiUrlBuilder.new
92+
@url_builder ||= VCAP::CloudController::Presenters::ApiUrlBuilder
9393
end
9494

9595
def request_id

app/controllers/v3/space_manifests_controller.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ def apply_manifest
3737
app_guid_message_hash.each { |app_guid, message| record_apply_manifest_audit_event(AppModel.find(guid: app_guid), message, space) }
3838
job = Jobs::Enqueuer.new(apply_manifest_job, queue: Jobs::Queues.generic).enqueue_pollable
3939

40-
url_builder = Presenters::ApiUrlBuilder.new
40+
url_builder = Presenters::ApiUrlBuilder
4141
head HTTP::ACCEPTED, 'Location' => url_builder.build_url(path: "/v3/jobs/#{job.guid}")
4242
end
4343

app/presenters/api_url_builder.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
module VCAP::CloudController::Presenters
22
class ApiUrlBuilder
3-
def build_url(path: nil, query: nil)
3+
def self.build_url(path: nil, query: nil)
44
my_uri = URI::HTTP.build(host: VCAP::CloudController::Config.config.get(:external_domain), path: path, query: query)
55
my_uri.scheme = VCAP::CloudController::Config.config.get(:external_protocol)
66
my_uri.to_s

app/presenters/v3/base_presenter.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ def redact_hash(unredacted_value)
2222
end
2323

2424
def url_builder
25-
@url_builder ||= VCAP::CloudController::Presenters::ApiUrlBuilder.new
25+
@url_builder ||= VCAP::CloudController::Presenters::ApiUrlBuilder
2626
end
2727
end
2828
end

spec/unit/presenters/api_url_builder_spec.rb

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,24 +7,18 @@ module VCAP::CloudController::Presenters
77
let(:host) { TestConfig.config[:external_domain] }
88

99
it 'builds a url when path is provided' do
10-
builder = ApiUrlBuilder.new
11-
1210
expected_url = "#{scheme}://#{host}/v3/foo/bar"
13-
expect(builder.build_url(path: '/v3/foo/bar')).to eq expected_url
11+
expect(ApiUrlBuilder.build_url(path: '/v3/foo/bar')).to eq expected_url
1412
end
1513

1614
it 'can build urls with query string' do
17-
builder = ApiUrlBuilder.new
18-
1915
expected_url = "#{scheme}://#{host}/v3/foo/bar?baz=quux"
20-
expect(builder.build_url(path: '/v3/foo/bar', query: 'baz=quux')).to eq expected_url
16+
expect(ApiUrlBuilder.build_url(path: '/v3/foo/bar', query: 'baz=quux')).to eq expected_url
2117
end
2218

2319
it 'builds a url without a trailing slash when path is NOT provided' do
24-
builder = ApiUrlBuilder.new
25-
2620
expected_url = "#{scheme}://#{host}"
27-
expect(builder.build_url).to eq expected_url
21+
expect(ApiUrlBuilder.build_url).to eq expected_url
2822
end
2923
end
3024
end

spec/unit/presenters/v3/to_many_relationship_presenter_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ def generate_relationships(count)
2828
let(:relation_url) { 'cash/guid' }
2929
let(:relationship_path) { 'money' }
3030
subject(:relationship_presenter) { ToManyRelationshipPresenter.new(relation_url, data, relationship_path, build_related: build_related) }
31-
let(:url_builder) { VCAP::CloudController::Presenters::ApiUrlBuilder.new }
31+
let(:url_builder) { VCAP::CloudController::Presenters::ApiUrlBuilder }
3232

3333
describe '#to_hash' do
3434
let(:result) { relationship_presenter.to_hash }

0 commit comments

Comments
 (0)