From 95ff45bb7d2a6c1de2d92154b851dffa4d8e9e95 Mon Sep 17 00:00:00 2001 From: Tdxdxoz Date: Thu, 9 Jul 2020 18:13:48 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E5=A5=BD=E7=9A=84=E5=8C=BF=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/api/v1/statuses_controller.rb | 32 +++++++++++-------- config/initializers/new_features.rb | 3 ++ 2 files changed, 21 insertions(+), 14 deletions(-) diff --git a/app/controllers/api/v1/statuses_controller.rb b/app/controllers/api/v1/statuses_controller.rb index c1197a696..fbb165c8e 100644 --- a/app/controllers/api/v1/statuses_controller.rb +++ b/app/controllers/api/v1/statuses_controller.rb @@ -1,5 +1,21 @@ # frozen_string_literal: true +class AnonTag + @@namelist = (f = Rails.configuration.x.anon_namelist) ? File.readlines(f).collect(&:strip) : ['Alice', 'Bob', 'Carol', 'Dave'] + @@used_name = [] + @@map = {} + + def self.get_or_generate(pid) + if !@@map[pid] + @@map[pid] = (@@namelist - @@used_name).sample() + @@used_name.append(@@map[pid]) + end + + @@map[pid] + end + +end + class Api::V1::StatusesController < Api::BaseController include Authorization @@ -38,22 +54,10 @@ class Api::V1::StatusesController < Api::BaseController render json: @context, serializer: REST::ContextSerializer, relationships: StatusRelationshipsPresenter.new(statuses, current_user&.account_id) end - def to_cn(n) - case Time.new.wday - when 0, 3 - "秦汉魏晋隋唐宋元明清"[n % 10] + [n % 20873, n % 20899].map{|i| i+0x4e00}.pack('U*') - when 1, 4, 6 - "甲乙丙丁戊己庚辛壬癸"[n % 10] + [n % 20873, n % 20899].map{|i| i+0x4e00}.pack('U*') - else - "鼠牛虎兔龙蛇马羊猴鸡狗猪" [n % 12] + [n % 20873, n % 20899].map{|i| i+0x4e00}.pack('U*') - end - end - def create - p Rails.configuration.x.anon_tag - anon = Rails.configuration.x.anon_acc && status_params[:status].end_with?(Rails.configuration.x.anon_tag) + anon = Rails.configuration.x.anon_acc && status_params[:status].end_with?(Rails.configuration.x.anon_tag) && AnonTag.get_or_generate(current_user.account_id) sender = anon ? Account.find(Rails.configuration.x.anon_acc) : current_user.account - st_text = anon ? ("$#{to_cn(7919**(current_account.id + 1000 * Time.new.day) % 1000000007)}:\n" + status_params[:status][0..4990]) : status_params[:status] + st_text = anon ? ("[#{anon}]:\n#{status_params[:status]}"[0..5000]) : status_params[:status] @status = PostStatusService.new.call(sender, text: st_text, diff --git a/config/initializers/new_features.rb b/config/initializers/new_features.rb index fbabd5934..d8c79f672 100644 --- a/config/initializers/new_features.rb +++ b/config/initializers/new_features.rb @@ -1,7 +1,10 @@ +# frozen_string_literal: true + Rails.application.configure do config.x.email_default_domain = ENV.fetch('EMAIL_DEFAULT_DOMAIN') { '???.edu.cn' } config.x.tree_address = ENV.fetch('TREE_ADDRESS') {''} config.x.anon_tag = ENV.fetch('ANON_TAG') {'[mask]'} config.x.anon_acc = ENV.fetch('ANON_ACC') {''} + config.x.anon_namelist = ENV.fetch('ANON_NAME_LIST') {''} end