view app/controllers/tweets_controller.rb @ 233:0f0cc55ff11b

Character class, not literal D
author nanaya <me@nanaya.net>
date Fri, 14 Jul 2023 01:45:40 +0900
parents f9fd9d9cab97
children 7a773720d81f
line wrap: on
line source

class TweetsController < ApplicationController
  def index
    return redirect if params[:id].present? || params[:name].present?
  end

  def show
    return redirect if params[:id][/\D/].present?

    client = Tweet.new(params[:id].to_i)
    @user = client.user

    return redirect if normalized_screen_name != params[:name]

    @tweets = client.timeline
  rescue Twitter::Error::Forbidden
    head :forbidden
  rescue Twitter::Error::NotFound
    head :not_found
  rescue Twitter::Error::Unauthorized
    head :forbidden
  end

  def redirect
    @user ||= Tweet.new(params[:id].presence || params[:name]).user
    redirect_to tweet_path(@user.id, normalized_screen_name)
  rescue Twitter::Error::Forbidden
    head :forbidden
  rescue Twitter::Error::NotFound
    head :not_found
  rescue Twitter::Error::Unauthorized
    head :forbidden
  end

  private

  def normalized_screen_name
    @user.screen_name.presence || '_'
  end
end