From 5d0849a1483413d1c0cb0cc75d76faaf2a651279 Mon Sep 17 00:00:00 2001 From: yystopf Date: Thu, 23 Jun 2022 12:19:03 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E:=20=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E5=88=97=E8=A1=A8=E4=BB=A5=E5=8F=8Ahelper?= =?UTF-8?q?=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/api/v1/base_controller.rb | 7 ++++ .../api/v1/users/projects_controller.rb | 7 ++++ app/controllers/api/v1/users_controller.rb | 6 ++++ app/controllers/concerns/api/user_helper.rb | 19 +++++++++++ .../v1/projects/_simple_detail.json.jbuilder | 2 +- .../api/v1/users/projects/index.json.jbuilder | 5 +++ config/routes/api.rb | 33 ++++++++++++------- 7 files changed, 66 insertions(+), 13 deletions(-) create mode 100644 app/controllers/api/v1/users/projects_controller.rb create mode 100644 app/controllers/api/v1/users_controller.rb create mode 100644 app/controllers/concerns/api/user_helper.rb create mode 100644 app/views/api/v1/users/projects/index.json.jbuilder diff --git a/app/controllers/api/v1/base_controller.rb b/app/controllers/api/v1/base_controller.rb index 2202df8d2..4fb6c8759 100644 --- a/app/controllers/api/v1/base_controller.rb +++ b/app/controllers/api/v1/base_controller.rb @@ -1,6 +1,13 @@ class Api::V1::BaseController < ApplicationController include Api::ProjectHelper + include Api::UserHelper + before_action :doorkeeper_authorize! skip_before_action :user_setup + + protected + def current_user + User.find(doorkeeper_token.resource_owner_id) if doorkeeper_token + end end \ No newline at end of file diff --git a/app/controllers/api/v1/users/projects_controller.rb b/app/controllers/api/v1/users/projects_controller.rb new file mode 100644 index 000000000..d130071af --- /dev/null +++ b/app/controllers/api/v1/users/projects_controller.rb @@ -0,0 +1,7 @@ +class Api::V1::Users::ProjectsController < Api::V1::BaseController + before_action :load_observe_user + + def index + @projects = kaminari_paginate(@observe_user.projects) + end +end \ No newline at end of file diff --git a/app/controllers/api/v1/users_controller.rb b/app/controllers/api/v1/users_controller.rb new file mode 100644 index 000000000..55f5cfb22 --- /dev/null +++ b/app/controllers/api/v1/users_controller.rb @@ -0,0 +1,6 @@ +class Api::V1::UsersController < Api::V1::BaseController + + def index + render_ok + end +end \ No newline at end of file diff --git a/app/controllers/concerns/api/user_helper.rb b/app/controllers/concerns/api/user_helper.rb new file mode 100644 index 000000000..e6156ea56 --- /dev/null +++ b/app/controllers/concerns/api/user_helper.rb @@ -0,0 +1,19 @@ +module Api::UserHelper + extend ActiveSupport::Concern + + def load_observe_user + username = params[:owner] + + @observe_user = User.find_by(login: username) + + if @observe_user + logger.info "###########observe_user not founded" + @observe_user + else + logger.info "###########observe_user not found" + @observe_user = nil + render_not_found and return + end + @observe_user + end +end \ No newline at end of file diff --git a/app/views/api/v1/projects/_simple_detail.json.jbuilder b/app/views/api/v1/projects/_simple_detail.json.jbuilder index f5f6b1dbe..3eadaaf8f 100644 --- a/app/views/api/v1/projects/_simple_detail.json.jbuilder +++ b/app/views/api/v1/projects/_simple_detail.json.jbuilder @@ -1,5 +1,5 @@ if project.present? - json.type @project.project_type + json.type project.project_type json.(project, :description, :forked_count, :forked_from_project_id, :identifier, :issues_count, :pull_requests_count, :invite_code, :website, :platform, diff --git a/app/views/api/v1/users/projects/index.json.jbuilder b/app/views/api/v1/users/projects/index.json.jbuilder new file mode 100644 index 000000000..c126d414f --- /dev/null +++ b/app/views/api/v1/users/projects/index.json.jbuilder @@ -0,0 +1,5 @@ +json.total_count @projects.total_count + +json.projects @projects do |project| + json.partial! "api/v1/projects/simple_detail", project: project +end \ No newline at end of file diff --git a/config/routes/api.rb b/config/routes/api.rb index cf55cfcf7..5cefe7930 100644 --- a/config/routes/api.rb +++ b/config/routes/api.rb @@ -1,20 +1,29 @@ defaults format: :json do namespace :api do namespace :v1 do - resources :projects, only: [:index] - # 项目相关的api - scope ':owner/:repo' do - # projects - resource :projects, path: '/', only: [:show, :update, :edit, :destroy] - - # projects文件夹下的 - scope module: :projects do - resources :issues - resources :pull_requests - resources :versions - resources :release_versions + scope ':owner' do + resource :users, path: '/', only: [:show, :update, :edit, :destroy] + scope module: :users do + resources :projects, only: [:index] end + + scope ':repo' do + # projects + resource :projects, path: '/', only: [:show, :update, :edit, :destroy] + + # projects文件夹下的 + scope module: :projects do + resources :issues + resources :pull_requests + resources :versions + resources :release_versions + end + end + end + + resources :projects, only: [:index] + end end