1212import java .util .TimeZone ;
1313
1414/**
15- * Token generator for Akamai authentication
15+ * Authentication Token generator
1616 */
17- public class AkamaiToken {
17+ public class AuthToken {
1818 public String tokenName = Cloudinary .AKAMAI_TOKEN_NAME ;
1919 public String key ;
2020 public long startTime ;
@@ -23,11 +23,11 @@ public class AkamaiToken {
2323 public String acl ;
2424 public long window ;
2525
26- public AkamaiToken (String key ) {
26+ public AuthToken (String key ) {
2727 this .key = key ;
2828 }
2929
30- public AkamaiToken setTokenName (String tokenName ) {
30+ public AuthToken setTokenName (String tokenName ) {
3131 this .tokenName = tokenName ;
3232 return this ;
3333 }
@@ -38,7 +38,7 @@ public AkamaiToken setTokenName(String tokenName) {
3838 * @param startTime in seconds since epoch
3939 * @return
4040 */
41- public AkamaiToken setStartTime (long startTime ) {
41+ public AuthToken setStartTime (long startTime ) {
4242 this .startTime = startTime ;
4343 return this ;
4444 }
@@ -49,17 +49,17 @@ public AkamaiToken setStartTime(long startTime) {
4949 * @param endTime in seconds since epoch
5050 * @return
5151 */
52- public AkamaiToken setEndTime (long endTime ) {
52+ public AuthToken setEndTime (long endTime ) {
5353 this .endTime = endTime ;
5454 return this ;
5555 }
5656
57- public AkamaiToken setIp (String ip ) {
57+ public AuthToken setIp (String ip ) {
5858 this .ip = ip ;
5959 return this ;
6060 }
6161
62- public AkamaiToken setAcl (String acl ) {
62+ public AuthToken setAcl (String acl ) {
6363 this .acl = acl ;
6464 return this ;
6565 }
@@ -71,7 +71,7 @@ public AkamaiToken setAcl(String acl) {
7171 * @param window
7272 * @return
7373 */
74- public AkamaiToken setWindow (long window ) {
74+ public AuthToken setWindow (long window ) {
7575 this .window = window ;
7676 return this ;
7777 }
@@ -82,6 +82,10 @@ public AkamaiToken setWindow(long window) {
8282 * @return a signed token
8383 */
8484 public String generate () {
85+ return generate (null );
86+ }
87+
88+ public String generate (String url ) {
8589 long expiration = endTime ;
8690 if (expiration == 0 ) {
8791 if (window > 0 ) {
@@ -99,12 +103,18 @@ public String generate() {
99103 tokenParts .add ("st=" + startTime );
100104 }
101105 tokenParts .add ("exp=" + expiration );
102- tokenParts .add ("acl=" + acl );
106+ if (url != null ) {
107+ tokenParts .add ("url=" + url );
108+ } else if (acl != null ) {
109+ tokenParts .add ("acl=" + acl );
110+ } else {
111+ throw new IllegalArgumentException ("Must provide either url or acl" );
112+ }
103113 String auth = digest (StringUtils .join (tokenParts , "~" ));
104114 tokenParts .add ("hmac=" + auth );
105115 return tokenName + "=" + StringUtils .join (tokenParts , "~" );
106- }
107116
117+ }
108118
109119 private String digest (String message ) {
110120 byte [] binKey = DatatypeConverter .parseHexBinary (key );
0 commit comments