BrasilAPI
BrasilAPI copied to clipboard
feat: add Cptec endpoints
Bom, galera, este é meu primeiro PR no projeto (e primeiro em um projeto Open Source também). Vou tentar detalhar bem o que fiz aqui, e qualquer coisa que faltar, me avisem, por favor.
Este PR adiciona alguns recursos mencionados no issue #88 e na discussão #172. Basicamente os webservices disponibilizados pela CPTEC foram utilizados para trazer os resultados de forma padronizada e melhor organizada, de forma a abstrair da melhor maneira possível o monte de url's diferentes que eram necessárias para trazer resultados praticamente iguais.
Neste momento os Endpoints desenvolvidos foram:
GET https://brasilapi.com.br/api/cptec/v1/cidade/[:name]
Retorna a listagem de cidades com os respectivos códigos internos da CPTEC, este código é necessário para o funcionamento de alguns dos próximos endpoints.
[:name] é opcional, quando informado retorna uma lista de cidades que correspondam ao termo informado
GET /api/cptec/v1/clima/aeroporto/:icaoCode
Obtém as condições climáticas atuais no aeroporto informado.
GET /api/cptec/v1/clima/capital
Obtém uma lista com todas as capitais do Brasil juntamente com suas condições climáticas atuais.
GET /api/cptec/v1/clima/previsao/:cityCode[/:days]
Obtém a previsão do tempo fornecida pelo CPTEC para a quantidade de dias informada (máximo 14 dias).
Este é um caso interessante, aqui foram utilizados 3 XML de urls distintas para construir o Endpoint. Ele encapsula estes 3 endpoints distintos do CPTEC que traziam as informações separadamente (cidade/codigo_da_localidade/previsao.xml, cidade/7dias/codigo_da_localidade/previsao.xml e cidade/codigo_da_localidade/estendida.xml) de forma a uniformizar a forma de acesso e tratar de forma mais efetiva os resultados.
GET /api/cptec/v1/ondas/:cityCode[/:days]
Esta rota retorna informações referentes as ondas nas cidades costeiras do Brasil, utilizando os XMLs de Ondas do CPTEC.
Assim como o endpoint de previsão meteorológica, este agrega dois xmls do serviço da CPTEC (cidade/codigo_da_localidade/dia/dia/ondas.xml e cidade/codigo_da_localidade/todos/tempos/ondas.xml)
Novamente foi realizado um tratamento para retorno mais efetivo e organizado das informações.
Para exemplos de retorno, atualizei a documentação com os novos endpoints e schemas.
Qualquer dúvida ou sugestão, fiquem a vontade para comentar ;-)
Deployment failed with the following error:
The most recent charge for your active payment method has failed. Please update it here: https://vercel.com/teams/brasilapi/settings/billing.
This pull request is being automatically deployed with Vercel (learn more).
To see the status of your deployment, click below or on the icon next to each commit.
🔍 Inspect: https://vercel.com/brasilapi/brasilapi/5kLGBBKBpP3J9BNMd6daRKtX54hP
✅ Preview: https://brasilapi-git-fork-rodriandreotti-cptec-endpoints-brasilapi.vercel.app
[Deployment for c1dee83 failed]
@lucianopf e @filipedeschamps, Vocês saberiam dizer se a Vercel tem alguma limitação com relação às libs?
Hoje fui testar alguns dos endpoints do PR na url do preview, mas notei que eles estavam dando erro 500 (o que me pareceu estranho, pois os testes passaram todos... rs)
Então fui nos logs da Vercel para averiguar, e ele exibe este erro:

