Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) a

## [3.0.0-RC3-SNAPSHOT]
### Added
- new Sendernames API
- new Contacts API
- Subusers API
- `pl.smsapi.exception.SmsapiErrorException` to handle API error responses
Expand Down Expand Up @@ -41,6 +42,11 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) a
- `pl.smsapi.api.SmsFactory.actionDelete` without parameters marked as deprecated
- `pl.smsapi.api.action.sms.SMSDelete` without parameters marked as deprecated
- `pl.smsapi.api.action.hlr.HLRCheckNumber` without parameters marked as deprecated
- `pl.smsapi.api.action.sender.SenderAdd` marked as deprecated, use `pl.smsapi.api.action.sms.sendernames.SendernameAdd` instead
- `pl.smsapi.api.action.sender.SenderDefault` marked as deprecated, use `pl.smsapi.api.action.sms.sendernames.SendernameMakeDefault` instead
- `pl.smsapi.api.action.sender.SenderDelete` marked as deprecated, use `pl.smsapi.api.action.sms.sendernames.SendernameDelete` instead
- `pl.smsapi.api.action.sender.SenderList` marked as deprecated, use `pl.smsapi.api.action.sms.sendernames.SendernamesList` instead
- `pl.smsapi.api.SenderFactory` marked as deprecated, use `pl.smsapi.api.action.sms.sendernames.SendernamesFactory` instead

### Removed
- legacy `phonebook.do` contacts API support
Expand Down
3 changes: 3 additions & 0 deletions src/main/java/pl/smsapi/api/SenderFactory.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@
import pl.smsapi.api.action.sender.SenderList;
import pl.smsapi.proxy.Proxy;

