Skip to content

Commit fcd6f2f

Browse files
authored
Merge pull request #29 from RestComm/BS-392-2
Bs-392
2 parents 1a97448 + 6ef681d commit fcd6f2f

File tree

4 files changed

+161
-14
lines changed

4 files changed

+161
-14
lines changed

src/main/java/org/restcomm/sdk/RestcommClient.java

Lines changed: 95 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,61 +1,142 @@
11
package org.restcomm.sdk;
22

3-
import org.restcomm.sdk.domain.*;
4-
import org.restcomm.sdk.endpoints.RestEndpoints;
5-
3+
import java.util.Collections;
64
import java.util.Map;
75

6+
import org.restcomm.sdk.domain.Account;
7+
import org.restcomm.sdk.domain.Application;
8+
import org.restcomm.sdk.domain.CallPage;
9+
import org.restcomm.sdk.domain.Client;
10+
import org.restcomm.sdk.domain.ExtensionData;
11+
import org.restcomm.sdk.domain.IncomingPhoneNumber;
12+
import org.restcomm.sdk.domain.RecordingPage;
13+
import org.restcomm.sdk.domain.ShortMessage;
14+
import org.restcomm.sdk.domain.XmppMapping;
15+
import org.restcomm.sdk.endpoints.RestEndpoints;
16+
817
/**
918
* @author [email protected] (Oleg Agafonov)
19+
* @author sergey vetyutnev
1020
*/
1121
public class RestcommClient {
1222

1323
private final HttpClient httpClient;
1424

15-
private final String baseRestcommUrl;
1625
private final String baseRestcommUrlWithoutAccount;
1726

1827
private final String baseUrl;
28+
private final String accountSid;
1929

2030
private final Map<String, String> endpoints;
2131

2232
public RestcommClient(RestcommClientConfiguration config) {
2333
this.httpClient = new HttpClient(config.getAccountSid(), config.getAccountToken());
24-
this.baseRestcommUrlWithoutAccount = config.getBaseUrl() + "/restcomm/2012-04-24/Accounts";
25-
this.baseRestcommUrl = config.getBaseUrl() + "/restcomm/2012-04-24/Accounts/" + config.getAccountSid();
34+
2635
this.baseUrl = config.getBaseUrl();
27-
this.endpoints = config.getEndpoints();
36+
this.baseRestcommUrlWithoutAccount = baseUrl + "/restcomm/2012-04-24/Accounts";
37+
if (config.getEndpoints() != null)
38+
this.endpoints = config.getEndpoints();
39+
else
40+
this.endpoints = Collections.emptyMap();
41+
this.accountSid = config.getAccountSid();
42+
}
43+
44+
public String getAccountSid() {
45+
return this.accountSid;
2846
}
2947

3048
public RestEndpoints<CallPage> getCallsEndpoint() {
31-
return getEndpoints("calls", baseRestcommUrl + "/Calls.json", CallPage.class);
49+
return getCallsEndpoint("calls", this.accountSid);
50+
}
51+
52+
public RestEndpoints<CallPage> getCallsEndpoint(String accountSid) {
53+
return getCallsEndpoint("calls-" + accountSid, accountSid);
54+
}
55+
56+
private RestEndpoints<CallPage> getCallsEndpoint(String endpoint, String accountSid) {
57+
return getEndpoints(endpoint, baseRestcommUrlWithoutAccount + "/" + accountSid + "/Calls.json", CallPage.class);
3258
}
3359

3460
public RestEndpoints<RecordingPage> getRecordingsEndpoint() {
35-
return getEndpoints("recordings", baseRestcommUrl + "/Recordings.json", RecordingPage.class);
61+
return getRecordingsEndpoint("recordings", this.accountSid);
62+
}
63+
64+
public RestEndpoints<RecordingPage> getRecordingsEndpoint(String accountSid) {
65+
return getRecordingsEndpoint("recordings-" + accountSid, accountSid);
66+
}
67+
68+
private RestEndpoints<RecordingPage> getRecordingsEndpoint(String endpoint, String accountSid) {
69+
return getEndpoints(endpoint, baseRestcommUrlWithoutAccount + "/" + accountSid + "/Recordings.json",
70+
RecordingPage.class);
3671
}
3772

3873
public RestEndpoints<Client> getClientsEndpoints() {
39-
return getEndpoints("clients", baseRestcommUrl + "/Clients.json", Client.class);
74+
return getClientsEndpoints("clients", this.accountSid);
75+
}
76+
77+
public RestEndpoints<Client> getClientsEndpoints(String accountSid) {
78+
return getClientsEndpoints("clients-" + accountSid, accountSid);
79+
}
80+
81+
private RestEndpoints<Client> getClientsEndpoints(String endpoint, String accountSid) {
82+
return getEndpoints(endpoint, baseRestcommUrlWithoutAccount + "/" + accountSid + "/Clients.json", Client.class);
83+
}
84+
85+
public RestEndpoints<Account> getAccountsEndpoints() {
86+
return getEndpoints("accounts", baseRestcommUrlWithoutAccount + ".json", Account.class);
87+
}
88+
89+
public RestEndpoints<Account> getAccountsEndpoints(String accountSid) {
90+
return getEndpoints("accounts-" + accountSid, baseRestcommUrlWithoutAccount + ".json/" + accountSid, Account.class);
91+
}
92+
93+
public RestEndpoints<Application> getApplicationsEndpoints() {
94+
return getApplicationsEndpoints("applications", this.accountSid);
95+
}
96+
97+
public RestEndpoints<Application> getApplicationsEndpoints(String accountSid) {
98+
return getApplicationsEndpoints("applications-" + accountSid, accountSid);
99+
}
100+
101+
private RestEndpoints<Application> getApplicationsEndpoints(String endpoint, String accountSid) {
102+
return getEndpoints(endpoint, baseRestcommUrlWithoutAccount + "/" + accountSid + "/Applications.json",
103+
Application.class);
40104
}
41105

42106
public RestEndpoints<IncomingPhoneNumber> getIncomingPhoneNumbersEndpoints() {
43-
return getEndpoints("incoming-phone-numbers", baseRestcommUrl + "/IncomingPhoneNumbers.json", IncomingPhoneNumber.class);
107+
return getIncomingPhoneNumbersEndpoints("incoming-phone-numbers", this.accountSid);
108+
}
109+
110+
public RestEndpoints<IncomingPhoneNumber> getIncomingPhoneNumbersEndpoints(String accountSid) {
111+
return getIncomingPhoneNumbersEndpoints("incoming-phone-numbers-" + accountSid, accountSid);
112+
}
113+
114+
private RestEndpoints<IncomingPhoneNumber> getIncomingPhoneNumbersEndpoints(String endpoint, String accountSid) {
115+
return getEndpoints(endpoint, baseRestcommUrlWithoutAccount + "/" + accountSid + "/IncomingPhoneNumbers.json",
116+
IncomingPhoneNumber.class);
44117
}
45118

46119
public RestEndpoints<XmppMapping> getXmppMappingsEndpoints() {
47120
return getEndpoints("xmpp-mappings", baseUrl + "/xmpp/xmppMappings", XmppMapping.class);
48121
}
49122

50123
public RestEndpoints<ShortMessage> getShortMessagesEndpoints() {
51-
return getEndpoints("messages", baseRestcommUrl + "/SMS/Messages.json", ShortMessage.class);
124+
return getShortMessagesEndpoints("messages", this.accountSid);
52125
}
53126

54-
public RestEndpoints<ShortMessage> getShortMessagesEndpoints(String subAccountSid) {
55-
return getEndpoints("messages", baseRestcommUrlWithoutAccount + "/" + subAccountSid + "/SMS/Messages.json",
127+
public RestEndpoints<ShortMessage> getShortMessagesEndpoints(String accountSid) {
128+
return getShortMessagesEndpoints("messages-" + accountSid, accountSid);
129+
}
130+
131+
private RestEndpoints<ShortMessage> getShortMessagesEndpoints(String endpoint, String accountSid) {
132+
return getEndpoints(endpoint, baseRestcommUrlWithoutAccount + "/" + accountSid + "/SMS/Messages.json",
56133
ShortMessage.class);
57134
}
58135

136+
public RestEndpoints<ExtensionData> getExtensions() {
137+
return getEndpoints("extensions", baseUrl + "/restcomm/2012-04-24/ExtensionsConfiguration.json", ExtensionData.class);
138+
}
139+
59140
private <T> RestEndpoints<T> getEndpoints(String endpoint, String defaultUrl, Class<T> type) {
60141
String url = endpoints.getOrDefault(endpoint, defaultUrl);
61142
return new RestEndpoints(url, httpClient, type);
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package org.restcomm.sdk.domain;
2+
3+
import lombok.Builder;
4+
import lombok.Getter;
5+
6+
@Builder(toBuilder = true)
7+
@Getter
8+
public class Account {
9+
10+
private String sid;
11+
private String organization; // !!!
12+
private String friendlyName;
13+
private String emailAddress;
14+
private String password;
15+
private String status;
16+
private String role;
17+
private String type;
18+
private String dateCreated;
19+
private String dateUpdated;
20+
private String authToken;
21+
private String uri;
22+
23+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package org.restcomm.sdk.domain;
2+
3+
import lombok.Builder;
4+
import lombok.Getter;
5+
6+
@Builder(toBuilder = true)
7+
@Getter
8+
public class Application {
9+
10+
private String sid;
11+
private String dateCreated;
12+
private String dateUpdated;
13+
private String friendlyName;
14+
private String accountSid;
15+
private String apiVersion;
16+
private String voiceCallerIdLookup;
17+
private String uri;
18+
private String rcmlUrl;
19+
private String kind;
20+
21+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package org.restcomm.sdk.domain;
2+
3+
import lombok.Builder;
4+
import lombok.Getter;
5+
6+
@Builder(toBuilder = true)
7+
@Getter
8+
public class ExtensionData {
9+
10+
private String extensionName;
11+
private String enabled;
12+
private String accountSid;
13+
private String configurationData;
14+
15+
// back data
16+
private String sid;
17+
private String extension;
18+
private String configuration;
19+
private String dateCreated;
20+
private String dateUpdated;
21+
22+
}

0 commit comments

Comments
 (0)