Skip to content

Commit 117b4f1

Browse files
committed
Adds new Sendername API
1 parent bdd2a83 commit 117b4f1

15 files changed

Lines changed: 460 additions & 0 deletions

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) a
55

66
## [3.0.0-RC3-SNAPSHOT]
77
### Added
8+
- new Sendernames API
89
- new Contacts API
910
- Subusers API
1011
- `pl.smsapi.exception.SmsapiErrorException` to handle API error responses
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package pl.smsapi.api.action.sms.sendernames;
2+
3+
import org.json.JSONObject;
4+
import pl.smsapi.api.response.Response;
5+
6+
public class Sendername implements Response {
7+
8+
public final String sender;
9+
public final String status;
10+
public final boolean isDefault;
11+
public final String createdAt;
12+
13+
private Sendername(String sender, String status, boolean isDefault, String createdAt) {
14+
this.sender = sender;
15+
this.status = status;
16+
this.isDefault = isDefault;
17+
this.createdAt = createdAt;
18+
}
19+
20+
static class SendernameFactory {
21+
public Sendername createFrom(JSONObject jsonObject) {
22+
return new Sendername(
23+
jsonObject.getString("sender"),
24+
jsonObject.getString("status"),
25+
jsonObject.getBoolean("is_default"),
26+
jsonObject.getString("created_at")
27+
);
28+
}
29+
}
30+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package pl.smsapi.api.action.sms.sendernames;
2+
3+
import org.json.JSONObject;
4+
import pl.smsapi.api.action.AbstractAction;
5+
6+
public class SendernameAdd extends AbstractAction<Sendername> {
7+
8+
public SendernameAdd(String sender) {
9+
params.put("sender", sender);
10+
}
11+
12+
@Override
13+
protected String endPoint() {
14+
return "sms/sendernames";
15+
}
16+
17+
@Override
18+
protected Sendername createResponse(String data) {
19+
return new Sendername.SendernameFactory().createFrom(new JSONObject(data));
20+
}
21+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package pl.smsapi.api.action.sms.sendernames;
2+
3+
import pl.smsapi.api.action.AbstractAction;
4+
import pl.smsapi.api.response.RawResponse;
5+
6+
public class SendernameDelete extends AbstractAction<RawResponse> {
7+
8+
private final String sender;
9+
10+
public SendernameDelete(String sender) {
11+
this.sender = sender;
12+
}
13+
14+
@Override
15+
protected String endPoint() {
16+
return "sms/sendernames/" + sender;
17+
}
18+
19+
@Override
20+
protected String httpMethod() {
21+
return "DELETE";
22+
}
23+
24+
@Override
25+
protected RawResponse createResponse(String data) {
26+
return new RawResponse(data);
27+
}
28+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package pl.smsapi.api.action.sms.sendernames;
2+
3+
import pl.smsapi.api.action.AbstractAction;
4+
import pl.smsapi.api.response.RawResponse;
5+
6+
public class SendernameMakeDefault extends AbstractAction<RawResponse> {
7+
8+
private final String sender;
9+
10+
public SendernameMakeDefault(String sender) {
11+
this.sender = sender;
12+
}
13+
14+
@Override
15+
protected String endPoint() {
16+
return "sms/sendernames/" + sender + "/commands/make_default";
17+
}
18+
19+
@Override
20+
protected RawResponse createResponse(String data) {
21+
return new RawResponse(data);
22+
}
23+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package pl.smsapi.api.action.sms.sendernames;
2+
3+
import org.json.JSONArray;
4+
import org.json.JSONObject;
5+
import pl.smsapi.api.response.ListResponse;
6+
7+
public class Sendernames extends ListResponse<Sendername> {
8+
private Sendernames(int count, JSONArray jsonArray) {
9+
super(count, jsonArray);
10+
}
11+
12+
@Override
13+
protected Sendername buildItem(JSONObject jsonObject) {
14+
return new Sendername.SendernameFactory().createFrom(jsonObject);
15+
}
16+
17+
static class SendernamesFromJsonFactory {
18+
public Sendernames createFrom(JSONObject jsonObject) {
19+
return new Sendernames(
20+
jsonObject.getInt("size"),
21+
jsonObject.getJSONArray("collection")
22+
);
23+
}
24+
}
25+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package pl.smsapi.api.action.sms.sendernames;
2+
3+
import pl.smsapi.Client;
4+
import pl.smsapi.api.ActionFactory;
5+
import pl.smsapi.proxy.Proxy;
6+
7+
public class SendernamesFactory extends ActionFactory {
8+
9+
public SendernamesFactory(Client client, Proxy proxy) {
10+
super(client, proxy);
11+
}
12+
13+
public SendernameAdd actionAdd(String sender) {
14+
SendernameAdd action = new SendernameAdd(sender);
15+
action.client(client);
16+
action.proxy(proxy);
17+
return action;
18+
}
19+
20+
public SendernameDelete actionDelete(String sender) {
21+
SendernameDelete action = new SendernameDelete(sender);
22+
action.client(client);
23+
action.proxy(proxy);
24+
return action;
25+
}
26+
27+
public SendernameMakeDefault actionMakeDefault(String sender) {
28+
SendernameMakeDefault action = new SendernameMakeDefault(sender);
29+
action.client(client);
30+
action.proxy(proxy);
31+
return action;
32+
}
33+
34+
public SendernamesList actionList() {
35+
SendernamesList action = new SendernamesList();
36+
action.client(client);
37+
action.proxy(proxy);
38+
return action;
39+
}
40+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package pl.smsapi.api.action.sms.sendernames;
2+
3+
import org.json.JSONObject;
4+
import pl.smsapi.api.action.AbstractAction;
5+
6+
public class SendernamesList extends AbstractAction<Sendernames> {
7+
@Override
8+
protected String endPoint() {
9+
return "sms/sendernames";
10+
}
11+
12+
@Override
13+
protected String httpMethod() {
14+
return "GET";
15+
}
16+
17+
@Override
18+
protected Sendernames createResponse(String data) {
19+
return new Sendernames.SendernamesFromJsonFactory().createFrom(new JSONObject(data));
20+
}
21+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package pl.smsapi.api.action.sms.sendernames;
2+
3+
import org.junit.Test;
4+
import pl.smsapi.exception.SmsapiException;
5+
import pl.smsapi.test.doubles.ClientStub;
6+
import pl.smsapi.test.doubles.ProxyRequestSpy;
7+
8+
import java.util.HashMap;
9+
10+
import static org.junit.Assert.assertEquals;
11+
12+
public class SendernameAddTest {
13+
14+
@Test
15+
public void executeAddSendernameRequest() throws SmsapiException {
16+
SendernameAdd action = new SendernameAdd("java-client");
17+
18+
ProxyRequestSpy requestSpy = executeAction(action);
19+
20+
assertEquals("POST", requestSpy.requestMethod);
21+
assertEquals("sms/sendernames", requestSpy.requestEndpoint);
22+
HashMap<String, String> expectedRequestPayload = new HashMap<>();
23+
expectedRequestPayload.put("sender", "java-client");
24+
assertEquals(expectedRequestPayload, requestSpy.requestPayload);
25+
}
26+
27+
private ProxyRequestSpy executeAction(SendernameAdd action) throws SmsapiException {
28+
ProxyRequestSpy requestStub = new ProxyRequestSpy(SendernameJsonMother.create());
29+
action.client(new ClientStub());
30+
action.proxy(requestStub);
31+
action.execute();
32+
return requestStub;
33+
}
34+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package pl.smsapi.api.action.sms.sendernames;
2+
3+
import org.junit.Test;
4+
import pl.smsapi.exception.SmsapiException;
5+
import pl.smsapi.test.doubles.ClientStub;
6+
import pl.smsapi.test.doubles.ProxyRequestSpy;
7+
8+
import java.util.HashMap;
9+
10+
import static org.junit.Assert.assertEquals;
11+
12+
public class SendernameDeleteTest {
13+
14+
@Test
15+
public void executeDeleteSendernameRequest() throws SmsapiException {
16+
SendernameDelete action = new SendernameDelete("java-client");
17+
18+
ProxyRequestSpy requestSpy = executeAction(action);
19+
20+
assertEquals("DELETE", requestSpy.requestMethod);
21+
assertEquals("sms/sendernames/java-client", requestSpy.requestEndpoint);
22+
HashMap<String, String> expectedRequestPayload = new HashMap<>();
23+
assertEquals(expectedRequestPayload, requestSpy.requestPayload);
24+
}
25+
26+
private ProxyRequestSpy executeAction(SendernameDelete action) throws SmsapiException {
27+
ProxyRequestSpy requestStub = new ProxyRequestSpy("");
28+
action.client(new ClientStub());
29+
action.proxy(requestStub);
30+
action.execute();
31+
return requestStub;
32+
}
33+
}

0 commit comments

Comments
 (0)