Completed
Push — master ( 3f431b...deda3e )
by Sergey
04:18 queued 01:59
created

Bot::getClientInfo()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 12
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 1 Features 0
Metric Value
c 1
b 1
f 0
dl 0
loc 12
rs 9.4285
cc 2
eloc 5
nc 2
nop 0
1
<?php
2
3
namespace seregazhuk\PinterestBot;
4
5
use seregazhuk\PinterestBot\Api\Providers\News;
6
use seregazhuk\PinterestBot\Api\Providers\Pins;
7
use seregazhuk\PinterestBot\Api\Providers\User;
8
use seregazhuk\PinterestBot\Api\Providers\Topics;
9
use seregazhuk\PinterestBot\Api\Providers\Boards;
10
use seregazhuk\PinterestBot\Api\Providers\Pinners;
11
use seregazhuk\PinterestBot\Api\Providers\Provider;
12
use seregazhuk\PinterestBot\Api\Providers\Keywords;
13
use seregazhuk\PinterestBot\Api\ProvidersContainer;
14
use seregazhuk\PinterestBot\Api\Providers\Interests;
15
use seregazhuk\PinterestBot\Api\Contracts\HttpClient;
16
use seregazhuk\PinterestBot\Api\Providers\Conversations;
17
18
/**
19
 * Class Bot.
20
 *
21
 * @property Pins $pins 
22
 * @property News $news
23
 * @property User $user
24
 * @property Boards $boards
25
 * @property Pinners $pinners
26
 * @property Keywords $keywords
27
 * @property Interests $interests
28
 * @property Topics $topics
29
 * @property Conversations $conversations
30
 *
31
 * @method HttpClient getHttpClient
32
 * @method array|null getLastError
33
 */
34
class Bot
35
{
36
    /**
37
     * @var ProvidersContainer
38
     */
39
    protected $providersContainer;
40
41
    /**
42
     * @param ProvidersContainer $providersContainer
43
     */
44
    public function __construct(ProvidersContainer $providersContainer)
45
    {
46
        $this->providersContainer = $providersContainer;
47
    }
48
49
    /**
50
     * Magic method to access different providers.
51
     *
52
     * @param string $provider
53
     *
54
     * @return Provider
55
     */
56
    public function __get($provider)
57
    {
58
        return $this->providersContainer->getProvider($provider);
59
    }
60
61
    /**
62
     *  Magic method to proxy calls to providers container.
63
     *
64
     * @param string $method
65
     * @param array $parameters
66
     * @return mixed
67
     */
68
    public function __call($method, $parameters)
69
    {
70
        return call_user_func([$this->providersContainer, $method], $parameters);
71
    }
72
73
    /**
74
     * @return array|null
75
     */
76
    public function getClientInfo()
77
    {
78
        $clientInfo = $this->providersContainer->getClientInfo();
79
80
        // If there was no request before, simply visit the main page, to
81
        // load client context information.
82
        if(is_null($clientInfo)) {
83
            $this->user->visitMainPage();
84
        }
85
86
        return $this->providersContainer->getClientInfo();
87
    }
88
}
89