11package org .restcomm .sdk ;
22
3- import org .restcomm .sdk .domain .*;
4- import org .restcomm .sdk .endpoints .RestEndpoints ;
5-
3+ import java .util .HashMap ;
64import 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 */
1121public class RestcommClient {
1222
1323 private final HttpClient httpClient ;
1424
15- private final String baseRestcommUrl ;
16- private final String baseRestcommUrlWithoutAccount ;
25+ protected final String baseRestcommUrl ;
26+ protected final String baseRestcommUrlWithoutAccount ;
1727
18- private final String baseUrl ;
28+ protected final String baseUrl ;
29+ private final String accountSid ;
1930
20- private final Map <String , String > endpoints ;
31+ protected final Map <String , String > endpoints ;
2132
2233 public RestcommClient (RestcommClientConfiguration config ) {
2334 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 ();
35+
2636 this .baseUrl = config .getBaseUrl ();
27- this .endpoints = config .getEndpoints ();
37+ this .baseRestcommUrlWithoutAccount = baseUrl + "/restcomm/2012-04-24/Accounts" ;
38+ this .baseRestcommUrl = baseUrl + "/restcomm/2012-04-24/Accounts/" + config .getAccountSid ();
39+ if (config .getEndpoints () != null )
40+ this .endpoints = config .getEndpoints ();
41+ else
42+ this .endpoints = new HashMap <String , String >();
43+ this .accountSid = config .getAccountSid ();
44+ }
45+
46+ public String getAccountSid () {
47+ return this .accountSid ;
2848 }
2949
3050 public RestEndpoints <CallPage > getCallsEndpoint () {
3151 return getEndpoints ("calls" , baseRestcommUrl + "/Calls.json" , CallPage .class );
3252 }
3353
54+ public RestEndpoints <CallPage > getCallsEndpoint (String accountSid ) {
55+ return getEndpoints ("calls" , baseRestcommUrlWithoutAccount + "/" + accountSid + "/Calls.json" , CallPage .class );
56+ }
57+
3458 public RestEndpoints <RecordingPage > getRecordingsEndpoint () {
3559 return getEndpoints ("recordings" , baseRestcommUrl + "/Recordings.json" , RecordingPage .class );
3660 }
3761
62+ public RestEndpoints <RecordingPage > getRecordingsEndpoint (String accountSid ) {
63+ return getEndpoints ("recordings" , baseRestcommUrlWithoutAccount + "/" + accountSid + "/Recordings.json" ,
64+ RecordingPage .class );
65+ }
66+
3867 public RestEndpoints <Client > getClientsEndpoints () {
3968 return getEndpoints ("clients" , baseRestcommUrl + "/Clients.json" , Client .class );
4069 }
@@ -43,18 +72,28 @@ public RestEndpoints<Account> getAccountsEndpoints() {
4372 return getEndpoints ("accounts" , baseRestcommUrlWithoutAccount + ".json" , Account .class );
4473 }
4574
46- public RestEndpoints <Account > getAccountsEndpoints (String subAccountSid ) {
47- return getEndpoints ("accounts" , baseRestcommUrlWithoutAccount + ".json/" + subAccountSid , Account .class );
75+ public RestEndpoints <Account > getAccountsEndpoints (String accountSid ) {
76+ return getEndpoints ("accounts" , baseRestcommUrlWithoutAccount + ".json/" + accountSid , Account .class );
4877 }
4978
5079 public RestEndpoints <Application > getApplicationsEndpoints () {
5180 return getEndpoints ("applications" , baseRestcommUrl + "/Applications.json" , Application .class );
5281 }
5382
83+ public RestEndpoints <Application > getApplicationsEndpoints (String accountSid ) {
84+ return getEndpoints ("applications" , baseRestcommUrlWithoutAccount + "/" + accountSid + "/Applications.json" ,
85+ Application .class );
86+ }
87+
5488 public RestEndpoints <IncomingPhoneNumber > getIncomingPhoneNumbersEndpoints () {
5589 return getEndpoints ("incoming-phone-numbers" , baseRestcommUrl + "/IncomingPhoneNumbers.json" , IncomingPhoneNumber .class );
5690 }
5791
92+ public RestEndpoints <IncomingPhoneNumber > getIncomingPhoneNumbersEndpoints (String accountSid ) {
93+ return getEndpoints ("incoming-phone-numbers" , baseRestcommUrlWithoutAccount + "/" + accountSid
94+ + "/IncomingPhoneNumbers.json" , IncomingPhoneNumber .class );
95+ }
96+
5897 public RestEndpoints <XmppMapping > getXmppMappingsEndpoints () {
5998 return getEndpoints ("xmpp-mappings" , baseUrl + "/xmpp/xmppMappings" , XmppMapping .class );
6099 }
@@ -63,16 +102,16 @@ public RestEndpoints<ShortMessage> getShortMessagesEndpoints() {
63102 return getEndpoints ("messages" , baseRestcommUrl + "/SMS/Messages.json" , ShortMessage .class );
64103 }
65104
66- public RestEndpoints <ShortMessage > getShortMessagesEndpoints (String subAccountSid ) {
67- return getEndpoints ("messages" , baseRestcommUrlWithoutAccount + "/" + subAccountSid + "/SMS/Messages.json" ,
105+ public RestEndpoints <ShortMessage > getShortMessagesEndpoints (String accountSid ) {
106+ return getEndpoints ("messages" , baseRestcommUrlWithoutAccount + "/" + accountSid + "/SMS/Messages.json" ,
68107 ShortMessage .class );
69108 }
70109
71110 public RestEndpoints <ExtensionData > getExtensions () {
72111 return getEndpoints ("extensions" , baseUrl + "/restcomm/2012-04-24/ExtensionsConfiguration.json" , ExtensionData .class );
73112 }
74113
75- private <T > RestEndpoints <T > getEndpoints (String endpoint , String defaultUrl , Class <T > type ) {
114+ protected <T > RestEndpoints <T > getEndpoints (String endpoint , String defaultUrl , Class <T > type ) {
76115 String url = endpoints .getOrDefault (endpoint , defaultUrl );
77116 return new RestEndpoints (url , httpClient , type );
78117 }
0 commit comments