| @@ -3062,6 +3062,49 @@ http://localhost:3000/api/trustie/truesite/protected_branches/master.json | jq | |||||
| ``` | ``` | ||||
| --- | --- | ||||
| #### 获取仓库README文件 | |||||
| ``` | |||||
| GET api/:owner/:repo/readme | |||||
| ``` | |||||
| *示例* | |||||
| ```bash | |||||
| curl -X GET http://localhost:3000/api/trusite/trusite/readme | jq | |||||
| ``` | |||||
| *请求参数说明:* | |||||
| |参数名|类型|说明| | |||||
| |-|-|-| | |||||
| |owner |是|string |项目拥有者登录名 | | |||||
| |repo |否|boolean |仓库名称 | | |||||
| |ref |否|string |分支、tag或commit。默认: 仓库的默认分支(通常是master)| | |||||
| *返回参数说明:* | |||||
| |参数名|类型|说明| | |||||
| |-|-|-| | |||||
| |name |string|文件名称| | |||||
| |path |string|文件相对路径| | |||||
| |type |string|文件类型, file:文件| | |||||
| |size |int|文件大小 单位KB| | |||||
| |content |string|文件内容,base64加密| | |||||
| 返回值 | |||||
| ```json | |||||
| { | |||||
| "type": "file", | |||||
| "encoding": "base64", | |||||
| "size": 13544, | |||||
| "name": "README.md", | |||||
| "path": "README.md", | |||||
| "content": "Q2hpbmVzZSAmbmJzcDsgfCAmbmJzcDsgW0VuZ7i9yZWFkbWUvaW5kZXgucG5" | |||||
| } | |||||
| ``` | |||||
| --- | |||||
| ### DevOps相关api | ### DevOps相关api | ||||
| --- | --- | ||||
| @@ -144,6 +144,13 @@ class RepositoriesController < ApplicationController | |||||
| render_ok | render_ok | ||||
| end | end | ||||
| def readme | |||||
| result = Gitea::Repository::Readme::GetService.call(@owner.login, @repository.identifier, params[:ref], current_user&.gitea_token) | |||||
| @readme = result[:status] === :success ? result[:body] : nil | |||||
| render json: @readme | |||||
| end | |||||
| private | private | ||||
| def find_project | def find_project | ||||
| @@ -0,0 +1,39 @@ | |||||
| # Gets the preferred README for a repository. | |||||
| class Gitea::Repository::Readme::GetService < Gitea::ClientService | |||||
| attr_reader :owner, :repo, :ref, :token | |||||
| # owner: owner of the repo | |||||
| # repo: name of the repo | |||||
| # name: The name of the commit/branch/tag. Default: the repository’s default branch (usually master) | |||||
| # eg: | |||||
| # Gitea::Repository::Readme::GetService.call(user.login, repo.identifier, ref, user.gitea_token) | |||||
| def initialize(owner, repo, ref, token=nil) | |||||
| @owner = owner | |||||
| @repo = repo | |||||
| @ref = ref || 'master' | |||||
| @token = token | |||||
| end | |||||
| def call | |||||
| response = get(url, params) | |||||
| status, message, body = render_response(response) | |||||
| json_format(status, message, body) | |||||
| end | |||||
| private | |||||
| def params | |||||
| Hash.new.merge(token: token, ref: ref) | |||||
| end | |||||
| def url | |||||
| "/repos/#{owner}/#{repo}/readme".freeze | |||||
| end | |||||
| def json_format(status, message, body) | |||||
| case status | |||||
| when 200 then success(body) | |||||
| when 404 then error(message, 404) | |||||
| else error(message, status) | |||||
| end | |||||
| end | |||||
| end | |||||
| @@ -353,6 +353,7 @@ Rails.application.routes.draw do | |||||
| post :sync_mirror | post :sync_mirror | ||||
| get :top_counts | get :top_counts | ||||
| get 'commits/:sha', to: 'repositories#commit', as: 'commit' | get 'commits/:sha', to: 'repositories#commit', as: 'commit' | ||||
| get 'readme' | |||||
| end | end | ||||
| end | end | ||||