Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 5 additions & 4 deletions Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ PATH
remote: .
specs:
shipit-engine (0.33.0)
active_model_serializers (~> 0.9.3)
ansi_stream (~> 0.0.6)
attr_encrypted (~> 3.1.0)
autoprefixer-rails (~> 6.4.1)
Expand All @@ -15,6 +14,7 @@ PATH
lodash-rails (~> 4.6.1)
octokit (~> 4.15)
omniauth-github (~> 1.4)
panko_serializer (~> 0.7.5)
pubsubstub (~> 0.2.0)
rails (~> 6.0.0)
rails-timeago (~> 2.13.0)
Expand Down Expand Up @@ -69,9 +69,6 @@ GEM
erubi (~> 1.4)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.1, >= 1.2.0)
active_model_serializers (0.9.8)
activemodel (>= 3.2)
concurrent-ruby (~> 1.0)
activejob (6.0.3.5)
activesupport (= 6.0.3.5)
globalid (>= 0.3.6)
Expand Down Expand Up @@ -185,6 +182,7 @@ GEM
octokit (4.20.0)
faraday (>= 0.9)
sawyer (~> 0.8.0, >= 0.5.3)
oj (3.11.2)
omniauth (1.9.1)
hashie (>= 3.4.6)
rack (>= 1.6.2, < 3)
Expand All @@ -194,6 +192,9 @@ GEM
omniauth-oauth2 (1.7.1)
oauth2 (~> 1.4)
omniauth (>= 1.9, < 3)
panko_serializer (0.7.5)
activesupport
oj (~> 3.11.0)
parallel (1.19.2)
parser (2.7.2.0)
ast (~> 2.4.1)
Expand Down
13 changes: 0 additions & 13 deletions app/controllers/concerns/shipit/active_model_serializers_patch.rb

This file was deleted.

5 changes: 3 additions & 2 deletions app/controllers/concerns/shipit/api/rendering.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ module Rendering
private

def render_resources(resources, options = {})
options[:json] = resources
options[:json] = Panko::ArraySerializer.new(resources, each_serializer: Serializer.for(resources)).to_json
render(options)
end

Expand All @@ -15,7 +15,8 @@ def render_resource(resource, options = {})
elsif resource.errors.any?
render(options.reverse_merge(status: :unprocessable_entity, json: { errors: resource.errors }))
else
render(options.reverse_merge(json: resource))
serializer = Serializer.for(resource).new
render(options.reverse_merge(json: serializer.serialize(resource)))
end
end
end
Expand Down
2 changes: 1 addition & 1 deletion app/controllers/shipit/api/hooks_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ def index
end

def show
render(json: hook)
render_resource(hook)
end

params do
Expand Down
2 changes: 1 addition & 1 deletion app/controllers/shipit/tasks_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ def abort
end

def tail
render(json: TailTaskSerializer.new(task, context: { last_byte: params[:last_byte].to_i }))
render(json: TailTaskSerializer.new(context: { last_byte: params[:last_byte].to_i }).serialize(task))
end

def lookup
Expand Down
6 changes: 6 additions & 0 deletions app/models/shipit/anonymous_user.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
# frozen_string_literal: true
module Shipit
class AnonymousUser
class << self
def attribute_aliases
{}.freeze
end
end

def present?
false
end
Expand Down
4 changes: 2 additions & 2 deletions app/models/shipit/hook.rb
Original file line number Diff line number Diff line change
Expand Up @@ -101,8 +101,8 @@ def listening_event(event)
def coerce_payload(payload)
coerced_payload = payload.dup
payload.each do |key, value|
if serializer = ActiveModel::Serializer.serializer_for(value)
coerced_payload[key] = serializer.new(value)
if serializer = Serializer.for(value)
coerced_payload[key] = serializer.new.serialize(value)
end
end
coerced_payload.to_json
Expand Down
23 changes: 0 additions & 23 deletions app/serializers/concerns/shipit/conditional_attributes.rb

This file was deleted.

25 changes: 11 additions & 14 deletions app/serializers/shipit/commit_serializer.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,13 @@
module Shipit
class CommitSerializer < ShortCommitSerializer
include GithubUrlHelper
include ConditionalAttributes

has_one :author
has_one :committer
has_one :author, serializer: UserSerializer
has_one :committer, serializer: UserSerializer

attributes :additions, :deletions, :authored_at, :committed_at, :html_url, :pull_request, :status, :deployed

def deployed
object.deployed?
end
aliases deployed?: :deployed

def status
object.status.state
Expand All @@ -22,14 +19,14 @@ def html_url
end

