package com.emonster.taroaichat.config;

import com.twilio.Twilio;
import jakarta.annotation.PostConstruct;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Configuration;

/**
 * Twilio configuration for SMS authentication.
 * Only enabled when application.twilio.enabled=true
 */
@Configuration
@ConditionalOnProperty(prefix = "application.twilio", name = "enabled", havingValue = "true")
public class TwilioConfiguration {

    private static final Logger log = LoggerFactory.getLogger(TwilioConfiguration.class);

    private final ApplicationProperties applicationProperties;

    public TwilioConfiguration(ApplicationProperties applicationProperties) {
        this.applicationProperties = applicationProperties;
    }

    @PostConstruct
    public void init() {
        ApplicationProperties.Twilio twilioConfig = applicationProperties.getTwilio();
        
        if (twilioConfig.getAccountSid() == null || twilioConfig.getAccountSid().isEmpty() ||
            twilioConfig.getAuthToken() == null || twilioConfig.getAuthToken().isEmpty()) {
            log.warn("Twilio credentials are not configured. SMS authentication will not work.");
            return;
        }

        log.info("Initializing Twilio with account SID: {}", twilioConfig.getAccountSid());
        Twilio.init(twilioConfig.getAccountSid(), twilioConfig.getAuthToken());
        log.info("Twilio initialized successfully");
    }
}