Completed
Push — master ( 3f7868...fe95db )
by Дмитрий
03:54
created

Vimeo   A

Complexity

Total Complexity 8

Size/Duplication

Total Lines 74
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 5

Test Coverage

Coverage 0%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 8
lcom 1
cbo 5
dl 0
loc 74
ccs 0
cts 37
cp 0
rs 10
c 1
b 0
f 0

6 Methods

Rating   Name   Duplication   Size   Complexity  
A getBaseUri() 0 4 1
A getAuthorizeUri() 0 4 1
A getRequestTokenUri() 0 4 1
A getName() 0 4 1
A getIdentity() 0 4 1
A parseToken() 0 23 3
1
<?php
2
/**
3
 * SocialConnect project
4
 * @author: Patsura Dmitry https://github.com/ovr <[email protected]>
5
 */
6
7
namespace SocialConnect\Auth\Provider;
8
9
use SocialConnect\Auth\AccessTokenInterface;
10
use SocialConnect\Auth\Provider\Exception\InvalidAccessToken;
11
use SocialConnect\OAuth2\AccessToken;
12
use SocialConnect\Common\Entity\User;
13
use SocialConnect\Common\Hydrator\ObjectMap;
14
15
class Vimeo extends \SocialConnect\OAuth2\AbstractProvider
16
{
17
    /**
18
     * @var User|null
19
     */
20
    protected $user;
21
22
    /**
23
     * {@inheritdoc}
24
     */
25
    public function getBaseUri()
26
    {
27
        return 'https://api.vimeo.com/';
28
    }
29
30
    /**
31
     * {@inheritdoc}
32
     */
33
    public function getAuthorizeUri()
34
    {
35
        return 'https://api.vimeo.com/oauth/authorize';
36
    }
37
38
    /**
39
     * {@inheritdoc}
40
     */
41
    public function getRequestTokenUri()
42
    {
43
        return 'https://api.vimeo.com/oauth/access_token';
44
    }
45
46
    /**
47
     * {@inheritdoc}
48
     */
49
    public function getName()
50
    {
51
        return 'vimeo';
52
    }
53
54
    /**
55
     * {@inheritdoc}
56
     */
57
    public function parseToken($body)
58
    {
59
        $response = json_decode($body, true);
60
        if ($response) {
61
            $token = new AccessToken($response);
62
63
            // Vimeo return User on get Access Token Request (looks like to protect round trips)
64
            if (isset($response['user'])) {
65
                $hydrator = new ObjectMap(array(
66
                    'name' => 'fullname',
67
                ));
68
69
                $this->user = $hydrator->hydrate(new User(), (object) $response['user']);
70
                $this->user->id = str_replace('/users/', '', $this->user->uri);
71
72
                $token->setUid($this->user->id);
73
            }
74
75
            return $token;
76
        }
77
78
        throw new InvalidAccessToken('AccessToken is not a valid JSON');
79
    }
80
81
    /**
82
     * {@inheritdoc}
83
     */
84
    public function getIdentity(AccessTokenInterface $accessToken)
85
    {
86
        return $this->user;
87
    }
88
}
89