require_dependency 'post_excerpt_serializer' class ExcerptController < ApplicationController def show requires_parameter(:url) uri = URI.parse(params[:url]) route = Rails.application.routes.recognize_path(uri.path) case route[:controller] when 'topics' # If we have a post number, retrieve the last post. Otherwise, first post. topic_posts = Post.where(topic_id: route[:topic_id].to_i).order(:post_number) post = route.has_key?(:post_number) ? topic_posts.last : topic_posts.first guardian.ensure_can_see!(post) render json: post, serializer: PostExcerptSerializer, root: false when 'users' user = User.where(username_lower: route[:username].downcase).first guardian.ensure_can_see!(user) render json: user, serializer: UserExcerptSerializer, root: false when 'list' if route[:action] == 'category' category = Category.where(slug: route[:category]).first guardian.ensure_can_see!(category) render json: category, serializer: CategoryExcerptSerializer, root: false end else render nothing: true, status: 404 end rescue ActionController::RoutingError, Discourse::NotFound render nothing: true, status: 404 end end