lsnepomuceno / laravel-brazilian-ceps

Search CEPS easily on Laravel projects
MIT License
31 stars 3 forks source link
address brasil brazil cep correios endereco laravel laravel-framework zip-codes

Search addresses easily with Laravel Brazilian CEPs

Latest Stable Version Total Downloads Latest Unstable Version License Tests

Minimum requirements

Install

Require this package in your composer.json and update composer. This will download the package and the dependencies libraries also.

composer require lsnepomuceno/laravel-brazilian-ceps

Export the settings file using the command below

php artisan vendor:publish --tag=brazilian-ceps

Usage

Using CepService:

<?php

use LSNepomuceno\LaravelBrazilianCeps\Services\CepService;

class ExampleController() {
    // PHP 8: Constructor property promotion
    public function __construct(protected CepService $cepService) { }

    public function dummyFunction(string|int $cep){
       $address = $this->cepService->get($cep);

       dd($address);
    }
}

The returned value will have the structure below, see CepEntity:

 LSNepomuceno\LaravelBrazilianCeps\Entities\CepEntity {
    city: string,
    cep: string,
    street: string,
    state: string,
    uf: string,
    neighborhood: string,
    number: string | int | null,
    complement: string | null,
  }

:exclamation: By default, if the CEP is not found, the returned value will be null. If you need exception handling, the option can be enabled in the configuration file.

// config/brazilian-ceps.php

<?php

  'throw_not_found_exception' => true

:exclamation: After setting the value of the "throw_not_found_exception" variable to true, remember to update your code:

<?php

use LSNepomuceno\LaravelBrazilianCeps\Services\CepService;
use LSNepomuceno\LaravelBrazilianCeps\Exceptions\CepNotFoundException;

class ExampleController() {
    // PHP 8: Constructor property promotion
    public function __construct(protected CepService $cepService) { }

    public function dummyFunction(string|int $cep){
       try {
         $address = $this->cepService->get($cep);

         dd($address);
       } catch(CepNotFoundException $e) {
          // TODO necessary
       }
    }
}

Route API

By default, the package will provide an API route for looking up addresses, as specified below.
Verb URI Invokable Controller Route Name
GET api/consult-cep/{cep} LSNepomuceno\LaravelBrazilianCeps\Controllers\ConsultCepController consult-cep.api

:exclamation: In some cases it may be necessary to deactivate this route, in which case just change the value of the "enable_api_consult_cep_route" configuration variable to false, as example below:

// config/brazilian-ceps.php

<?php

  'enable_api_consult_cep_route' => false

:exclamation: You can also change the message if the CEP is not found:

// config/brazilian-ceps.php

<?php

  'not_found_message' => 'Type here the message you want.'

:exclamation: The initial middleware of the route is "guest", if it is necessary to modify it, just adjust the configuration file:

// config/brazilian-ceps.php

<?php

  'api_route_middleware' => ['guest']

Cache Results

By default, the results cache are cached and have a lifetime of 30 days, if you need to disable or change the lifetime, just update the configuration variables, as described below.

// config/brazilian-ceps.php

<?php

  'cache_results' => true,

  'cache_lifetime_in_days' => 30

Tests

To ensure the delivery of data, several public providers are used, with this, the need to standardize and apply tests for better code quality was seen. About 70+ tests are included in the package.

Tests can be verified through the badge tests badge

License

The MIT License (MIT). Please see License File for more information.