|
1 | 1 | package org.restcomm.sdk; |
2 | 2 |
|
3 | | -import org.restcomm.sdk.domain.*; |
4 | | -import org.restcomm.sdk.endpoints.RestEndpoints; |
5 | | - |
| 3 | +import java.util.Collections; |
6 | 4 | import java.util.Map; |
7 | 5 |
|
| 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 | + |
8 | 17 | /** |
9 | 18 | * @author [email protected] (Oleg Agafonov) |
| 19 | + * @author sergey vetyutnev |
10 | 20 | */ |
11 | 21 | public class RestcommClient { |
12 | 22 |
|
13 | 23 | private final HttpClient httpClient; |
14 | 24 |
|
15 | | - private final String baseRestcommUrl; |
16 | 25 | private final String baseRestcommUrlWithoutAccount; |
17 | 26 |
|
18 | 27 | private final String baseUrl; |
| 28 | + private final String accountSid; |
19 | 29 |
|
20 | 30 | private final Map<String, String> endpoints; |
21 | 31 |
|
22 | 32 | public RestcommClient(RestcommClientConfiguration config) { |
23 | 33 | 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 | + |
26 | 35 | 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; |
28 | 46 | } |
29 | 47 |
|
30 | 48 | 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); |
32 | 58 | } |
33 | 59 |
|
34 | 60 | 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); |
36 | 71 | } |
37 | 72 |
|
38 | 73 | 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); |
40 | 104 | } |
41 | 105 |
|
42 | 106 | 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); |
44 | 117 | } |
45 | 118 |
|
46 | 119 | public RestEndpoints<XmppMapping> getXmppMappingsEndpoints() { |
47 | 120 | return getEndpoints("xmpp-mappings", baseUrl + "/xmpp/xmppMappings", XmppMapping.class); |
48 | 121 | } |
49 | 122 |
|
50 | 123 | public RestEndpoints<ShortMessage> getShortMessagesEndpoints() { |
51 | | - return getEndpoints("messages", baseRestcommUrl + "/SMS/Messages.json", ShortMessage.class); |
| 124 | + return getShortMessagesEndpoints("messages", this.accountSid); |
52 | 125 | } |
53 | 126 |
|
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", |
56 | 133 | ShortMessage.class); |
57 | 134 | } |
58 | 135 |
|
| 136 | + public RestEndpoints<ExtensionData> getExtensions() { |
| 137 | + return getEndpoints("extensions", baseUrl + "/restcomm/2012-04-24/ExtensionsConfiguration.json", ExtensionData.class); |
| 138 | + } |
| 139 | + |
59 | 140 | private <T> RestEndpoints<T> getEndpoints(String endpoint, String defaultUrl, Class<T> type) { |
60 | 141 | String url = endpoints.getOrDefault(endpoint, defaultUrl); |
61 | 142 | return new RestEndpoints(url, httpClient, type); |
|
0 commit comments