From 07b753b70a74df2258cfcfebac6839b7d29fd80e Mon Sep 17 00:00:00 2001 From: ousid Date: Tue, 22 Apr 2025 17:56:48 +0400 Subject: [PATCH 1/4] setup resource classes --- src/LaravelSendy.php | 28 +++++++++++++++++++++++++++- src/LaravelSendyServiceProvider.php | 2 +- src/Resources/Brands.php | 8 ++++++++ src/Resources/Campaigns.php | 8 ++++++++ src/Resources/Lists.php | 8 ++++++++ src/Resources/Subscribers.php | 8 ++++++++ tests/TestCase.php | 2 +- 7 files changed, 61 insertions(+), 3 deletions(-) create mode 100644 src/Resources/Brands.php create mode 100644 src/Resources/Campaigns.php create mode 100644 src/Resources/Lists.php create mode 100644 src/Resources/Subscribers.php diff --git a/src/LaravelSendy.php b/src/LaravelSendy.php index 5f5da91..f018533 100644 --- a/src/LaravelSendy.php +++ b/src/LaravelSendy.php @@ -2,4 +2,30 @@ namespace Coderflex\LaravelSendy; -class LaravelSendy {} +use Coderflex\LaravelSendy\Resources\Resources\Brands; +use Coderflex\LaravelSendy\Resources\Resources\Campaigns; +use Coderflex\LaravelSendy\Resources\Resources\Lists; +use Coderflex\LaravelSendy\Resources\Resources\Subscribers; + +class LaravelSendy +{ + public function subscribers(): Subscribers + { + return new Subscribers; + } + + public function lists(): Lists + { + return new Lists; + } + + public function brands(): Brands + { + return new Brands; + } + + public function campaigns(): Campaigns + { + return new Campaigns; + } +} diff --git a/src/LaravelSendyServiceProvider.php b/src/LaravelSendyServiceProvider.php index 25c1bb3..e50335f 100644 --- a/src/LaravelSendyServiceProvider.php +++ b/src/LaravelSendyServiceProvider.php @@ -2,9 +2,9 @@ namespace Coderflex\LaravelSendy; +use Coderflex\LaravelSendy\Commands\LaravelSendyCommand; use Spatie\LaravelPackageTools\Package; use Spatie\LaravelPackageTools\PackageServiceProvider; -use Coderflex\LaravelSendy\Commands\LaravelSendyCommand; class LaravelSendyServiceProvider extends PackageServiceProvider { diff --git a/src/Resources/Brands.php b/src/Resources/Brands.php new file mode 100644 index 0000000..eef3ab9 --- /dev/null +++ b/src/Resources/Brands.php @@ -0,0 +1,8 @@ + Date: Thu, 24 Apr 2025 11:31:59 +0400 Subject: [PATCH 2/4] update `composer.json` --- composer.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/composer.json b/composer.json index 1b4c4d5..a174c7f 100644 --- a/composer.json +++ b/composer.json @@ -18,7 +18,11 @@ "require": { "php": "^8.4", "spatie/laravel-package-tools": "^1.16", - "illuminate/contracts": "^10.0||^11.0||^12.0" + "illuminate/contracts": "^10.0||^11.0||^12.0", + "ext-curl": "*", + "ext-json": "*", + "league/oauth2-client": "^2", + "guzzlehttp/guzzle": "7.x" }, "require-dev": { "laravel/pint": "^1.14", @@ -71,4 +75,4 @@ }, "minimum-stability": "dev", "prefer-stable": true -} \ No newline at end of file +} From 0dc2b92bd62dc29761853cb8fec1610ec8992af8 Mon Sep 17 00:00:00 2001 From: ousid Date: Thu, 24 Apr 2025 12:12:22 +0400 Subject: [PATCH 3/4] preparing the resources --- database/factories/ModelFactory.php | 19 ------------------ .../migrations/create_sendy_table.php.stub | 19 ------------------ resources/views/.gitkeep | 0 src/Commands/LaravelSendyCommand.php | 19 ------------------ src/DTOs/CompaignDTO.php | 10 ++++++++++ src/DTOs/SubscribersDTO.php | 10 ++++++++++ src/Exceptions/CompaingException.php | 8 ++++++++ src/Exceptions/SubscribersException.php | 8 ++++++++ src/LaravelSendyServiceProvider.php | 6 +----- src/Resources/Brands.php | 5 ++++- src/Resources/Campaigns.php | 5 ++++- src/Resources/Lists.php | 5 ++++- src/Resources/Subscribers.php | 20 ++++++++++++++++++- 13 files changed, 68 insertions(+), 66 deletions(-) delete mode 100644 database/factories/ModelFactory.php delete mode 100644 database/migrations/create_sendy_table.php.stub delete mode 100644 resources/views/.gitkeep delete mode 100644 src/Commands/LaravelSendyCommand.php create mode 100644 src/DTOs/CompaignDTO.php create mode 100644 src/DTOs/SubscribersDTO.php create mode 100644 src/Exceptions/CompaingException.php create mode 100644 src/Exceptions/SubscribersException.php diff --git a/database/factories/ModelFactory.php b/database/factories/ModelFactory.php deleted file mode 100644 index b744bcc..0000000 --- a/database/factories/ModelFactory.php +++ /dev/null @@ -1,19 +0,0 @@ -id(); - - // add fields - - $table->timestamps(); - }); - } -}; diff --git a/resources/views/.gitkeep b/resources/views/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/src/Commands/LaravelSendyCommand.php b/src/Commands/LaravelSendyCommand.php deleted file mode 100644 index 4fbe7f4..0000000 --- a/src/Commands/LaravelSendyCommand.php +++ /dev/null @@ -1,19 +0,0 @@ -comment('All done'); - - return self::SUCCESS; - } -} diff --git a/src/DTOs/CompaignDTO.php b/src/DTOs/CompaignDTO.php new file mode 100644 index 0000000..67fd6e9 --- /dev/null +++ b/src/DTOs/CompaignDTO.php @@ -0,0 +1,10 @@ +name('laravel-sendy') - ->hasConfigFile() - ->hasViews() - ->hasMigration('create_laravel_sendy_table') - ->hasCommand(LaravelSendyCommand::class); + ->hasConfigFile(); } } diff --git a/src/Resources/Brands.php b/src/Resources/Brands.php index eef3ab9..c7f9d2b 100644 --- a/src/Resources/Brands.php +++ b/src/Resources/Brands.php @@ -4,5 +4,8 @@ class Brands { - // + public function get() + { + // + } } diff --git a/src/Resources/Campaigns.php b/src/Resources/Campaigns.php index c431848..ecf3957 100644 --- a/src/Resources/Campaigns.php +++ b/src/Resources/Campaigns.php @@ -4,5 +4,8 @@ class Campaigns { - // + public function create(array $data) + { + // + } } diff --git a/src/Resources/Lists.php b/src/Resources/Lists.php index ed835e0..ad5c261 100644 --- a/src/Resources/Lists.php +++ b/src/Resources/Lists.php @@ -4,5 +4,8 @@ class Lists { - // + public function get(int $brandId, bool $includeHidden = false) + { + // Implementation to get lists + } } diff --git a/src/Resources/Subscribers.php b/src/Resources/Subscribers.php index 327e7f1..53248af 100644 --- a/src/Resources/Subscribers.php +++ b/src/Resources/Subscribers.php @@ -4,5 +4,23 @@ class Subscribers { - // + public function subscribe(array $data) + { + // + } + + public function unsubscribe(int $listId, string $email) + { + // + } + + public function delete(int $listId, string $email) + { + // + } + + public function count(int $listId) + { + // + } } From e09bc664700ad3d140c6a0bdc7bd1ff9186df265 Mon Sep 17 00:00:00 2001 From: ousid Date: Thu, 24 Apr 2025 12:29:11 +0400 Subject: [PATCH 4/4] add sendy config file values --- config/sendy.php | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/config/sendy.php b/config/sendy.php index 37c4bb3..7c29c3f 100644 --- a/config/sendy.php +++ b/config/sendy.php @@ -1,6 +1,27 @@ env('SENDY_INSTALLATION_URL', 'https://your-sendy-installation.com'), + /* + |-------------------------------------------------------------------------- + | Sendy API Key + |-------------------------------------------------------------------------- + | + | This key is used to authenticate your application with the Sendy + | installation. You can find your API key in the Sendy settings. + | Make sure to keep this key secure and do not share it with anyone. + | It is recommended to use environment variables to store sensitive + | information like API keys. You can set the SENDY_API_KEY + */ + 'sendy_api_key' => env('SENDY_API_KEY', 'your-sendy-api-key'), ];