Passed
Pull Request — master (#29)
by Samuel
05:00 queued 02:51
created

MpesaServiceProvider::boot()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 8

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 6
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
nc 1
nop 0
dl 0
loc 8
ccs 6
cts 6
cp 1
crap 1
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace Samerior\MobileMoney\Mpesa;
4
5
use Samerior\MobileMoney\Mpesa\Commands\Registra;
6
use Samerior\MobileMoney\Mpesa\Commands\StkStatus;
7
use Samerior\MobileMoney\Mpesa\Events\B2cPaymentFailedEvent;
8
use Samerior\MobileMoney\Mpesa\Events\B2cPaymentSuccessEvent;
9
use Samerior\MobileMoney\Mpesa\Events\C2bConfirmationEvent;
10
use Samerior\MobileMoney\Mpesa\Events\StkPushPaymentFailedEvent;
11
use Samerior\MobileMoney\Mpesa\Events\StkPushPaymentSuccessEvent;
12
use Samerior\MobileMoney\Mpesa\Http\Middlewares\MobileMoneyCors;
13
use Samerior\MobileMoney\Mpesa\Library\BulkSender;
14
use Samerior\MobileMoney\Mpesa\Library\Core;
15
use Samerior\MobileMoney\Mpesa\Library\IdCheck;
16
use Samerior\MobileMoney\Mpesa\Library\RegisterUrl;
17
use Samerior\MobileMoney\Mpesa\Library\StkPush;
18
use Samerior\MobileMoney\Mpesa\Listeners\C2bPaymentConfirmation;
19
use Samerior\MobileMoney\Mpesa\Listeners\StkPaymentFailed;
20
use Samerior\MobileMoney\Mpesa\Listeners\StkPaymentSuccessful;
21
use GuzzleHttp\Client;
22
use Illuminate\Support\Facades\Event;
23
use Illuminate\Support\ServiceProvider;
24
use Samerior\MobileMoney\src\Mpesa\Listeners\B2CFailedListener;
25
use Samerior\MobileMoney\src\Mpesa\Listeners\B2CSuccessListener;
26
27
/**
28
 * Class MpesaServiceProvider
29
 * @package Samerior\MobileMoney\Mpesa
30
 */
31
class MpesaServiceProvider extends ServiceProvider
32
{
33
    /**
34
     * Register the service provider.
35
     *
36
     * @return void
37
     * @throws Exceptions\MpesaException
38
     */
39 2
    public function register()
40
    {
41 2
        $core = new Core(new Client(['http_errors' => false,]));
42
        $this->app->bind(Core::class, function () use ($core) {
43 2
            return $core;
44 2
        });
45 2
        $this->commands(
46
            [
47 2
                Registra::class,
48
                StkStatus::class,
49
            ]
50
        );
51
52 2
        $this->registerFacades();
53 2
        $this->registerEvents();
54 2
        $this->mergeConfigFrom(__DIR__ . '/../../config/samerior.mpesa.php', 'samerior.mpesa');
55 2
    }
56
57 2
    public function boot()
58
    {
59 2
        $this->loadRoutesFrom(__DIR__ . '/Http/routes.php');
60 2
        $this->loadMigrationsFrom(__DIR__ . '/Database/Migrations');
61 2
        $this->publishes([__DIR__ . '/../../config/samerior.mpesa.php' => config_path('samerior.mpesa.php'),]);
62
63 2
        $this->app['router']->aliasMiddleware('pesa.cors', MobileMoneyCors::class);
64 2
    }
65
66
    /**
67
     * Register facade accessors
68
     */
69 2
    private function registerFacades()
70
    {
71 2
        $this->app->bind(
72 2
            'mpesa_stk',
73
            function () {
74 1
                return $this->app->make(StkPush::class);
75 2
            }
76
        );
77 2
        $this->app->bind(
78 2
            'mpesa_registrar',
79
            function () {
80
                return $this->app->make(RegisterUrl::class);
81 2
            }
82
        );
83 2
        $this->app->bind(
84 2
            'mpesa_identity',
85
            function () {
86
                return $this->app->make(IdCheck::class);
87 2
            }
88
        );
89 2
        $this->app->bind(
90 2
            'mpesa_b2c',
91
            function () {
92
                return $this->app->make(BulkSender::class);
93 2
            }
94
        );
95 2
    }
96
97
    /**
98
     * Register events
99
     */
100 2
    private function registerEvents()
101
    {
102 2
        Event::listen(StkPushPaymentSuccessEvent::class, StkPaymentSuccessful::class);
103 2
        Event::listen(StkPushPaymentFailedEvent::class, StkPaymentFailed::class);
104 2
        Event::listen(C2bConfirmationEvent::class, C2bPaymentConfirmation::class);
105 2
        Event::listen(B2cPaymentSuccessEvent::class, B2CSuccessListener::class);
106 2
        Event::listen(B2cPaymentFailedEvent::class, B2CFailedListener::class);
107 2
    }
108
}
109