Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 28
0.00% covered (danger)
0.00%
0 / 2
CRAP
0.00% covered (danger)
0.00%
0 / 1
EasyPost_Address_Validator
0.00% covered (danger)
0.00%
0 / 28
0.00% covered (danger)
0.00%
0 / 2
12
0.00% covered (danger)
0.00%
0 / 1
 __construct
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 validate
0.00% covered (danger)
0.00%
0 / 26
0.00% covered (danger)
0.00%
0 / 1
6
1<?php
2/**
3 * @see https://www.easypost.com/address-verification-api
4 * @see https://www.easypost.com/address-verification-guide
5 * @see https://www.easypost.com/docs/api#addresses
6 * @see https://www.easypost.com/docs/address-verification-by-country
7 * @see https://github.com/easypost/easypost-php
8 */
9
10namespace BrianHenryIE\WC_Address_Validation\API\Validators;
11
12use BrianHenryIE\WC_Address_Validation\API\Address_Validator_Interface;
13use BrianHenryIE\WC_Address_Validation\EasyPost\Address;
14use BrianHenryIE\WC_Address_Validation\EasyPost\EasyPost;
15use Psr\Log\LoggerAwareTrait;
16use Psr\Log\LoggerInterface;
17
18class EasyPost_Address_Validator implements Address_Validator_Interface {
19
20    use LoggerAwareTrait;
21
22    public function __construct( string $api_key, LoggerInterface $logger ) {
23        $this->setLogger( $logger );
24
25        EasyPost::setApiKey( $api_key );
26    }
27
28    /**
29     *
30     *
31     * @param array{address_1: string, address_2: string, city: string, state: string, postcode: string, country: string} $address
32     * @return array{success: bool, original_address: array, updated_address: ?array, message: ?string, error_message: ?string}
33     */
34    public function validate( array $address ): array {
35
36        $easypost_address_array = array(
37            'street1' => $address['address_1'],
38            'street2' => $address['address_2'],
39            'city'    => $address['city'],
40            'state'   => $address['state'],
41            'zip'     => $address['postcode'],
42            'country' => $address['country'],
43        );
44
45        try {
46            /** @var Address $verified */
47            $verified = Address::create_and_verify( $easypost_address_array );
48
49        } catch ( \Exception $e ) {
50            $result['success']       = false;
51            $result['error_message'] = 'fail!';
52
53            $this->logger->info( 'error' );
54
55            return $result;
56        }
57
58        $result['success'] = true;
59
60        $updated_address = array(
61            'address_1' => $verified['street1'],
62            'address_2' => $verified['street2'],
63            'city'      => $verified['city'],
64            'state'     => $verified['state'],
65            'postcode'  => $verified['zip'],
66            'country'   => $verified['country'],
67        );
68
69        $result['updated_address'] = $updated_address;
70
71        $result['message'] = '';
72
73        return $result;
74    }
75}