1 | <?php |
||
6 | final class Auth |
||
7 | { |
||
8 | private $accessKey; |
||
9 | private $secretKey; |
||
10 | |||
11 | public function __construct($accessKey, $secretKey) |
||
16 | |||
17 | 6 | public function getAccessKey() |
|
21 | |||
22 | 93 | public function sign($data) |
|
27 | |||
28 | 24 | public function signWithData($data) |
|
33 | |||
34 | 54 | public function signRequest($urlString, $body, $contentType = null) |
|
51 | |||
52 | public function verifyCallback($contentType, $originAuthorization, $url, $body) |
||
57 | |||
58 | 12 | public function privateDownloadUrl($baseUrl, $expires = 3600) |
|
73 | |||
74 | 21 | public function uploadToken( |
|
75 | $bucket, |
||
76 | $key = null, |
||
77 | $expires = 3600, |
||
78 | $policy = null, |
||
79 | $strictPolicy = true, |
||
80 | Zone $zone = null |
||
81 | ) { |
||
82 | 21 | $deadline = time() + $expires; |
|
83 | 21 | $scope = $bucket; |
|
84 | 21 | if ($key !== null) { |
|
85 | 15 | $scope .= ':' . $key; |
|
86 | 15 | } |
|
87 | |||
88 | 21 | $args = self::copyPolicy($args, $policy, $strictPolicy); |
|
89 | 21 | $args['scope'] = $scope; |
|
90 | 21 | $args['deadline'] = $deadline; |
|
91 | |||
92 | 21 | if ($zone === null) { |
|
93 | 21 | $zone = new Zone(); |
|
94 | 21 | } |
|
95 | |||
96 | 21 | list($upHosts, $err) = $zone->getUpHosts($this->accessKey, $bucket); |
|
97 | 21 | if ($err === null) { |
|
98 | $args['upHosts'] = $upHosts; |
||
99 | } |
||
100 | |||
101 | 21 | $b = json_encode($args); |
|
102 | 21 | return $this->signWithData($b); |
|
103 | } |
||
104 | |||
105 | /** |
||
106 | *上传策略,参数规格详见 |
||
107 | *http://developer.qiniu.com/docs/v6/api/reference/security/put-policy.html |
||
108 | */ |
||
109 | private static $policyFields = array( |
||
110 | 'callbackUrl', |
||
111 | 'callbackBody', |
||
112 | 'callbackHost', |
||
113 | 'callbackBodyType', |
||
114 | 'callbackFetchKey', |
||
115 | |||
116 | 'returnUrl', |
||
117 | 'returnBody', |
||
118 | |||
119 | 'endUser', |
||
120 | 'saveKey', |
||
121 | 'insertOnly', |
||
122 | |||
123 | 'detectMime', |
||
124 | 'mimeLimit', |
||
125 | 'fsizeMin', |
||
126 | 'fsizeLimit', |
||
127 | |||
128 | 'persistentOps', |
||
129 | 'persistentNotifyUrl', |
||
130 | 'persistentPipeline', |
||
131 | |||
132 | 'deleteAfterDays', |
||
133 | 'fileType', |
||
134 | |||
135 | 'upHosts', |
||
136 | ); |
||
137 | |||
138 | 21 | private static function copyPolicy(&$policy, $originPolicy, $strictPolicy) |
|
150 | |||
151 | 51 | public function authorization($url, $body = null, $contentType = null) |
|
156 | } |
||
157 |