Last active
March 6, 2024 16:24
-
-
Save marlonangeli/4d9e9e5cb76421be3938949174447dc9 to your computer and use it in GitHub Desktop.
Atualizar descrição de perfil no TabNews - Pipedream
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const DUOLINGO_API_URL = 'https://duolingo-tracker.marlonangeli.com.br/api/stats/' | |
const TABNEWS_API_BASE_URL = 'https://www.tabnews.com.br/api/v1' | |
async function getStreak(username) { | |
try { | |
const response = await fetch(`${DUOLINGO_API_URL}/${username}`); | |
if (!response.ok) { | |
throw new Error(`Erro na requisição: ${response.status} - ${response.statusText}`); | |
} | |
const responseJson = await response.json(); | |
const streak = responseJson.streak; | |
return streak; | |
} catch (error) { | |
console.error("Erro buscando dados do Duolingo", error.message); | |
} | |
} | |
async function loginTabNews(email, password) { | |
try { | |
const response = await fetch(`${TABNEWS_API_BASE_URL}/sessions`, { | |
method: 'POST', | |
headers: { | |
'Content-Type': 'application/json', | |
}, | |
body: JSON.stringify({ | |
email: email, | |
password: password, | |
}), | |
}); | |
if (!response.ok) { | |
throw new Error(`Erro na requisição: ${response.status} - ${response.statusText}`); | |
} | |
const data = await response.json(); | |
return data.token; | |
} catch (error) { | |
console.error('Ocorreu um erro fazendo Login:', error.message); | |
} | |
} | |
async function updateProfileDescription(username, token, streak) { | |
try { | |
const newDescription = `### Marlon Angeli | |
Acadêmico de Ciência da Computação na **UTFPR-MD**. | |
Desenvolvedor de Software Back-end, criando bons bastidores para sua telinha :) | |
--- | |
Sou viciado no **Duolingo** e minha ofensiva é de **\`${streak}\`** dias :fire: - *é um compromisso sério!* | |
[<sup>Veja como aqui</sup>](https://www.tabnews.com.br/marlon/tornei-a-descricao-do-meu-perfil-no-tabnews-dinamica) | |
> #### **[\`marlonangeli.com.br\`](https://marlonangeli.com.br/)** :rocket:`; | |
const response = await fetch(`${TABNEWS_API_BASE_URL}/users/${username}`, { | |
method: 'PATCH', | |
headers: { | |
'Content-Type': 'application/json', | |
cookie: `session_id=${token}`, | |
}, | |
body: JSON.stringify({ | |
description: newDescription | |
}), | |
}); | |
if (!response.ok) { | |
throw new Error(`Erro na requisição: ${response.status} - ${response.statusText}`); | |
} | |
const data = await response.json(); | |
return data; | |
} catch (error) { | |
console.error('Ocorreu um erro atualizando o perfil:', error.message); | |
return error.message; | |
} | |
} | |
export default defineComponent({ | |
async run({ steps, $ }) { | |
try { | |
const duolingoUsername = steps.get_record_or_create.$return_value.duolingo.username; | |
const username = steps.get_record_or_create.$return_value.tabnews.username; | |
const email = steps.get_record_or_create.$return_value.tabnews.email; | |
const password = steps.get_record_or_create.$return_value.tabnews.password; | |
const streak = await getStreak(duolingoUsername); | |
const token = await loginTabNews(email, password); | |
const response = await updateProfileDescription(username, token, streak) | |
console.log(response); | |
} catch (error) { | |
console.error("Erro na execução:", error.message); | |
throw new Error("Erro na execução:", error.message); | |
} | |
}, | |
}) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment