Socket
Book a DemoInstallSign in
Socket

github.com/marcosocram/fullcycle-weather-api

Package Overview
Dependencies
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

github.com/marcosocram/fullcycle-weather-api

Source
Go
Version
v0.0.0-20241114002132-cee429cde6ff
Version published
Created
Source

fullcycle-weather-api

Este serviço em Go consulta a temperatura atual para uma determinada localização com base no CEP fornecido. Utiliza a API do ViaCEP para buscar informações de localização e a API do WeatherAPI para consultar as temperaturas.

Funcionalidades

  • Recebe um CEP válido de 8 dígitos.
  • Verifica o nome da cidade associada ao CEP.
  • Retorna a temperatura atual em Celsius, Fahrenheit e Kelvin.

Estrutura de Resposta

O serviço responde adequadamente para diferentes cenários:

Em caso de sucesso:

  • Código HTTP: 200
  • Response Body:
    {
      "temp_C": 28.5,
      "temp_F": 83.3,
      "temp_K": 301.65
    }
    

Em caso de falha com CEP inválido (formato incorreto):

  • Código HTTP: 422
  • Mensagem: invalid zipcode

Em caso de falha com CEP não encontrado:

  • Código HTTP: 404
  • Mensagem: can not find zipcode

Requisitos

  • Docker e Docker Compose instalados.
  • Chave de API do WeatherAPI.

Configuração e Execução com Docker Compose

  • Clone este repositório:

    git clone https://github.com/marcosocram/fullcycle-weather-api.git
    cd fullcycle-weather-api
    
  • Substitua a variável de ambiente WEATHER_API_KEY no docker-compose.yml com sua chave de API do WeatherAPI:

    environment:
      WEATHER_API_KEY: "sua_chave_api_aqui"
    
  • Inicie o serviço com Docker Compose:

    docker-compose up --build
    

    Isso construirá e executará o serviço na porta 8080.

Testando o Serviço

Para verificar o funcionamento do serviço, você pode fazer uma requisição para o endpoint /weather com um CEP válido. Aqui estão alguns exemplos de como testar:

Exemplo de Requisição de Sucesso

curl "http://localhost:8080/weather?cep=01001000"

Exemplo de Resposta:

{
  "temp_C": 28.5,
  "temp_F": 83.3,
  "temp_K": 301.65
}

Teste para CEP Inválido (Formato Incorreto)

curl "http://localhost:8080/weather?cep=1234567"

Resposta Esperada:

invalid zipcode

Teste para CEP Não Encontrado

curl "http://localhost:8080/weather?cep=99999999"

Resposta Esperada:

can not find zipcode

Testes Automatizados

Para rodar os testes automatizados:

  • Configura a variável de ambiente WEATHER_API_KEY no arquivo tests/weather_test.go com sua chave de API do WeatherAPI:

    t.Setenv("WEATHER_API_KEY", "sua_chave_api_aqui")
    
  • Execute os testes com o comando:

    go test ./...
    

    Isso executará os testes unitários, cobrindo:

    • Endpoint /weather com mocks das APIs de CEP e clima.
    • Funções de conversão de temperatura.

Parar o Serviço

Para parar o serviço e remover os containers, execute:

docker-compose down

URL do Google Cloud Run

https://fullcycle-weather-api-251071863407.us-central1.run.app/weather?cep=88110798

FAQs

Package last updated on 14 Nov 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts