Skip to content

Commit baa9386

Browse files
authored
Merge pull request #23 from smsapi/hlr-api
Hlr API
2 parents d421cc0 + 0452abb commit baa9386

8 files changed

Lines changed: 158 additions & 50 deletions

File tree

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) a
1010
- `pl.smsapi.exception.SmsapiErrorException` to handle API error responses
1111
- `date_sent` to SMS/MMS send action responses
1212
- `time_restriction` parameter for SMS send action
13+
- HLR action factory, `HlrFactory`
14+
- HLR with IDX support
1315

1416
### Changed
1517
- `pl.smsapi.api.UserFactory.actionAdd` marked as deprecated, use `pl.smsapi.api.action.subusers.SubusersFactory.actionAdd` instead
@@ -38,6 +40,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) a
3840
- `pl.smsapi.api.action.sms.SMSGet` without parameters marked as deprecated
3941
- `pl.smsapi.api.SmsFactory.actionDelete` without parameters marked as deprecated
4042
- `pl.smsapi.api.action.sms.SMSDelete` without parameters marked as deprecated
43+
- `pl.smsapi.api.action.hlr.HLRCheckNumber` without parameters marked as deprecated
4144

4245
### Removed
4346
- legacy `phonebook.do` contacts API support

src/main/java/pl/smsapi/api/action/hlr/HLRCheckNumber.java

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,35 @@
66

