Completed
Push — master ( 0e1ec5...c2994e )
by Jean C.
12s
created

Moip::notifications()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 2
nc 1
nop 0
dl 0
loc 4
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace Moip;
4
5
use Moip\Contracts\Authentication;
6
use Moip\Resource\Account;
7
use Moip\Resource\Customer;
8
use Moip\Resource\Entry;
9
use Moip\Resource\Multiorders;
10
use Moip\Resource\NotificationPreferences;
11
use Moip\Resource\Orders;
12
use Moip\Resource\Payment;
13
use Moip\Resource\Transfers;
14
use Requests_Session;
15
16
/**
17
 * Class Moip.
18
 */
19
class Moip
20
{
21
    /**
22
     * endpoint of production.
23
     *
24
     * @const string
25
     */
26
    const ENDPOINT_PRODUCTION = 'https://api.moip.com.br';
27
28
    /**
29
     * endpoint of sandbox.
30
     *
31
     * @const string
32
     */
33
    const ENDPOINT_SANDBOX = 'https://sandbox.moip.com.br';
34
35
    /**
36
     * Client name.
37
     *
38
     * @const string
39
     * */
40
    const CLIENT = 'Moip SDK';
41
42
    /**
43
     * Authentication that will be added to the header of request.
44
     *
45
     * @var \Moip\MoipAuthentication
46
     */
47
    private $moipAuthentication;
48
49
    /**
50
     * Endpoint of request.
51
     *
52
     * @var \Moip\Moip::ENDPOINT_PRODUCTION|\Moip\Moip::ENDPOINT_SANDBOX
53
     */
54
    private $endpoint;
55
56
    /**
57
     * @var Requests_Session HTTP session configured to use the moip API.
58
     */
59
    private $session;
60
61
    /**
62
     * Create a new aurhentication with the endpoint.
63
     *
64
     * @param \Moip\Auth\MoipAuthentication $moipAuthentication
65
     * @param string                        $endpoint
66
     */
67
    public function __construct(Authentication $moipAuthentication, $endpoint = self::ENDPOINT_PRODUCTION)
68
    {
69
        $this->moipAuthentication = $moipAuthentication;
0 ignored issues
show
Documentation Bug introduced by
It seems like $moipAuthentication of type object<Moip\Contracts\Authentication> is incompatible with the declared type object<Moip\MoipAuthentication> of property $moipAuthentication.

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...
70
        $this->endpoint = $endpoint;
0 ignored issues
show
Documentation Bug introduced by
It seems like $endpoint of type string is incompatible with the declared type object<Moip\Moip::ENDPOI...Moip::ENDPOINT_SANDBOX> of property $endpoint.

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...
71
        $this->createNewSession();
72
    }
73
74
    /**
75
     * Creates a new Request_Session with all the default values.
76
     * A Session is created at construction.
77
     *
78
     * @param float $timeout         How long should we wait for a response?(seconds with a millisecond precision, default: 30, example: 0.01).
79
     * @param float $connect_timeout How long should we wait while trying to connect? (seconds with a millisecond precision, default: 10, example: 0.01)
80
     */
81
    public function createNewSession($timeout = 30.0, $connect_timeout = 30.0)
82
    {
83 View Code Duplication
        if (function_exists('posix_uname')) {
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated across your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
84
            $uname = posix_uname();
85
            $user_agent = sprintf('Mozilla/4.0 (compatible; %s; PHP/%s %s; %s; %s)', self::CLIENT, PHP_SAPI, PHP_VERSION, $uname['sysname'], $uname['machine']);
86
        } else {
87
            $user_agent = sprintf('Mozilla/4.0 (compatible; %s; PHP/%s %s; %s)', self::CLIENT, PHP_SAPI, PHP_VERSION, PHP_OS);
88
        }
89
        $sess = new Requests_Session($this->endpoint);
90
        $sess->options['auth'] = $this->moipAuthentication;
91
        $sess->options['timeout'] = $timeout;
92
        $sess->options['connect_timeout'] = $connect_timeout;
93
        $sess->options['useragent'] = $user_agent;
94
        $this->session = $sess;
95
    }
96
97
    /**
98
     * Returns the http session created.
99
     *
100
     * @return Requests_Session
101
     */
102
    public function getSession()
103
    {
104
        return $this->session;
105
    }
106
107
    /**
108
     * Replace the http session by a custom one.
109
     *
110
     * @param Requests_Session $session
111
     */
112
    public function setSession($session)
113
    {
114
        $this->session = $session;
115
    }
116
117
    /**
118
     * Create a new Customer instance.
119
     *
120
     * @return \Moip\Resource\Customer
121
     */
122
    public function customers()
123
    {
124
        return new Customer($this);
125
    }
126
127
    /**
128
     * Create a new Account instance.
129
     *
130
     * @return \Moip\Resource\Account
131
     */
132
    public function accounts()
133
    {
134
        return new Account($this);
135
    }
136
137
    /**
138
     * Create a new Entry instance.
139
     *
140
     * @return \Moip\Resource\Entry
141
     */
142
    public function entries()
143
    {
144
        return new Entry($this);
145
    }
146
147
    /**
148
     * Create a new Orders instance.
149
     *
150
     * @return \Moip\Resource\Orders
151
     */
152
    public function orders()
153
    {
154
        return new Orders($this);
155
    }
156
157
    /**
158
     * Create a new Payment instance.
159
     *
160
     * @return \Moip\Resource\Payment
161
     */
162
    public function payments()
163
    {
164
        return new Payment($this);
165
    }
166
167
    /**
168
     * Create a new Multiorders instance.
169
     *
170
     * @return \Moip\Resource\Multiorders
171
     */
172
    public function multiorders()
173
    {
174
        return new Multiorders($this);
175
    }
176
    /**
177
     * Create a new Transfers.
178
     *
179
     * @return \Moip\Resource\Transfers
180
     */
181
182
    /**
183
     * Create a new Transfers instance.
184
     *
185
     * @return Transfers
186
     */
187
    public function transfers()
188
    {
189
        return new Transfers($this);
190
    }
191
192
    /**
193
     * Create a new Notification Prefences instance.
194
     *
195
     * @return NotificationPreferences
196
     */
197
    public function notifications()
198
    {
199
        return new NotificationPreferences($this);
200
    }
201
202
    /**
203
     * Get the endpoint.
204
     *
205
     * @return \Moip\Moip::ENDPOINT_PRODUCTION|\Moip\Moip::ENDPOINT_SANDBOX
206
     */
207
    public function getEndpoint()
208
    {
209
        return $this->endpoint;
210
    }
211
}
212