CredentialNormalizer   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 31
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 16
c 1
b 0
f 0
dl 0
loc 31
ccs 15
cts 15
cp 1
rs 10
wmc 6

3 Methods

Rating   Name   Duplication   Size   Complexity  
A snake() 0 3 1
A normalizeCredentialParamName() 0 8 3
A normalizeCredentialParamNames() 0 7 2
1
<?php
2
3
namespace mpyw\Cowitter\Helpers;
4
5
class CredentialNormalizer
6
{
7
    protected static $OAuthCredentialPatterns = [
8
        'consumer_key' => '/\A(?:0|ck|(oauth[ _-]?)?consumer[ _-]?key)\z/i',
9
        'consumer_secret' => '/\A(?:1|cs|(oauth[ _-]?)?consumer[ _-]?secret)\z/i',
10
        'token' => '/\A(?:2|[aor]?t|(?:(?:access|oauth|request)[ _-]?)?token)\z/i',
11
        'token_secret' => '/\A(?:3|[aor]?ts|[aor]s|(?:(?:access|oauth|request)[ _-]?)?token[ _-]?secret|(?:access|oauth|request)[ _-]?secret)\z/i',
12
    ];
13
14 72
    protected static function snake($letters)
15 72
    {
16 72
        return strtolower(preg_replace('/[a-z]++\K(?=[A-Z])|[A-Z]++\K(?=[A-Z][a-z])/', '_', $letters));
17
    }
18
19 71
    public static function normalizeCredentialParamName($key) {
20 71
        $snaked_key = static::snake($key);
21 71
        foreach (self::$OAuthCredentialPatterns as $name => $pattern) {
22 71
            if (preg_match($pattern, $snaked_key)) {
23 71
                return $name;
24
            }
25
        }
26 2
        throw new \DomainException('Unknown credential parameter: "' . $key . '"');
27
    }
28
29 1
    public static function normalizeCredentialParamNames(array $params)
30 1
    {
31 1
        $r = [];
32 1
        foreach ($params as $key => $value) {
33 1
            $r[static::normalizeCredentialParamName($key)] = $value;
34
        }
35 1
        return $r;
36
    }
37
}
38