Commit b0a4635b authored by Grzegorz Bizon's avatar Grzegorz Bizon

Simplify implementation of entity serializers

parent e49fb264
class BaseSerializer
def initialize(parameters = {})
@entity = self.class.entity_class
@request = EntityRequest.new(parameters)
@opts = { request: @request }
end
def set(parameters)
@request.merge!(parameters)
self
end
def represent(resource, opts = {})
@entity.represent(resource, @opts.reverse_merge(opts))
self.class.entity_class
.represent(resource, opts.merge(request: @request))
end
def self.entity(entity_class)
......
......@@ -19,6 +19,6 @@ class BuildEntity < Grape::Entity
private
def url_to(route, build)
@urls.send("#{route}_url", build.project.namespace, build.project, build)
send("#{route}_url", build.project.namespace, build.project, build)
end
end
......@@ -4,9 +4,9 @@ class CommitEntity < API::Entities::RepoCommit
expose :author, using: UserEntity
expose :commit_url do |commit|
@urls.namespace_project_tree_url(
@request.project.namespace,
@request.project,
namespace_project_tree_url(
request.project.namespace,
request.project,
id: commit.id)
end
end
......@@ -11,7 +11,7 @@ class DeploymentEntity < Grape::Entity
end
expose :ref_url do |deployment|
@urls.namespace_project_tree_url(
namespace_project_tree_url(
deployment.project.namespace,
deployment.project,
id: deployment.ref)
......
......@@ -5,10 +5,6 @@ class EntityRequest
# that is present in the controller (see #20045).
#
def initialize(parameters)
merge!(parameters)
end
def merge!(parameters)
parameters.each do |key, value|
define_singleton_method(key) { value }
end
......
......@@ -10,7 +10,7 @@ class EnvironmentEntity < Grape::Entity
expose :stoppable?
expose :environment_url do |environment|
@urls.namespace_project_environment_url(
namespace_project_environment_url(
environment.project.namespace,
environment.project,
environment)
......
module RequestAwareEntity
attr_reader :request
extend ActiveSupport::Concern
def initialize(object, options = {})
super(object, options)
included do
include Gitlab::Routing.url_helpers
end
@request = options.fetch(:request)
@urls = Gitlab::Routing.url_helpers
def request
@options.fetch(:request)
end
end
......@@ -15,12 +15,4 @@ describe EntityRequest do
expect { subject.some_method }.to raise_error NoMethodError
end
end
describe '#merge!' do
before { subject.merge!(build: 'some build') }
it 'appends parameters' do
expect(subject.build).to eq 'some build'
end
end
end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment