FreeMobileSms   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 93
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 2

Importance

Changes 3
Bugs 0 Features 0
Metric Value
wmc 5
c 3
b 0
f 0
lcom 1
cbo 2
dl 0
loc 93
rs 10

4 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 15 2
A loadCredentialsFromConfig() 0 7 1
A newClient() 0 10 1
A send() 0 6 1
1
<?php
2
3
namespace Akibatech\FreeMobileSms;
4
5
/**
6
 * Class FreeMobileSms
7
 *
8
 * @package Akibatech\FreeMobileSms
9
 */
10
class FreeMobileSms
11
{
12
    /**
13
     * API endpoint.
14
     *
15
     * @var string
16
     */
17
    protected static $endpoint = 'https://smsapi.free-mobile.fr/sendmsg';
18
19
    /**
20
     * @var array
21
     */
22
    private $credentials = [
23
        'user' => null,
24
        'pass' => null
25
    ];
26
27
    //-------------------------------------------------------------------------
28
29
    /**
30
     * FreeMobileSms constructor.
31
     *
32
     * @param   void
33
     * @return  self
0 ignored issues
show
Comprehensibility Best Practice introduced by
Adding a @return annotation to constructors is generally not recommended as a constructor does not have a meaningful return value.

Adding a @return annotation to a constructor is not recommended, since a constructor does not have a meaningful return value.

Please refer to the PHP core documentation on constructors.

Loading history...
34
     */
35
    public function __construct(array $credentials = [])
36
    {
37
        $credentials = collect($credentials);
38
39
        if ($credentials->isEmpty() === false)
40
        {
41
            $this->credentials = collect($credentials)->only([
0 ignored issues
show
Documentation Bug introduced by
It seems like collect($credentials)->o...(array('user', 'pass')) of type object<Illuminate\Support\Collection> is incompatible with the declared type array of property $credentials.

Our type inference engine has found an assignment to a property that is incompatible with the declared type of that property.

Either this assignment is in error or the assigned type should be added to the documentation/type hint for that property..

Loading history...
42
                'user',
43
                'pass',
44
            ]);
45
        } else
46
        {
47
            $this->loadCredentialsFromConfig();
48
        }
49
    }
50
51
    //-------------------------------------------------------------------------
52
53
    /**
54
     * Load API credentials from Laravel config.
55
     *
56
     * @param   void
57
     * @return  self
58
     */
59
    protected function loadCredentialsFromConfig()
60
    {
61
        $this->credentials['user'] = config('laravel-free-mobile-sms.user');
62
        $this->credentials['pass'] = config('laravel-free-mobile-sms.pass');
63
64
        return $this;
65
    }
66
67
    //-------------------------------------------------------------------------
68
69
    /**
70
     * Create the CurlClient client.
71
     *
72
     * @param   string $message
73
     * @return  CurlClient
74
     */
75
    protected function newClient($message)
76
    {
77
        $client = new CurlClient(self::$endpoint, [
78
            'user' => $this->credentials['user'],
79
            'pass' => $this->credentials['pass'],
80
            'msg'  => $message
81
        ]);
82
83
        return $client;
84
    }
85
86
    //-------------------------------------------------------------------------
87
88
    /**
89
     * Send a new message.
90
     *
91
     * @param   string $message
92
     * @return  int
93
     */
94
    public function send($message = '')
95
    {
96
        $return = $this->newClient($message)->hit();
97
98
        return $return;
99
    }
100
101
    //-------------------------------------------------------------------------
102
}
103