Eu usei a lib Camaro para parsear os XML's da CPTEC.
Até fui conferir se ela estava no packages.json, mas aparentemente está tudo certo :/
Em tempo: Feliz Ano Novo para todos!
Marcando a issue relacionada
#88
@lucianopf e @filipedeschamps, Vocês saberiam dizer se a Vercel tem alguma limitação com relação às libs? Hoje fui testar alguns dos endpoints do PR na url do preview, mas notei que eles estavam dando erro 500 (o que me pareceu estranho, pois os testes passaram todos... rs) Então fui nos logs da Vercel para averiguar, e ele exibe este erro:
Eu usei a lib Camaro para parsear os XML's da CPTEC.
Até fui conferir se ela estava no packages.json, mas aparentemente está tudo certo :/
Em tempo: Feliz Ano Novo para todos!
Mestre confesso que não sei mas é uma libzinha que aparentemente usa wasm e suspeito que a treta é justamente isso 🤔 Será que não rola a gnt buscar ajuda no github discussions da Vercel? 🤔
@lucianopf e @filipedeschamps, Vocês saberiam dizer se a Vercel tem alguma limitação com relação às libs? Hoje fui testar alguns dos endpoints do PR na url do preview, mas notei que eles estavam dando erro 500 (o que me pareceu estranho, pois os testes passaram todos... rs) Então fui nos logs da Vercel para averiguar, e ele exibe este erro:
Eu usei a lib Camaro para parsear os XML's da CPTEC. Até fui conferir se ela estava no packages.json, mas aparentemente está tudo certo :/ Em tempo: Feliz Ano Novo para todos!
Mestre confesso que não sei mas é uma libzinha que aparentemente usa wasm e suspeito que a treta é justamente isso thinking Será que não rola a gnt buscar ajuda no github discussions da Vercel? thinking
Cara, eu percebi essa questão do wasm, eu já tinha dado uma vasculhada no git deles, e até encontrei este issue:https://github.com/vercel/nft/issues/101
Só que não entendi se eles estão trabalhando nisso.
Mas o que achei estranho realmente é que os testes e2e passaram, iso significa que não ocorreu o erro durante os testes automatizados, só não funcionou quando tentei fazer o request diretamente no navegador ou no postman.
Edit: Agora que me toquei de uma coisa, os testes automatizados rodam diretamente no Github, tavez seja por isso que funcionam e quando o deploy é feito, deixam de funcionar.
Exatamente, os testes na verdade não rodam mais contra a Vercel (por conta de uns problemas nos PRs de forks)
É bem provável que seja do lado da Vercel mesmo 😢
Dúvida, não rola testar usando outra lib que não seja a camaro? 🤔 😬
Exatamente, os testes na verdade não rodam mais contra a Vercel (por conta de uns problemas nos PRs de forks)
É bem provável que seja do lado da Vercel mesmo cry
Dúvida, não rola testar usando outra lib que não seja a
camaro? thinking grimacing
Cara, até rola, você conhece alguma lib que faça esse parse do xml de forma legal? O duro é que vai precisar refatorar algumas coisas, mas... kk (por isso odeio dependências... kkk)
@lucianopf , boa notícia! Parece que o pessoal da Vercel corrigiu o BO: https://github.com/vercel/nft/pull/196
PS.: Assim que sobrar um tempinho vou ver se já faço um rebase e um novo commit para ver se dá tudo certo.
@lucianopf , boa notícia! Parece que o pessoal da Vercel corrigiu o BO: vercel/nft#196
PS.: Assim que sobrar um tempinho vou ver se já faço um rebase e um novo commit para ver se dá tudo certo.
Parece que deu boa na Vercel \o/
Kudos, SonarCloud Quality Gate passed!
0 Bugs
0 Vulnerabilities
1 Security Hotspot
0 Code Smells
No Coverage information
0.0% Duplication
Kudos, SonarCloud Quality Gate passed! 
0 Bugs
0 Vulnerabilities
1 Security Hotspot
0 Code Smells
No Coverage information
0.7% Duplication
@RodriAndreotti , consegue atualizar este PR pra gente revisar? kkk
Opa.. .vou ver se consigo fazer isso hoje.
The latest updates on your projects. Learn more about Vercel for Git ↗︎
| Name | Status | Preview | Updated |
|---|---|---|---|
| brasilapi | ✅ Ready (Inspect) | Visit Preview | Dec 21, 2022 at 1:54PM (UTC) |
Dependências atualizadas e lib de parse de json trocada. @lucianopf @LorhanSohaky se puderem dar uma nova checada, plis
Juro que são os últimos comentários kkkk quero ver logo essa API no ar
Pode mandar quantos precisar mano, o importante é ficar um trampo decente... rs
Maaaano vc basicamente implementou um outro serviço inteiro completo aqui! joy rocket Boa mano, parabéns pela implementação!! heart
(desculpa a demora absurda pra revisar aqui =/)
Maaano, deu trabalhinho para deixar redondo, mas acho que ficou legal.
