WordPress   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 34
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 3
eloc 18
c 1
b 0
f 0
dl 0
loc 34
rs 10

1 Method

Rating   Name   Duplication   Size   Complexity  
A me() 0 15 3
1
<?php
2
/**
3
 * Class WordPress
4
 *
5
 * @created      26.10.2017
6
 * @author       Smiley <[email protected]>
7
 * @copyright    2017 Smiley
8
 * @license      MIT
9
 */
10
11
namespace chillerlan\OAuth\Providers;
12
13
use chillerlan\HTTP\Utils\MessageUtil;
14
use chillerlan\OAuth\Core\{CSRFToken, OAuth2Provider, ProviderException};
15
use Psr\Http\Message\ResponseInterface;
16
use function sprintf;
17
18
/**
19
 * @see https://developer.wordpress.com/docs/oauth2/
20
 */
21
class WordPress extends OAuth2Provider implements CSRFToken{
22
23
	public const SCOPE_AUTH           = 'auth';
24
	public const SCOPE_GLOBAL         = 'global';
25
26
	protected string  $authURL        = 'https://public-api.wordpress.com/oauth2/authorize';
27
	protected string  $accessTokenURL = 'https://public-api.wordpress.com/oauth2/token';
28
	protected string  $apiURL         = 'https://public-api.wordpress.com/rest';
29
	protected ?string $userRevokeURL  = 'https://wordpress.com/me/security/connected-applications';
30
	protected ?string $apiDocs        = 'https://developer.wordpress.com/docs/api/';
31
	protected ?string $applicationURL = 'https://developer.wordpress.com/apps/';
32
33
	protected array $defaultScopes    = [
34
		self::SCOPE_GLOBAL,
35
	];
36
37
	/**
38
	 * @inheritDoc
39
	 */
40
	public function me():ResponseInterface{
41
		$response = $this->request('/v1/me');
42
		$status   = $response->getStatusCode();
43
44
		if($status === 200){
45
			return $response;
46
		}
47
48
		$json = MessageUtil::decodeJSON($response);
49
50
		if(isset($json->error, $json->message)){
51
			throw new ProviderException($json->message);
52
		}
53
54
		throw new ProviderException(sprintf('user info error error HTTP/%s', $status));
55
	}
56
57
}
58