zammad/app/controllers/integration/github_controller.rb
Dominik Klein b7c1530a56 Feature: Desktop view - Added ticket right sidebar for issue tracker references.
Co-authored-by: Mantas Masalskis <mm@zammad.com>
Co-authored-by: Benjamin Scharf <bs@zammad.com>
Co-authored-by: Dominik Klein <dk@zammad.com>
2024-10-30 15:11:17 +01:00

62 lines
1.7 KiB
Ruby

# Copyright (C) 2012-2024 Zammad Foundation, https://zammad-foundation.org/
class Integration::GitHubController < ApplicationController
prepend_before_action :authenticate_and_authorize!
def verify
github = ::GitHub.new(endpoint: params[:endpoint], api_token: params[:api_token])
github.verify!
render json: {
result: 'ok',
}
rescue => e
logger.error e
render json: {
result: 'failed',
message: e.message,
}
end
def query
issue_tracker_list_service = if params[:ticket_id]
Service::Ticket::ExternalReferences::IssueTracker::TicketList.new(
type: 'github',
ticket: Ticket.find(params[:ticket_id]),
)
else
Service::Ticket::ExternalReferences::IssueTracker::FetchMetadata.new(
type: 'github',
issue_links: params[:links],
)
end
render json: {
result: 'ok',
response: issue_tracker_list_service.execute,
}
rescue => e
logger.error e
render json: {
result: 'failed',
message: e.message,
}
end
def update
ticket = Ticket.find(params[:ticket_id])
ticket.with_lock do
authorize!(ticket, :show?)
ticket.preferences[:github] ||= {}
ticket.preferences[:github][:issue_links] = Array(params[:issue_links]).uniq
ticket.save!
end
render json: {
result: 'ok',
}
end
end