1 <?php
2 /**
3 * Copyright 2012-2014 Rackspace US, 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 OpenCloud\ObjectStore\Resource;
19
20 /**
21 * Represents an account that interacts with the CloudFiles API.
22 *
23 * @link http://docs.rackspace.com/files/api/v1/cf-devguide/content/Accounts-d1e421.html
24 */
25 class Account extends AbstractResource
26 {
27 const METADATA_LABEL = 'Account';
28
29 /**
30 * @var string The temporary URL secret for this account
31 */
32 private $tempUrlSecret;
33
34 public function getUrl($path = null, array $query = array())
35 {
36 return $this->getService()->getUrl();
37 }
38
39 /**
40 * Convenience method.
41 *
42 * @return \OpenCloud\Common\Metadata
43 */
44 public function getDetails()
45 {
46 return $this->retrieveMetadata();
47 }
48
49 /**
50 * @return null|string|int
51 */
52 public function getObjectCount()
53 {
54 return $this->metadata->getProperty('Object-Count');
55 }
56
57 /**
58 * @return null|string|int
59 */
60 public function getContainerCount()
61 {
62 return $this->metadata->getProperty('Container-Count');
63 }
64
65 /**
66 * @return null|string|int
67 */
68 public function getBytesUsed()
69 {
70 return $this->metadata->getProperty('Bytes-Used');
71 }
72
73 /**
74 * Sets the secret value for the temporary URL.
75 *
76 * @link http://docs.rackspace.com/files/api/v1/cf-devguide/content/Set_Account_Metadata-d1a4460.html
77 *
78 * @param null $secret The value to set the secret to. If left blank, a random hash is generated.
79 * @return $this
80 */
81 public function setTempUrlSecret($secret = null)
82 {
83 if (!$secret) {
84 $secret = sha1(rand(1, 99999));
85 }
86
87 $this->tempUrlSecret = $secret;
88
89 $this->saveMetadata($this->appendToMetadata(array('Temp-Url-Key' => $secret)));
90
91 return $this;
92 }
93
94 /**
95 * @return null|string
96 */
97 public function getTempUrlSecret()
98 {
99 if (null === $this->tempUrlSecret) {
100 $this->retrieveMetadata();
101 $this->tempUrlSecret = $this->metadata->getProperty('Temp-Url-Key');
102 }
103
104 return $this->tempUrlSecret;
105 }
106 }
107