CredentialNormalizer::snake()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 1
c 1
b 0
f 0
nc 1
nop 1
dl 0
loc 3
ccs 3
cts 3
cp 1
crap 1
rs 10
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