import {
  Controller,
  Post,
  Body,
  Logger,
  HttpCode,
  HttpStatus,
} from '@nestjs/common';
import {
  ApiTags,
  ApiOperation,
  ApiResponse,
  ApiBearerAuth,
} from '@nestjs/swagger';
import { XTwitterService } from './x-twitter.service';
import { FetchTweetDto } from './dto/x-twitter.dto';

@ApiTags('x-twitter')
@ApiBearerAuth()
@Controller('x-twitter')
export class XTwitterController {
  private readonly logger = new Logger(XTwitterController.name);

  constructor(private readonly xTwitterService: XTwitterService) {}

  /**
   * Tweet URL'si ile ön izleme — tweet verisi, viral skor,
   * önerilen başlık/prompt, tahmini süre döner.
   */
  @Post('preview')
  @HttpCode(HttpStatus.OK)
  @ApiOperation({ summary: 'X/Twitter tweet ön izleme' })
  @ApiResponse({
    status: 200,
    description: 'Tweet verisi, viral skor ve önerilen başlık',
  })
  @ApiResponse({
    status: 400,
    description: 'Geçersiz URL veya tweet bulunamadı',
  })
  async previewTweet(@Body() dto: FetchTweetDto) {
    this.logger.log(`Tweet ön izleme: ${dto.tweetUrl}`);
    return this.xTwitterService.previewTweet(dto.tweetUrl);
  }

  /**
   * Tweet ham verisi — sadece parse edilmiş tweet döner.
   * Frontend'de detaylı gösterim için kullanılır.
   */
  @Post('fetch')
  @HttpCode(HttpStatus.OK)
  @ApiOperation({ summary: 'X/Twitter tweet verisi çek' })
  @ApiResponse({ status: 200, description: 'Parse edilmiş tweet verisi' })
  async fetchTweet(@Body() dto: FetchTweetDto) {
    this.logger.log(`Tweet çekiliyor: ${dto.tweetUrl}`);
    return this.xTwitterService.fetchTweet(dto.tweetUrl);
  }
}
