comparison app/controllers/tweets_controller.rb @ 234:7a773720d81f legit-client

Totally legit client
author nanaya <me@nanaya.net>
date Fri, 14 Jul 2023 22:42:20 +0900
parents 0f0cc55ff11b
children 4222343d9433
comparison
equal deleted inserted replaced
233:0f0cc55ff11b 234:7a773720d81f
1 class TweetsController < ApplicationController 1 class TweetsController < ApplicationController
2 def index 2 def index
3 return redirect if params[:id].present? || params[:name].present? 3 return redirect if params[:name].present?
4 end 4 end
5 5
6 def show 6 def show
7 return redirect if params[:id][/\D/].present? 7 return redirect if params[:id][/\D/].present?
8 8
9 client = Tweet.new(params[:id].to_i) 9 @user = CachedFetch.user_by_id params[:id]
10 @user = client.user 10
11 if @user.nil?
12 head :not_found
13 return
14 end
11 15
12 return redirect if normalized_screen_name != params[:name] 16 return redirect if normalized_screen_name != params[:name]
13 17
14 @tweets = client.timeline 18 @tweets = CachedFetch.timeline params[:id]
15 rescue Twitter::Error::Forbidden 19
16 head :forbidden 20 head :not_found if @tweets.nil?
17 rescue Twitter::Error::NotFound
18 head :not_found
19 rescue Twitter::Error::Unauthorized
20 head :forbidden
21 end 21 end
22 22
23 def redirect 23 def redirect
24 @user ||= Tweet.new(params[:id].presence || params[:name]).user 24 @user ||= CachedFetch.user_by_username(params[:name])
25 redirect_to tweet_path(@user.id, normalized_screen_name) 25
26 rescue Twitter::Error::Forbidden 26 if @user.nil?
27 head :forbidden 27 head :not_found
28 rescue Twitter::Error::NotFound 28 else
29 head :not_found 29 redirect_to tweet_path(@user[:id], normalized_screen_name)
30 rescue Twitter::Error::Unauthorized 30 end
31 head :forbidden
32 end 31 end
33 32
34 private 33 private
35 34
36 def normalized_screen_name 35 def normalized_screen_name
37 @user.screen_name.presence || '_' 36 @user[:username].presence || '_'
38 end 37 end
39 end 38 end