diff --git a/lib/travis/api/v3/renderer/account.rb b/lib/travis/api/v3/renderer/account.rb new file mode 100644 index 00000000..c69fe61b --- /dev/null +++ b/lib/travis/api/v3/renderer/account.rb @@ -0,0 +1,11 @@ +require 'travis/api/v3/renderer/model_renderer' +require 'travis/api/v3/renderer/avatar_url' + +module Travis::API::V3 + class Renderer::Account < Renderer::ModelRenderer + include Renderer::AvatarURL + + representation(:minimal, :id, :login) + representation(:standard, :id, :login, :name, :github_id, :avatar_url) + end +end diff --git a/lib/travis/api/v3/renderer/model_renderer.rb b/lib/travis/api/v3/renderer/model_renderer.rb index 7a253178..07944fec 100644 --- a/lib/travis/api/v3/renderer/model_renderer.rb +++ b/lib/travis/api/v3/renderer/model_renderer.rb @@ -16,15 +16,18 @@ module Travis::API::V3 class_eval "def #{field}; @model.#{field}; end" unless method_defined?(field) available_attributes << field.to_s end - representations[name] = fields + representations[name] ||= [] + representations[name] += fields end + @representations = {} def self.representations - @representations ||= {} + @representations ||= superclass.representations.dup end + @available_attributes = Set.new def self.available_attributes - @available_attributes ||= Set.new + @available_attributes ||= superclass.available_attributes.dup end def self.render(model, representation = :standard, **options) diff --git a/lib/travis/api/v3/renderer/organization.rb b/lib/travis/api/v3/renderer/organization.rb index 483d46b3..00d50b0f 100644 --- a/lib/travis/api/v3/renderer/organization.rb +++ b/lib/travis/api/v3/renderer/organization.rb @@ -1,10 +1,6 @@ require 'travis/api/v3/renderer/model_renderer' module Travis::API::V3 - class Renderer::Organization < Renderer::ModelRenderer - include Renderer::AvatarURL - - representation(:minimal, :id, :login) - representation(:standard, :id, :login, :name, :github_id, :avatar_url) + class Renderer::Organization < Renderer::Account end end diff --git a/lib/travis/api/v3/renderer/user.rb b/lib/travis/api/v3/renderer/user.rb index 83e1c30c..61aa8b1e 100644 --- a/lib/travis/api/v3/renderer/user.rb +++ b/lib/travis/api/v3/renderer/user.rb @@ -1,10 +1,7 @@ require 'travis/api/v3/renderer/model_renderer' module Travis::API::V3 - class Renderer::User < Renderer::ModelRenderer - include Renderer::AvatarURL - - representation(:minimal, :id, :login) - representation(:standard, :id, :login, :name, :github_id, :avatar_url, :is_syncing, :synced_at) + class Renderer::User < Renderer::Account + representation(:standard, :is_syncing, :synced_at) end end