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