diff options
author | Rhenium <rhenium@rhe.jp> | 2014-01-07 18:15:10 +0900 |
---|---|---|
committer | Rhenium <rhenium@rhe.jp> | 2014-01-07 18:15:10 +0900 |
commit | c4d6fb6bc4b06411949b450b1a6d9f4c58359085 (patch) | |
tree | dbe42d4d07830438ecf4c36be242d2d89ce82c0f /app/controllers/users_controller.rb | |
parent | 355f85b7a054a15cc228d448a84e9ee934e45070 (diff) | |
download | aclog-c4d6fb6bc4b06411949b450b1a6d9f4c58359085.tar.gz |
reorganize controllers (add API documentations (lib/apidoc); reorganize auto page loading; add Atom feed)
Diffstat (limited to 'app/controllers/users_controller.rb')
-rw-r--r-- | app/controllers/users_controller.rb | 59 |
1 files changed, 42 insertions, 17 deletions
diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 580e075..71117e7 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -1,36 +1,61 @@ class UsersController < ApplicationController + param_group :user do + optional :id, :integer, "The numerical ID of the user for whom to return results for." + optional :screen_name, :string, "The username of the user for whom to return results for." + end + + get "/users/stats" + description "Returns the stats of a user, specified by username or user ID." + param_group :user def stats - user_required - @caption = "Profile" - @user_stats = @user.stats - @user_twitter = @user.account.client.user if request.format == :html + @user = require_public_user end + get "/users/discovered_by" + description "Returns the list of the users who discovored the Tweets of a user, specified by username or user ID." + param_group :user def discovered_by - user_required - authorize_to_show_best!(@user) + @user = require_public_user @result = @user.count_discovered_by.take(Settings.users.count) - @caption = "Discovered By" - render "_user_ranking" + + respond_to do |format| + format.html do + @cached_users = User.find(@result.map {|user_id, count| user_id }).map {|user| [user.id, user] }.to_h + end + + format.json do + render "_users_list" + end + end end + get "/users/discovered_users" + description "Returns the list of the users discovored by a user, specified by username or user ID." + param_group :user def discovered_users - user_required - authorize_to_show_best!(@user) + @user = require_public_user @result = @user.count_discovered_users.take(Settings.users.count) - @caption = "Discovered Users" - render "_user_ranking" + + respond_to do |format| + format.html do + @cached_users = User.find(@result.map {|user_id, count| user_id }).map {|user| [user.id, user] }.to_h + end + + format.json do + render "_users_list" + end + end end + # get "/users/screen_name" def screen_name - user_ids = (params[:id] || params[:user_id]).to_s.split(",").map(&:to_i) - result = User.where(id: user_ids).pluck(:id, :screen_name).map {|id, screen_name| {id: id, screen_name: screen_name} } + user_ids = (params[:id] || params[:ids] || params[:user_id] || params[:user_ids]).split(",").map { |i| i.to_i } + result = User.where(id: user_ids).pluck(:id, :screen_name).map { |id, screen_name| { id: id, screen_name: screen_name } } render json: result end private - def user_required - @user = User.get(params[:id] || params[:user_id], params[:screen_name]) - raise Aclog::Exceptions::UserNotFound unless @user + def require_public_user + require_user(user_id: (params[:id] || params[:user_id]), screen_name: params[:screen_name], public: true) end end |