Skip to content

Commit 23682e5

Browse files
committed
Refactor package configuration and validation rules
1 parent 22f50b5 commit 23682e5

File tree

7 files changed

+57
-33
lines changed

7 files changed

+57
-33
lines changed

.env.ci

Lines changed: 0 additions & 7 deletions
This file was deleted.

composer.json

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -27,31 +27,32 @@
2727
},
2828
"require": {
2929
"php": "^8.1",
30-
"illuminate/support": "^8.12|^9.0|^10.0|^11.0",
31-
"illuminate/container": "^8.12|^9.0|^10.0|^11.0",
32-
"illuminate/contracts": "^8.12|^9.0|^10.0|^11.0",
30+
"illuminate/console": "^10.0|^11.0",
31+
"illuminate/contracts": "^10.0|^11.0",
32+
"illuminate/pagination": "^10.0|^11.0",
33+
"illuminate/support": "^10.0|^11.0",
3334
"usevalid-email/php-sdk": "^1.0"
3435
},
3536
"require-dev": {
3637
"pestphp/pest": "^2.0",
3738
"laravel/pint": "^1.0",
3839
"phpunit/phpunit": "^9.4|^10.1|^11.5",
3940
"mockery/mockery": "^1.6",
40-
"orchestra/testbench": "^6.23|^7.0|^8.0|^9.0|^10.0"
41+
"orchestra/testbench": "^8.0|^9.0",
42+
"orchestra/testbench-dusk": "^8.0|^9.0"
4143
},
4244
"minimum-stability": "dev",
4345
"prefer-stable": true,
4446
"autoload": {
4547
"psr-4": {
4648
"UseValidEmail\\LaravelSdk\\": "src/"
4749
},
48-
"files": [
49-
"src/helpers.php"
50-
]
50+
"files": []
5151
},
5252
"autoload-dev": {
5353
"psr-4": {
54-
"UseValidEmail\\LaravelSdk\\Tests\\": "tests/"
54+
"UseValidEmail\\LaravelSdk\\Tests\\": "tests/",
55+
"App\\": "vendor/orchestra/testbench-core/laravel/app"
5556
},
5657
"files": [
5758
"tests/bootstrap.php"
@@ -69,10 +70,7 @@
6970
"laravel": {
7071
"providers": [
7172
"UseValidEmail\\LaravelSdk\\Providers\\UseValidEmailServiceProvider"
72-
],
73-
"config": {
74-
"usevalid-email": "config/usevalid-email.php"
75-
}
73+
]
7674
}
7775
}
7876
}

src/Providers/UseValidEmailServiceProvider.php

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,18 @@ class UseValidEmailServiceProvider extends ServiceProvider
88
{
99
public function boot()
1010
{
11-
$this->publishes([
12-
__DIR__ . "/../../config/usevalid-email.php" => config_path("usevalid-email.php"),
13-
], "config");
11+
// Load helpers after app is initialized
12+
require_once __DIR__.'/../helpers.php';
1413

15-
// Register the validation rule
16-
valid_email_rule();
14+
if ($this->app->runningInConsole()) {
15+
$this->publishes([
16+
__DIR__.'/../config/usevalidemail.php' => config_path('usevalidemail.php'),
17+
], 'config');
18+
}
1719
}
1820

1921
public function register()
2022
{
21-
$this->mergeConfigFrom(__DIR__ . "/../../config/usevalid-email.php", "usevalid-email");
23+
$this->mergeConfigFrom(__DIR__.'/../config/usevalidemail.php', 'usevalidemail');
2224
}
2325
}

src/Rules/ValidEmailRule.php

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<?php
2+
3+
namespace UseValidEmail\LaravelSdk\Rules;
4+
5+
use Illuminate\Contracts\Validation\Rule;
6+
use UseValidEmail\Sdk\Sdk as EmailValidator;
7+
8+
class ValidEmailRule implements Rule
9+
{
10+
public function __construct(protected string $accessToken) {}
11+
12+
public function passes($attribute, $value)
13+
{
14+
return (new EmailValidator($this->accessToken))
15+
->emailValidator->validate($value)->status === 'valid';
16+
}
17+
18+
public function message()
19+
{
20+
return 'The :attribute must be a valid email address.';
21+
}
22+
}
File renamed without changes.

src/config/usevalidemail.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<?php
2+
3+
return [
4+
'access_token' => env('USE_VALID_EMAIL_TOKEN'),
5+
'api_endpoint' => 'https://api.usevalid.email/v1/',
6+
'timeout' => 10,
7+
];

src/helpers.php

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
<?php
22

33
use GuzzleHttp\Exception\GuzzleException;
4-
use Illuminate\Support\Facades\Log;
54
use Illuminate\Support\Facades\Validator;
65
use UseValidEmail\LaravelSdk\LaravelSdk;
6+
use UseValidEmail\LaravelSdk\Rules\ValidEmailRule;
77

88
if (! function_exists('validateEmail')) {
99
/**
@@ -16,9 +16,6 @@ function validateEmail(string $email)
1616

1717
return $sdk->emailValidator->validate($email);
1818
} catch (Exception $e) {
19-
if (class_exists('Illuminate\Support\Facades\Log')) {
20-
Log::error($e->getMessage());
21-
}
2219
throw $e;
2320
}
2421
}
@@ -35,11 +32,16 @@ function ($attribute, $value, $parameters, $validator) {
3532

3633
return $validation->status === 'valid';
3734
} catch (Exception $e) {
38-
if (class_exists('Illuminate\Support\Facades\Log')) {
39-
Log::error($e->getMessage());
40-
}
41-
4235
return false;
4336
}
4437
}
4538
);
39+
40+
if (! function_exists('valid_email_rule')) {
41+
function valid_email_rule()
42+
{
43+
return function () {
44+
return new ValidEmailRule(config('usevalidemail.access_token'));
45+
};
46+
}
47+
}

0 commit comments

Comments
 (0)