import axios from 'axios';

export const translateLyrics = async (
    originalLyrics: string,
    translationApiKey: string,
    translationApiProvider: null | string,
    translationTargetLanguage: null | string,
) => {
    let TranslatedText = '';
    if (translationApiProvider === 'Microsoft Azure') {
        try {
            const response = await axios({
                data: [
                    {
                        Text: originalLyrics,
                    },
                ],
                headers: {
                    'Content-Type': 'application/json',
                    'Ocp-Apim-Subscription-Key': translationApiKey,
                },
                method: 'post',
                url: `https://api.cognitive.microsofttranslator.com/translate?api-version=3.0&to=${translationTargetLanguage as string}`,
            });
            TranslatedText = response.data[0].translations[0].text;
        } catch (e) {
            console.error('Microsoft Azure translate request got an error!', e);
            return null;
        }
    } else if (translationApiProvider === 'Google Cloud') {
        try {
            const response = await axios({
                data: {
                    format: 'text',
                    q: originalLyrics,
                },
                headers: {
                    'Content-Type': 'application/json',
                },
                method: 'post',
                url: `https://translation.googleapis.com/language/translate/v2?target=${translationTargetLanguage as string}&key=${translationApiKey}`,
            });
            TranslatedText = response.data.data.translations[0].translatedText;
        } catch (e) {
            console.error('Google Cloud translate request got an error!', e);
            return null;
        }
    }
    return TranslatedText;
};
