BrasilAPI icon indicating copy to clipboard operation
BrasilAPI copied to clipboard

feat: add Cptec endpoints

Open RodriAndreotti opened this issue 4 years ago • 16 comments

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 ;-)

RodriAndreotti avatar Dec 28 '20 18:12 RodriAndreotti

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.

vercel[bot] avatar Dec 28 '20 18:12 vercel[bot]

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]

vercel[bot] avatar Dec 29 '20 14:12 vercel[bot]

@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: image

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!

RodriAndreotti avatar Dec 31 '20 16:12 RodriAndreotti

Marcando a issue relacionada

#88

Caaddss avatar Jan 18 '21 20:01 Caaddss

@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: image

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 avatar Jan 20 '21 00:01 lucianopf

@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: image 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.

RodriAndreotti avatar Jan 20 '21 02:01 RodriAndreotti

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? 🤔 😬

lucianopf avatar Jan 20 '21 15:01 lucianopf

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)

RodriAndreotti avatar Jan 20 '21 15:01 RodriAndreotti

@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.

RodriAndreotti avatar May 10 '21 13:05 RodriAndreotti

@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/

RodriAndreotti avatar May 13 '21 00:05 RodriAndreotti

Kudos, SonarCloud Quality Gate passed!

Bug A 0 Bugs
Vulnerability A 0 Vulnerabilities
Security Hotspot E 1 Security Hotspot
Code Smell A 0 Code Smells

No Coverage information No Coverage information
0.0% 0.0% Duplication

sonarqubecloud[bot] avatar Jun 05 '21 13:06 sonarqubecloud[bot]

Kudos, SonarCloud Quality Gate passed!    Quality Gate passed

Bug A 0 Bugs
Vulnerability A 0 Vulnerabilities
Security Hotspot E 1 Security Hotspot
Code Smell A 0 Code Smells

No Coverage information No Coverage information
0.7% 0.7% Duplication

sonarqubecloud[bot] avatar Oct 01 '21 22:10 sonarqubecloud[bot]

@RodriAndreotti , consegue atualizar este PR pra gente revisar? kkk

LorhanSohaky avatar Oct 15 '22 01:10 LorhanSohaky

Opa.. .vou ver se consigo fazer isso hoje.

RodriAndreotti avatar Oct 15 '22 19:10 RodriAndreotti

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)

vercel[bot] avatar Oct 15 '22 22:10 vercel[bot]

Kudos, SonarCloud Quality Gate passed!    Quality Gate passed

Bug A 0 Bugs
Vulnerability A 0 Vulnerabilities
Security Hotspot A 0 Security Hotspots
Code Smell A 0 Code Smells

No Coverage information No Coverage information
No Duplication information No Duplication information

sonarqubecloud[bot] avatar Oct 16 '22 21:10 sonarqubecloud[bot]

Dependências atualizadas e lib de parse de json trocada. @lucianopf @LorhanSohaky se puderem dar uma nova checada, plis

RodriAndreotti avatar Dec 13 '22 02:12 RodriAndreotti

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

RodriAndreotti avatar Dec 19 '22 22:12 RodriAndreotti

Kudos, SonarCloud Quality Gate passed!    Quality Gate passed

Bug A 0 Bugs
Vulnerability A 0 Vulnerabilities
Security Hotspot A 0 Security Hotspots
Code Smell A 0 Code Smells

No Coverage information No Coverage information
No Duplication information No Duplication information

sonarqubecloud[bot] avatar Dec 21 '22 13:12 sonarqubecloud[bot]

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.

RodriAndreotti avatar Feb 10 '23 14:02 RodriAndreotti