-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathSonosApiConfiguration.java
More file actions
110 lines (89 loc) · 3.28 KB
/
SonosApiConfiguration.java
File metadata and controls
110 lines (89 loc) · 3.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
package engineer.nightowl.sonos.api;
import java.util.Base64;
import java.util.Objects;
/**
* Configuration class to be built up and passed into a
* {@link engineer.nightowl.sonos.api.SonosApiClient}
* <p>
* Loads defaults on construction.
*/
public class SonosApiConfiguration
{
private String applicationId;
private String apiKey;
private String apiSecret;
private String authBaseUrl;
private String controlBaseUrl;
private Boolean clientSideValidationEnabled;
public SonosApiConfiguration() {
loadDefaults();
}
public String getApplicationId() {
return applicationId;
}
public void setApplicationId(final String applicationId) {
this.applicationId = applicationId;
}
public String getApiKey() {
return apiKey;
}
public void setApiKey(final String apiKey) {
this.apiKey = apiKey;
}
public String getApiSecret() {
return apiSecret;
}
public void setApiSecret(final String apiSecret) {
this.apiSecret = apiSecret;
}
public String getAuthBaseUrl() {
return authBaseUrl;
}
public void setAuthBaseUrl(final String authBaseUrl) {
this.authBaseUrl = authBaseUrl;
}
public String getControlBaseUrl() {
return controlBaseUrl;
}
public void setControlBaseUrl(final String controlBaseUrl) {
this.controlBaseUrl = controlBaseUrl;
}
public Boolean isClientSideValidationEnabled() {
return clientSideValidationEnabled;
}
public void setClientSideValidationEnabled(Boolean clientSideValidationEnabled) {
this.clientSideValidationEnabled = clientSideValidationEnabled;
}
public void loadDefaults() {
setAuthBaseUrl("api.sonos.com");
setControlBaseUrl("api.ws.sonos.com/control/api");
setClientSideValidationEnabled(Boolean.TRUE);
}
public String getAuthorizationHeaderValue() {
final byte[] authBytes = String.join(":", getApiKey(), getApiSecret()).getBytes();
final String authBase64 = Base64.getEncoder().encodeToString(authBytes);
return String.join(" ", "Basic", authBase64);
}
@Override
public String toString() {
return "SonosApiConfiguration [apiKey=" + apiKey + ", apiSecret=" + apiSecret + ", applicationId="
+ applicationId + ", authBaseUrl=" + authBaseUrl + ", clientSideValidationEnabled="
+ clientSideValidationEnabled + ", controlBaseUrl=" + controlBaseUrl + "]";
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (!(obj instanceof SonosApiConfiguration))
return false;
SonosApiConfiguration other = (SonosApiConfiguration) obj;
return Objects.equals(apiKey, other.apiKey) && Objects.equals(apiSecret, other.apiSecret)
&& Objects.equals(applicationId, other.applicationId) && Objects.equals(authBaseUrl, other.authBaseUrl)
&& Objects.equals(clientSideValidationEnabled, other.clientSideValidationEnabled)
&& Objects.equals(controlBaseUrl, other.controlBaseUrl);
}
@Override
public int hashCode() {
return Objects.hash(apiKey, apiSecret, applicationId, authBaseUrl, clientSideValidationEnabled, controlBaseUrl);
}
}