77
public class HLRCheckNumber extends AbstractAction<CheckNumberResponse> {
88

9+
/**
10+
* @deprecated use {@link HLRCheckNumber(String)} instead
11+
*/
12+
@Deprecated
913
public HLRCheckNumber() {
1014
setJson(true);
1115
}
1216

17+
public HLRCheckNumber(String phoneNumber) {
18+
setJson(true);
19+
params.put("number", phoneNumber);
20+
}
1321

22+
/**
23+
* @deprecated use {@link HLRCheckNumber(String)} instead
24+
*/
25+
@Deprecated
1426
public HLRCheckNumber setNumber(String number) {
1527
params.put("number", number);
1628
return this;
1729
}
1830

19-
/*public HLRCheckNumber setNumber(String[] number) {
20-
params.put("number", StringUtils.join(number, ','));
21-
return this;
22-
}*/
31+
/**
32+
* Set optional custom value sent with HLR and sent back in CALLBACK.
33+
*/
34+
public HLRCheckNumber setIDx(String idx) {
35+
params.put("idx", idx);
36+
return this;
37+
}
2338

2439
protected CheckNumberResponse createResponse(String data) {
2540
JSONObject jsonObject = new JSONObject(data);
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package pl.smsapi.api.action.hlr;
2+
3+
import pl.smsapi.Client;
4+
import pl.smsapi.api.ActionFactory;
5+
import pl.smsapi.proxy.Proxy;
6+
7+
public class HlrFactory extends ActionFactory {
8+
9+
public HlrFactory(Client client, Proxy proxy) {
10+
super(client, proxy);
11+
}
12+
13+
public HLRCheckNumber actionCheckNumber(String phoneNumber) {
14+
HLRCheckNumber action = new HLRCheckNumber(phoneNumber);
15+
action.client(client);
16+
action.proxy(proxy);
17+
18+
return action;
19+
}
20+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package pl.smsapi.api.action.hlr;
2+
3+
public class CheckNumberMother {
4+
5+
public static String create() {
6+
return
7+
"{" +
8+
" \"count\": 1," +
9+
" \"list\": [" +
10+
" {" +
11+
" \"date\": 1712565008," +
12+
" \"id\": \"1\"," +
13+
" \"info\": \"Resource description\"," +
14+
" \"mcc\": 260," +
15+
" \"mnc\": 3," +
16+
" \"number\": \"500600700\"," +
17+
" \"ported\": 0," +
18+
" \"ported_from\": 3," +
19+
" \"price\": 0.04," +
20+
" \"status\": \"OK\"" +
21+
" }" +
22+
" ]" +
23+
"}";
24+
}
25+
}

src/test/java/pl/smsapi/test/unit/response/CheckNumberResponseTest.java renamed to src/test/java/pl/smsapi/api/action/hlr/CheckNumberResponseTest.java

Lines changed: 6 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
1-
package pl.smsapi.test.unit.response;
1+
package pl.smsapi.api.action.hlr;
22

33
import org.junit.Test;
4-
import pl.smsapi.api.action.hlr.HLRCheckNumber;
54
import pl.smsapi.api.response.CheckNumberResponse;
65
import pl.smsapi.api.response.NumberResponse;
76
import pl.smsapi.exception.SmsapiException;
@@ -17,34 +16,16 @@ public class CheckNumberResponseTest {
1716

1817
@Test
1918
public void deserialize_non_empty_response() throws SmsapiException {
20-
HLRCheckNumber action = new HLRCheckNumber();
19+
HLRCheckNumber action = new HLRCheckNumber("500600700");
2120
action.client(new ClientStub());
22-
action.proxy(new ProxyResponseStub(
23-
"{" +
24-
" \"count\": 1," +
25-
" \"list\": [" +
26-
" {" +
27-
" \"date\": 1712565008," +
28-
" \"id\": \"1\"," +
29-
" \"info\": \"Resource description\"," +
30-
" \"mcc\": 260," +
31-
" \"mnc\": 3," +
32-
" \"number\": \"500600700\"," +
33-
" \"ported\": 0," +
34-
" \"ported_from\": 3," +
35-
" \"price\": 0.04," +
36-
" \"status\": \"OK\"" +
37-
" }" +
38-
" ]" +
39-
"}"
40-
));
21+
action.proxy(new ProxyResponseStub(CheckNumberMother.create()));
4122

4223
CheckNumberResponse response = action.execute();
4324

44-
assertFalse(response.getList().isEmpty());
45-
assertEquals(1, response.getCount());
25+
assertFalse(response.list.isEmpty());
26+
assertEquals(1, response.count);
4627

47-
Optional<NumberResponse> hlr1 = response.getList().stream().filter(
28+
Optional<NumberResponse> hlr1 = response.list.stream().filter(
4829
hlrResponse -> hlrResponse.getId().equals("1")
4930
).findFirst();
5031
assertTrue(hlr1.isPresent());
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package pl.smsapi.api.action.hlr;
2+
3+
import org.junit.Test;
4+
import pl.smsapi.api.action.sms.StatusJsonMother;
5+
import pl.smsapi.exception.SmsapiException;
6+
import pl.smsapi.test.doubles.ClientStub;
7+
import pl.smsapi.test.doubles.ProxyRequestSpy;
8+
9+
import java.util.HashMap;
10+
11+
import static org.junit.Assert.assertEquals;
12+
13+
public class HLRCheckNumberTest {
14+
15+
@Test
16+
public void executeCheckNumberRequest() throws SmsapiException {
17+
ProxyRequestSpy requestStub = new ProxyRequestSpy(StatusJsonMother.create());
18+
HLRCheckNumber action = new HLRCheckNumber("500600700");
19+
action.client(new ClientStub());
20+
action.proxy(requestStub);
21+
22+
action.execute();
23+
24+
assertEquals("POST", requestStub.requestMethod);
25+
assertEquals("hlrsync.do", requestStub.requestEndpoint);
26+
HashMap<String, String> expectedRequestPayload = new HashMap<>();
27+
expectedRequestPayload.put("number", "500600700");
28+
expectedRequestPayload.put("format", "json");
29+
assertEquals(expectedRequestPayload, requestStub.requestPayload);
30+
}
31+
32+
@Test
33+
public void executeCheckNumberWithOptionalFieldsRequest() throws SmsapiException {
34+
ProxyRequestSpy requestStub = new ProxyRequestSpy(StatusJsonMother.create());
35+
HLRCheckNumber action = new HLRCheckNumber("500600700");
36+
action.client(new ClientStub());
37+
action.proxy(requestStub);
38+
action.setIDx("example-user-provided-id-123");
39+
40+
action.execute();
41+
42+
assertEquals("POST", requestStub.requestMethod);
43+
assertEquals("hlrsync.do", requestStub.requestEndpoint);
44+
HashMap<String, String> expectedRequestPayload = new HashMap<>();
45+
expectedRequestPayload.put("number", "500600700");
46+
expectedRequestPayload.put("format", "json");
47+
expectedRequestPayload.put("idx", "example-user-provided-id-123");
48+
assertEquals(expectedRequestPayload, requestStub.requestPayload);
49+
}
50+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package pl.smsapi.api.action.hlr;
2+
3+
import org.junit.Before;
4+
import org.junit.Ignore;
5+
import org.junit.Test;
6+
import pl.smsapi.api.response.CheckNumberResponse;
7+
import pl.smsapi.exception.SmsapiException;
8+
import pl.smsapi.test.TestSmsapi;
9+
10+
import static org.junit.Assert.*;
11+
12+
@Ignore
13+
public class HlrFactoryTest extends TestSmsapi {
14+
15+
HlrFactory apiFactory;
16+
17+
@Before
18+
public void setUp() {
19+
super.setUp();
20+
apiFactory = new HlrFactory(client, proxy);
21+
}
22+
23+
@Test
24+
public void checkNumberTest() throws SmsapiException {
25+
HLRCheckNumber actionCheckNumber = apiFactory
26+
.actionCheckNumber("500600700")
27+
.setIDx("example-user-provided-id-123");
28+
29+
CheckNumberResponse responseCheckNumber = actionCheckNumber.execute();
30+
31+
assertNotNull(responseCheckNumber);
32+
assertEquals(1, responseCheckNumber.count);
33+
assertTrue(responseCheckNumber.list.stream().anyMatch(messageResponse -> messageResponse.getNumber().equals("500600700")));
34+
}
35+
}

src/test/java/pl/smsapi/test/run/HlrTest.java

Lines changed: 0 additions & 21 deletions
This file was deleted.

0 commit comments

Comments
 (0)