def pull_request
{
number: object.pull_request_number,
html_url: github_pull_request_url(object),
}
end

def include_pull_request?
object.pull_request?
if object.pull_request?
{
number: object.pull_request_number,
html_url: github_pull_request_url(object),
}
else
SKIP
end
end
end
end
11 changes: 3 additions & 8 deletions app/serializers/shipit/deploy_serializer.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,10 @@ module Shipit
class DeploySerializer < TaskSerializer
include GithubUrlHelper

has_many :commits
has_many :commits, serializer: CommitSerializer
has_one :rollback_once_aborted_to, serializer: DeploySerializer

attributes :compare_url, :rollback_url, :additions, :deletions, :rollback_once_aborted_to
attributes :compare_url, :rollback_url, :additions, :deletions

def html_url
stack_deploy_url(object.stack, object)
Expand All @@ -22,11 +23,5 @@ def rollback_url
def type
:deploy
end

def rollback_once_aborted_to
return nil unless object.rollback_once_aborted_to

DeploySerializer.new(object.rollback_once_aborted_to)
end
end
end
13 changes: 5 additions & 8 deletions app/serializers/shipit/hook_serializer.rb
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
# frozen_string_literal: true
module Shipit
class HookSerializer < ActiveModel::Serializer
include ConditionalAttributes
class HookSerializer < Serializer
attributes :id, :stack, :url, :delivery_url, :content_type, :events, :insecure_ssl, :created_at, :updated_at

has_one :stack
attributes :id, :url, :delivery_url, :content_type, :events, :insecure_ssl, :created_at, :updated_at
def stack
object.stack || SKIP
end

def url
if object.scoped?
Expand All @@ -13,9 +14,5 @@ def url
api_hook_url(object)
end
end

def include_stack?
object.scoped?
end
end
end
13 changes: 8 additions & 5 deletions app/serializers/shipit/merge_request_serializer.rb
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
# frozen_string_literal: true
module Shipit
class MergeRequestSerializer < ActiveModel::Serializer
class MergeRequestSerializer < Serializer
include GithubUrlHelper
include ConditionalAttributes

has_one :merge_requested_by
has_one :merge_requested_by, serializer: UserSerializer
has_one :head, serializer: ShortCommitSerializer

attributes :id, :number, :title, :github_id, :additions, :deletions, :state, :merge_status, :mergeable,
Expand All @@ -14,8 +13,12 @@ def html_url
github_pull_request_url(object)
end

def include_rejection_reason?
object.rejection_reason?
def rejection_reason
if object.rejection_reason?
object.rejection_reason
else
SKIP
end
end
end
end
11 changes: 7 additions & 4 deletions app/serializers/shipit/pull_request_serializer.rb
Original file line number Diff line number Diff line change
@@ -1,18 +1,21 @@
# frozen_string_literal: true

module Shipit
class PullRequestSerializer < ActiveModel::Serializer
class PullRequestSerializer < Serializer
include GithubUrlHelper
include ConditionalAttributes

has_one :user
has_one :user, serializer: UserSerializer
has_one :head, serializer: ShortCommitSerializer
has_many :assignees, serializer: UserSerializer

attributes :id, :number, :title, :github_id, :additions, :deletions, :state, :html_url

def html_url
github_pull_request_url(object) if object.stack.present?
if object.stack.present?
github_pull_request_url(object)
else
SKIP
end
end
end
end
4 changes: 2 additions & 2 deletions app/serializers/shipit/review_stack_serializer.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# frozen_string_literal: true

module Shipit
class ReviewStackSerializer < Shipit::StackSerializer
has_one :pull_request
class ReviewStackSerializer < StackSerializer
has_one :pull_request, serializer: PullRequestSerializer
end
end
4 changes: 2 additions & 2 deletions app/serializers/shipit/rollback_serializer.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ def type
:rollback
end

def include_rollback_url?
false
def rollback_url
SKIP
end
end
end
21 changes: 21 additions & 0 deletions app/serializers/shipit/serializer.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# frozen_string_literal: true
module Shipit
class Serializer < Panko::Serializer
include Engine.routes.url_helpers
class << self
def for(object)
if object.nil?
self
elsif object.is_a?(Array)
self.for(object.first)
else
"#{object.class.name}Serializer".safe_constantize
end
end

def build(object)
self.for(object).new.serialize(object)
end
end
end
end
2 changes: 1 addition & 1 deletion app/serializers/shipit/short_commit_serializer.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# frozen_string_literal: true
module Shipit
class ShortCommitSerializer < ActiveModel::Serializer
class ShortCommitSerializer < Serializer
attributes :sha, :message

def message
Expand Down
Loading