diff --git a/app/controllers/version_releases_controller.rb b/app/controllers/version_releases_controller.rb index 618eb0735..045785334 100644 --- a/app/controllers/version_releases_controller.rb +++ b/app/controllers/version_releases_controller.rb @@ -2,7 +2,7 @@ class VersionReleasesController < ApplicationController before_action :load_repository before_action :set_user before_action :require_login, except: [:index] - before_action :find_version , only: [:edit, :update, :destroy] + before_action :find_version , only: [:show, :edit, :update, :destroy] def index version_releases = Gitea::Versions::ListService.new(@user.gitea_token, @user.try(:login), @repository.try(:identifier)).call @@ -22,6 +22,10 @@ class VersionReleasesController < ApplicationController end end + def show + @release = Gitea::Versions::GetService.call(current_user.gitea_token, @user&.login, @repository&.identifier, @version&.version_gid) + end + def create if params[:name].nil? normal_status(-1, "名称不能为空") diff --git a/app/services/gitea/versions/get_service.rb b/app/services/gitea/versions/get_service.rb new file mode 100644 index 000000000..b3c6cf9cc --- /dev/null +++ b/app/services/gitea/versions/get_service.rb @@ -0,0 +1,37 @@ +# Get a list of all commits from a repository +class Gitea::Versions::GetService < Gitea::ClientService + attr_reader :token, :user_name, :repo, :gid, :args + + # sha: SHA or branch to start listing commits from (usually 'master') + def initialize(token, user_name, repo, gid, args={}) + @token = token + @user_name = user_name + @repo = repo + @gid = gid + @args = args + end + + def call + response = get(url, params) + render_result(response) + end + + private + def params + args.merge(token: token) + end + + def url + "/repos/#{@user_name}/#{@repo}/releases/#{@gid}".freeze + end + + def render_result(response) + body = JSON.parse(response.body) + case response.status + when 200 + body + else + {status: -1, message: "#{body['message']}"} + end + end +end diff --git a/app/views/version_releases/_version_release.json.jbuilder b/app/views/version_releases/_version_release.json.jbuilder new file mode 100644 index 000000000..23c275184 --- /dev/null +++ b/app/views/version_releases/_version_release.json.jbuilder @@ -0,0 +1,14 @@ +json.version_id version.try(:id) +json.id re["id"] +json.tag_name re["tag_name"] +json.target_commitish re["target_commitish"] +json.name re["name"] +json.body re["body"] +json.url re["url"] +json.tarball_url render_tar_url(@owner, @repository, re["tag_name"]) +json.zipball_url render_zip_url(@owner, @repository, re["tag_name"]) +json.draft re["draft"] ? "草稿" : (re["prerelease"] ? "预发行" : "稳定") +json.created_at format_time(version.created_at.to_s.to_time) +json.published_at format_time(version.created_at.to_s.to_time) +json.user_name user.present? ? user.try(:show_real_name) : "" +json.image_url user.present? ? url_to_avatar(user) : "" \ No newline at end of file diff --git a/app/views/version_releases/index.json.jbuilder b/app/views/version_releases/index.json.jbuilder index 88ae36f26..29cc4fd2c 100644 --- a/app/views/version_releases/index.json.jbuilder +++ b/app/views/version_releases/index.json.jbuilder @@ -7,36 +7,10 @@ json.releases do user = User.select(:id, :gitea_uid, :login, :lastname,:firstname, :nickname).find_by_gitea_uid(re["author"]["id"]) version = @forge_releases.find_by(version_gid: re["id"]) if @user_permission && re["draft"] - json.version_id version.try(:id) - json.id re["id"] - json.tag_name re["tag_name"] - json.target_commitish re["target_commitish"] - json.name re["name"] - json.body re["body"] - json.url re["url"] - json.tarball_url render_tar_url(@owner, @repository, re["tag_name"]) - json.zipball_url render_zip_url(@owner, @repository, re["tag_name"]) - json.draft re["draft"] ? "草稿" : (re["prerelease"] ? "预发行" : "稳定") - json.created_at format_time(version.created_at.to_s.to_time) - json.published_at format_time(version.created_at.to_s.to_time) - json.user_name user.present? ? user.try(:show_real_name) : "" - json.image_url user.present? ? url_to_avatar(user) : "" + json.partial! "version_release", locals: {version: version, user: user, re: re} else unless re["draft"] - json.version_id version.try(:id) - json.id re["id"] - json.tag_name re["tag_name"] - json.target_commitish re["target_commitish"] - json.name re["name"] - json.body re["body"] - json.url re["url"] - json.tarball_url render_tar_url(@owner, @repository, re["tag_name"]) - json.zipball_url render_zip_url(@owner, @repository, re["tag_name"]) - json.draft re["draft"] ? "草稿" : (re["prerelease"] ? "预发行" : "稳定") - json.created_at format_time(version.created_at.to_s.to_time) - json.published_at format_time(version.created_at.to_s.to_time) - json.user_name user.present? ? user.try(:show_real_name) : "" - json.image_url user.present? ? url_to_avatar(user) : "" + json.partial! "version_release", locals: {version: version, user: user, re: re} end end diff --git a/app/views/version_releases/show.json.jbuilder b/app/views/version_releases/show.json.jbuilder new file mode 100644 index 000000000..803ae477a --- /dev/null +++ b/app/views/version_releases/show.json.jbuilder @@ -0,0 +1,2 @@ +user = User.select(:id, :gitea_uid, :login, :lastname,:firstname, :nickname).find_by_gitea_uid(@release["author"]["id"]) +json.partial! "version_release", locals: {version: @version, user: user, re: @release} \ No newline at end of file diff --git a/config/routes.rb b/config/routes.rb index 2a935b896..005bd926a 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -528,7 +528,7 @@ Rails.application.routes.draw do resources :forks, only: [:create] resources :project_trends, :path => :activity, only: [:index, :create] resources :issue_tags, :path => :labels, only: [:create, :edit, :update, :destroy, :index] - resources :version_releases, :path => :releases, only: [:index,:new, :create, :edit, :update, :destroy] + resources :version_releases, :path => :releases, only: [:index,:new, :show, :create, :edit, :update, :destroy] scope module: :ci do scope do