接口请求限流
This commit is contained in:
parent
6f33016a78
commit
f1ab52da5c
|
@ -1161,6 +1161,23 @@ class ApplicationController < ActionController::Base
|
||||||
end
|
end
|
||||||
def find_atme_receivers
|
def find_atme_receivers
|
||||||
@atme_receivers = User.where(login: params[:receivers_login])
|
@atme_receivers = User.where(login: params[:receivers_login])
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# 接口限流,请求量大有性能问题
|
||||||
|
def request_limit
|
||||||
|
begin
|
||||||
|
record_count = Rails.cache.read("request/#{controller_name}/#{Time.now.strftime('%Y%m%d%H%M')}/#{request.remote_ip}")
|
||||||
|
if record_count.present?
|
||||||
|
record_count = record_count + 1
|
||||||
|
else
|
||||||
|
record_count = 1
|
||||||
|
end
|
||||||
|
tip_exception("非法请求") if record_count > 100
|
||||||
|
|
||||||
|
Rails.cache.write("request/#{controller_name}/#{Time.now.strftime('%Y%m%d%H%M')}/#{request.remote_ip}", record_count, expires_in: 1.minute)
|
||||||
|
rescue
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -9,6 +9,7 @@ class ProjectsController < ApplicationController
|
||||||
before_action :load_repository, except: %i[index group_type_list migrate create recommend banner_recommend]
|
before_action :load_repository, except: %i[index group_type_list migrate create recommend banner_recommend]
|
||||||
before_action :authorizate_user_can_edit_project!, only: %i[update]
|
before_action :authorizate_user_can_edit_project!, only: %i[update]
|
||||||
before_action :project_public?, only: %i[fork_users praise_users watch_users]
|
before_action :project_public?, only: %i[fork_users praise_users watch_users]
|
||||||
|
before_action :request_limit, only: %i[index]
|
||||||
|
|
||||||
def menu_list
|
def menu_list
|
||||||
menu = []
|
menu = []
|
||||||
|
@ -45,8 +46,8 @@ class ProjectsController < ApplicationController
|
||||||
elsif params[:search].present? || params[:topic_id].present?
|
elsif params[:search].present? || params[:topic_id].present?
|
||||||
@projects.total_count
|
@projects.total_count
|
||||||
else
|
else
|
||||||
cate = ProjectCategory.find_by(id: category_id)
|
cate = ProjectCategory.find_by(id: category_id)
|
||||||
cate&.projects_count || 0
|
cate&.projects_count || 0
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -72,8 +73,8 @@ class ProjectsController < ApplicationController
|
||||||
if result[:status] == :success
|
if result[:status] == :success
|
||||||
Rails.logger.info "########## 加速镜像成功 ########## "
|
Rails.logger.info "########## 加速镜像成功 ########## "
|
||||||
Projects::MigrateService.call(current_user,
|
Projects::MigrateService.call(current_user,
|
||||||
mirror_params.merge(source_clone_url: source_clone_url,
|
mirror_params.merge(source_clone_url: source_clone_url,
|
||||||
clone_addr: accelerator_url(mirror_params[:repository_name])))
|
clone_addr: accelerator_url(mirror_params[:repository_name])))
|
||||||
else
|
else
|
||||||
Projects::MigrateService.call(current_user, mirror_params)
|
Projects::MigrateService.call(current_user, mirror_params)
|
||||||
end
|
end
|
||||||
|
@ -95,7 +96,7 @@ class ProjectsController < ApplicationController
|
||||||
|
|
||||||
# result = Gitea::Repository::Branches::ListService.call(@owner, @project.identifier)
|
# result = Gitea::Repository::Branches::ListService.call(@owner, @project.identifier)
|
||||||
result = Gitea::Repository::Branches::ListNameService.call(@owner, @project.identifier, params[:name])
|
result = Gitea::Repository::Branches::ListNameService.call(@owner, @project.identifier, params[:name])
|
||||||
@branches = result.is_a?(Hash) ? (result.key?(:status) ? [] : result) : result
|
@branches = result.is_a?(Hash) ? (result.key?(:status) ? [] : result) : result
|
||||||
end
|
end
|
||||||
|
|
||||||
def branches_slice
|
def branches_slice
|
||||||
|
@ -146,7 +147,7 @@ class ProjectsController < ApplicationController
|
||||||
Gitea::Repository::UpdateService.call(@owner, @project.identifier, gitea_params)
|
Gitea::Repository::UpdateService.call(@owner, @project.identifier, gitea_params)
|
||||||
else
|
else
|
||||||
validate_params = project_params.slice(:name, :description,
|
validate_params = project_params.slice(:name, :description,
|
||||||
:project_category_id, :project_language_id, :private, :identifier)
|
:project_category_id, :project_language_id, :private, :identifier)
|
||||||
|
|
||||||
Projects::UpdateForm.new(validate_params.merge(user_id: @project.user_id, project_identifier: @project.identifier, project_name: @project.name)).validate!
|
Projects::UpdateForm.new(validate_params.merge(user_id: @project.user_id, project_identifier: @project.identifier, project_name: @project.name)).validate!
|
||||||
|
|
||||||
|
@ -162,7 +163,7 @@ class ProjectsController < ApplicationController
|
||||||
name: @project.identifier
|
name: @project.identifier
|
||||||
}
|
}
|
||||||
gitea_repo = Gitea::Repository::UpdateService.call(@owner, @project&.repository&.identifier, gitea_params)
|
gitea_repo = Gitea::Repository::UpdateService.call(@owner, @project&.repository&.identifier, gitea_params)
|
||||||
@project.repository.update_attributes({hidden: gitea_repo["private"], identifier: gitea_repo["name"]})
|
@project.repository.update_attributes({ hidden: gitea_repo["private"], identifier: gitea_repo["name"] })
|
||||||
# 更新对应所属分类下的项目数量(私有)
|
# 更新对应所属分类下的项目数量(私有)
|
||||||
before_is_public = @project.previous_changes[:is_public].present? ? @project.previous_changes[:is_public][0] : @project.is_public
|
before_is_public = @project.previous_changes[:is_public].present? ? @project.previous_changes[:is_public][0] : @project.is_public
|
||||||
after_is_public = @project.previous_changes[:is_public].present? ? @project.previous_changes[:is_public][1] : @project.is_public
|
after_is_public = @project.previous_changes[:is_public].present? ? @project.previous_changes[:is_public][1] : @project.is_public
|
||||||
|
@ -273,7 +274,7 @@ class ProjectsController < ApplicationController
|
||||||
if @project_detail.save!
|
if @project_detail.save!
|
||||||
attachment_ids = Array(params[:attachment_ids])
|
attachment_ids = Array(params[:attachment_ids])
|
||||||
logger.info "=============> #{Array(params[:attachment_ids])}"
|
logger.info "=============> #{Array(params[:attachment_ids])}"
|
||||||
@attachments = Attachment.where(id: attachment_ids)
|
@attachments = Attachment.where(id: attachment_ids)
|
||||||
@attachments.update_all(
|
@attachments.update_all(
|
||||||
container_id: @project_detail.id,
|
container_id: @project_detail.id,
|
||||||
container_type: @project_detail.model_name.name,
|
container_type: @project_detail.model_name.name,
|
||||||
|
@ -286,6 +287,7 @@ class ProjectsController < ApplicationController
|
||||||
|
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def project_params
|
def project_params
|
||||||
params.permit(:user_id, :name, :description, :repository_name, :website, :lesson_url, :default_branch, :identifier,
|
params.permit(:user_id, :name, :description, :repository_name, :website, :lesson_url, :default_branch, :identifier,
|
||||||
:project_category_id, :project_language_id, :license_id, :ignore_id, :private,
|
:project_category_id, :project_language_id, :license_id, :ignore_id, :private,
|
||||||
|
|
Loading…
Reference in New Issue