Subversion Repositories cheapmusic

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
103 - 1
<?php
2
/*
3
 * Copyright 2015 Google Inc.
4
 *
5
 * Licensed under the Apache License, Version 2.0 (the "License");
6
 * you may not use this file except in compliance with the License.
7
 * You may obtain a copy of the License at
8
 *
9
 *     http://www.apache.org/licenses/LICENSE-2.0
10
 *
11
 * Unless required by applicable law or agreed to in writing, software
12
 * distributed under the License is distributed on an "AS IS" BASIS,
13
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
 * See the License for the specific language governing permissions and
15
 * limitations under the License.
16
 */
17
 
18
namespace Google\Auth\Credentials;
19
 
20
/**
21
 * Authenticates requests using IAM credentials.
22
 */
23
class IAMCredentials
24
{
25
    const SELECTOR_KEY = 'x-goog-iam-authority-selector';
26
    const TOKEN_KEY = 'x-goog-iam-authorization-token';
27
 
28
    /**
29
     * @var string
30
     */
31
    private $selector;
32
 
33
    /**
34
     * @var string
35
     */
36
    private $token;
37
 
38
    /**
39
     * @param $selector string the IAM selector
40
     * @param $token string the IAM token
41
     */
42
    public function __construct($selector, $token)
43
    {
44
        if (!is_string($selector)) {
45
            throw new \InvalidArgumentException(
46
                'selector must be a string');
47
        }
48
        if (!is_string($token)) {
49
            throw new \InvalidArgumentException(
50
                'token must be a string');
51
        }
52
 
53
        $this->selector = $selector;
54
        $this->token = $token;
55
    }
56
 
57
    /**
58
     * export a callback function which updates runtime metadata.
59
     *
60
     * @return array updateMetadata function
61
     */
62
    public function getUpdateMetadataFunc()
63
    {
64
        return array($this, 'updateMetadata');
65
    }
66
 
67
    /**
68
     * Updates metadata with the appropriate header metadata.
69
     *
70
     * @param array $metadata metadata hashmap
71
     * @param string $unusedAuthUri optional auth uri
72
     * @param callable $httpHandler callback which delivers psr7 request
73
     *        Note: this param is unused here, only included here for
74
     *        consistency with other credentials class
75
     *
76
     * @return array updated metadata hashmap
77
     */
78
    public function updateMetadata(
79
        $metadata,
80
        $unusedAuthUri = null,
81
        callable $httpHandler = null
82
    ) {
83
        $metadata_copy = $metadata;
84
        $metadata_copy[self::SELECTOR_KEY] = $this->selector;
85
        $metadata_copy[self::TOKEN_KEY] = $this->token;
86
 
87
        return $metadata_copy;
88
    }
89
}