/**
* @deprecated use {@link pl.smsapi.api.action.sms.sendernames.SendernamesFactory} instead
*/
public class SenderFactory extends ActionFactory {

/**
Expand Down
3 changes: 3 additions & 0 deletions src/main/java/pl/smsapi/api/action/sender/SenderAdd.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@
import pl.smsapi.api.action.AbstractAction;
import pl.smsapi.api.response.CountableResponse;

/**
* @deprecated use {@link pl.smsapi.api.action.sms.sendernames.SendernameAdd} instead
*/
public class SenderAdd extends AbstractAction<CountableResponse> {

public SenderAdd() {
Expand Down
3 changes: 3 additions & 0 deletions src/main/java/pl/smsapi/api/action/sender/SenderDefault.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@
import pl.smsapi.api.action.AbstractAction;
import pl.smsapi.api.response.CountableResponse;

/**
* @deprecated use {@link pl.smsapi.api.action.sms.sendernames.SendernameMakeDefault} instead
*/
public class SenderDefault extends AbstractAction<CountableResponse> {

public SenderDefault() {
Expand Down
3 changes: 3 additions & 0 deletions src/main/java/pl/smsapi/api/action/sender/SenderDelete.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@
import pl.smsapi.api.action.AbstractAction;
import pl.smsapi.api.response.CountableResponse;

/**
* @deprecated use {@link pl.smsapi.api.action.sms.sendernames.SendernameDelete} instead
*/
public class SenderDelete extends AbstractAction<CountableResponse> {

public SenderDelete() {
Expand Down
4 changes: 3 additions & 1 deletion src/main/java/pl/smsapi/api/action/sender/SenderList.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@
import pl.smsapi.api.action.AbstractAction;
import pl.smsapi.api.response.SendersResponse;


/**
* @deprecated use {@link pl.smsapi.api.action.sms.sendernames.SendernamesList} instead
*/
public class SenderList extends AbstractAction<SendersResponse> {

public SenderList() {
Expand Down
30 changes: 30 additions & 0 deletions src/main/java/pl/smsapi/api/action/sms/sendernames/Sendername.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package pl.smsapi.api.action.sms.sendernames;

import org.json.JSONObject;
import pl.smsapi.api.response.Response;

public class Sendername implements Response {

public final String sender;
public final String status;
public final boolean isDefault;
public final String createdAt;

private Sendername(String sender, String status, boolean isDefault, String createdAt) {
this.sender = sender;
this.status = status;
this.isDefault = isDefault;
this.createdAt = createdAt;
}

static class SendernameFactory {
public Sendername createFrom(JSONObject jsonObject) {
return new Sendername(
jsonObject.getString("sender"),
jsonObject.getString("status"),
jsonObject.getBoolean("is_default"),
jsonObject.getString("created_at")
);
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package pl.smsapi.api.action.sms.sendernames;

import org.json.JSONObject;
import pl.smsapi.api.action.AbstractAction;

public class SendernameAdd extends AbstractAction<Sendername> {

public SendernameAdd(String sender) {
params.put("sender", sender);
}

@Override
protected String endPoint() {
return "sms/sendernames";
}

@Override
protected Sendername createResponse(String data) {
return new Sendername.SendernameFactory().createFrom(new JSONObject(data));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package pl.smsapi.api.action.sms.sendernames;

import pl.smsapi.api.action.AbstractAction;
import pl.smsapi.api.response.RawResponse;

public class SendernameDelete extends AbstractAction<RawResponse> {

private final String sender;

public SendernameDelete(String sender) {
this.sender = sender;
}

@Override
protected String endPoint() {
return "sms/sendernames/" + sender;
}

@Override
protected String httpMethod() {
return "DELETE";
}

@Override
protected RawResponse createResponse(String data) {
return new RawResponse(data);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package pl.smsapi.api.action.sms.sendernames;

import pl.smsapi.api.action.AbstractAction;
import pl.smsapi.api.response.RawResponse;

public class SendernameMakeDefault extends AbstractAction<RawResponse> {

private final String sender;

public SendernameMakeDefault(String sender) {
this.sender = sender;
}

@Override
protected String endPoint() {
return "sms/sendernames/" + sender + "/commands/make_default";
}

@Override
protected RawResponse createResponse(String data) {
return new RawResponse(data);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package pl.smsapi.api.action.sms.sendernames;

import org.json.JSONArray;
import org.json.JSONObject;
import pl.smsapi.api.response.ListResponse;

public class Sendernames extends ListResponse<Sendername> {
private Sendernames(int count, JSONArray jsonArray) {
super(count, jsonArray);
}

@Override
protected Sendername buildItem(JSONObject jsonObject) {
return new Sendername.SendernameFactory().createFrom(jsonObject);
}

static class SendernamesFromJsonFactory {
public Sendernames createFrom(JSONObject jsonObject) {
return new Sendernames(
jsonObject.getInt("size"),
jsonObject.getJSONArray("collection")
);
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
package pl.smsapi.api.action.sms.sendernames;

import pl.smsapi.Client;
import pl.smsapi.api.ActionFactory;
import pl.smsapi.proxy.Proxy;

public class SendernamesFactory extends ActionFactory {

public SendernamesFactory(Client client, Proxy proxy) {
super(client, proxy);
}

public SendernameAdd actionAdd(String sender) {
SendernameAdd action = new SendernameAdd(sender);
action.client(client);
action.proxy(proxy);
return action;
}

public SendernameDelete actionDelete(String sender) {
SendernameDelete action = new SendernameDelete(sender);
action.client(client);
action.proxy(proxy);
return action;
}

public SendernameMakeDefault actionMakeDefault(String sender) {
SendernameMakeDefault action = new SendernameMakeDefault(sender);
action.client(client);
action.proxy(proxy);
return action;
}

public SendernamesList actionList() {
SendernamesList action = new SendernamesList();
action.client(client);
action.proxy(proxy);
return action;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package pl.smsapi.api.action.sms.sendernames;

import org.json.JSONObject;
import pl.smsapi.api.action.AbstractAction;

public class SendernamesList extends AbstractAction<Sendernames> {
@Override
protected String endPoint() {
return "sms/sendernames";
}

@Override
protected String httpMethod() {
return "GET";
}

@Override
protected Sendernames createResponse(String data) {
return new Sendernames.SendernamesFromJsonFactory().createFrom(new JSONObject(data));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package pl.smsapi.api.action.sms.sendernames;

import org.junit.Test;
import pl.smsapi.exception.SmsapiException;
import pl.smsapi.test.doubles.ClientStub;
import pl.smsapi.test.doubles.ProxyRequestSpy;

import java.util.HashMap;

import static org.junit.Assert.assertEquals;

public class SendernameAddTest {

@Test
public void executeAddSendernameRequest() throws SmsapiException {
SendernameAdd action = new SendernameAdd("java-client");

ProxyRequestSpy requestSpy = executeAction(action);

assertEquals("POST", requestSpy.requestMethod);
assertEquals("sms/sendernames", requestSpy.requestEndpoint);
HashMap<String, String> expectedRequestPayload = new HashMap<>();
expectedRequestPayload.put("sender", "java-client");
assertEquals(expectedRequestPayload, requestSpy.requestPayload);
}

private ProxyRequestSpy executeAction(SendernameAdd action) throws SmsapiException {
ProxyRequestSpy requestStub = new ProxyRequestSpy(SendernameJsonMother.create());
action.client(new ClientStub());
action.proxy(requestStub);
action.execute();
return requestStub;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package pl.smsapi.api.action.sms.sendernames;

import org.junit.Test;
import pl.smsapi.exception.SmsapiException;
import pl.smsapi.test.doubles.ClientStub;
import pl.smsapi.test.doubles.ProxyRequestSpy;

import java.util.HashMap;

import static org.junit.Assert.assertEquals;

public class SendernameDeleteTest {

@Test
public void executeDeleteSendernameRequest() throws SmsapiException {
SendernameDelete action = new SendernameDelete("java-client");

ProxyRequestSpy requestSpy = executeAction(action);

assertEquals("DELETE", requestSpy.requestMethod);
assertEquals("sms/sendernames/java-client", requestSpy.requestEndpoint);
HashMap<String, String> expectedRequestPayload = new HashMap<>();
assertEquals(expectedRequestPayload, requestSpy.requestPayload);
}

private ProxyRequestSpy executeAction(SendernameDelete action) throws SmsapiException {
ProxyRequestSpy requestStub = new ProxyRequestSpy("");
action.client(new ClientStub());
action.proxy(requestStub);
action.execute();
return requestStub;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package pl.smsapi.api.action.sms.sendernames;

public class SendernameJsonMother {

public static String create() {
return
"{" +
" \"created_at\": \"2024-08-02T07:16:35.877Z\"," +
" \"is_default\": true," +
" \"sender\": \"dVpWyv 2K\"," +
" \"status\": \"active\"" +
"}";
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package pl.smsapi.api.action.sms.sendernames;

import org.junit.Test;
import pl.smsapi.exception.SmsapiException;
import pl.smsapi.test.doubles.ClientStub;
import pl.smsapi.test.doubles.ProxyRequestSpy;

import java.util.HashMap;

import static org.junit.Assert.assertEquals;

public class SendernameMakeDefaultTest {

@Test
public void executeMakeDefaultSendernameRequest() throws SmsapiException {
SendernameMakeDefault action = new SendernameMakeDefault("java-client");

ProxyRequestSpy requestSpy = executeAction(action);

assertEquals("POST", requestSpy.requestMethod);
assertEquals("sms/sendernames/java-client/commands/make_default", requestSpy.requestEndpoint);
HashMap<String, String> expectedRequestPayload = new HashMap<>();
assertEquals(expectedRequestPayload, requestSpy.requestPayload);
}

private ProxyRequestSpy executeAction(SendernameMakeDefault action) throws SmsapiException {
ProxyRequestSpy requestStub = new ProxyRequestSpy("");
action.client(new ClientStub());
action.proxy(requestStub);
action.execute();
return requestStub;
}
}
Loading