diff options
author | Kazuki Yamaguchi <k@rhe.jp> | 2015-12-05 22:58:12 +0900 |
---|---|---|
committer | Kazuki Yamaguchi <k@rhe.jp> | 2015-12-05 22:58:12 +0900 |
commit | 850c485806e3289993952e8a5207693921e828ba (patch) | |
tree | f2ba6501f230f7bca1b614ba2733c0bbb4da86b6 /app/controllers/users_controller.rb | |
parent | 8b4e26890936995cc5b7a9ce2ac8d29ec56904d2 (diff) | |
download | aclog-850c485806e3289993952e8a5207693921e828ba.tar.gz |
split frontend
Diffstat (limited to 'app/controllers/users_controller.rb')
-rw-r--r-- | app/controllers/users_controller.rb | 45 |
1 files changed, 41 insertions, 4 deletions
diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 03a1a05..95fb187 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -1,13 +1,50 @@ class UsersController < ApplicationController - before_action :load_user + before_action :load_user, only: [:favorited_by, :favorited_users] + before_action :require_registered!, only: [:favorited_by, :favorited_users] - def stats - @sidebars = [:user] + def suggest_screen_name + users = User.suggest_screen_name(params[:head].to_s).order(:screen_name).limit(10) + render_json data: users + end + + def stats_compact + @user = User.find(screen_name: params[:screen_name]) + render_json data: @user.stats.to_h + end + + def favorited_by + data = @user.count_favorited_by + render_json data: format_favorited_by(data) + end + + def favorited_users + data = @user.count_favorited_users + render_json data: format_favorited_by(data) end private + def format_favorited_by(data) + tops = data.take(Settings.users.count) + cached_users = User.find(tops.map {|k, v| k }).map {|user| [user.id, user] }.to_h + all_reactions = data.inject(0) {|sum, (k, v)| sum + v } + + { users_count: data.size, + reactions_count: all_reactions, + user: @user, + users: tops.reverse_each.map { |user_id, count| + u = cached_users[user_id] + { user_id: user_id, + count: count, + name: u.name, + screen_name: u.screen_name, + profile_image_url: u.profile_image_url } } } + end + def load_user - authorize! @user = User.find(screen_name: params[:screen_name]) + @user = authorize! User.find(screen_name: params[:screen_name]) + end + + def require_registered! @user.registered? || raise(Aclog::Exceptions::UserNotRegistered, self) end end |