1+ <?php namespace com \amazon \aws \lambda ;
2+
3+ use lang \Value ;
4+ use util \Secret ;
5+
6+ class Credentials implements Value {
7+ private $ accessKey , $ secretKey , $ sessionToken ;
8+
9+ /**
10+ * Creates a new instance
11+ *
12+ * @param string $accessKey
13+ * @param string|util.Secret $secretKey
14+ * @param ?string $sessionToken
15+ */
16+ public function __construct ($ accessKey , $ secretKey , $ sessionToken = null ) {
17+ $ this ->accessKey = $ accessKey ;
18+ $ this ->secretKey = $ secretKey instanceof Secret ? $ secretKey : new Secret ($ secretKey );
19+ $ this ->sessionToken = $ sessionToken ;
20+ }
21+
22+ /** @return string */
23+ public function accessKey () { return $ this ->accessKey ; }
24+
25+ /** @return util.Secret */
26+ public function secretKey () { return $ this ->secretKey ; }
27+
28+ /** @return ?string */
29+ public function sessionToken () { return $ this ->sessionToken ; }
30+
31+ /** @return string */
32+ public function hashCode () {
33+ return 'C ' .sha1 ($ this ->accessKey .$ this ->secretKey ->reveal ().$ this ->sessionToken );
34+ }
35+
36+ /** @return string */
37+ public function toString () {
38+ return sprintf (
39+ '%s(accessKey: %s, secretKey: %s%s) ' ,
40+ nameof ($ this ),
41+ $ this ->accessKey ,
42+ str_repeat ('* ' , strlen ($ this ->secretKey ->reveal ())),
43+ null === $ this ->sessionToken ? '' : ', sessionToken: ' .$ this ->sessionToken
44+ );
45+ }
46+
47+ /**
48+ * Comparison
49+ *
50+ * @param var $value
51+ * @return int
52+ */
53+ public function compareTo ($ value ) {
54+ if (!($ value instanceof self)) return 1 ;
55+
56+ $ r = $ this ->accessKey <=> $ value ->accessKey ;
57+ if (0 !== $ r ) return $ r ;
58+
59+ $ r = $ this ->sessionToken <=> $ value ->sessionToken ;
60+ if (0 !== $ r ) return $ r ;
61+
62+ return $ this ->secretKey ->equals ($ value ->secretKey ) ? 0 : 1 ;
63+ }
64+ }
0 commit comments