view app/controllers/tweets_controller.rb @ 250:be0b78fb5f57

Link to original tweet in tweet header Otherwise there's no link for quote retweets.
author nanaya <me@nanaya.net>
date Mon, 17 Jul 2023 20:45:24 +0900
parents 4222343d9433
children e2150dce4e90
line wrap: on
line source

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

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

    @user = CachedFetch.user_by_id params[:id]

    if @user.nil?
      head :not_found
      return
    end

    if @user[:protected]
      head :forbidden
      return
    end

    return redirect if normalized_screen_name != params[:name]

    @tweets = CachedFetch.timeline params[:id]

    head :not_found if @tweets.nil?
  end

  def redirect
    @user ||= CachedFetch.user_by_username(params[:name])

    if @user.nil?
      head :not_found
    else
      redirect_to tweet_path(@user[:id], normalized_screen_name)
    end
  end

  private

  def normalized_screen_name
    @user[:username].presence || '_'
  end
end