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 @@ -4,7 +4,13 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).

## [3.0.0-RC3-SNAPSHOT]
### Added
- Subusers API

### Changed
- `pl.smsapi.api.UserFactory.actionAdd` marked as deprecated, use `pl.smsapi.api.action.subusers.SubusersFactory.actionAdd` instead
- `pl.smsapi.api.UserFactory.actionEdit` marked as deprecated, use `pl.smsapi.api.action.subusers.SubusersFactory.actionEdit` instead
- `pl.smsapi.api.UserFactory.actionList` marked as deprecated, use `pl.smsapi.api.action.subusers.SubusersFactory.actionList` instead
- `pl.smsapi.BasicAuthClient` marked as deprecated
- non-proxy action factories marked as deprecated

Expand Down
13 changes: 13 additions & 0 deletions src/main/java/pl/smsapi/api/UserFactory.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package pl.smsapi.api;

import pl.smsapi.Client;
import pl.smsapi.api.action.subusers.SubusersFactory;
import pl.smsapi.api.action.user.UserAdd;
import pl.smsapi.api.action.user.UserEdit;
import pl.smsapi.api.action.user.UserGetPoints;
Expand All @@ -21,20 +22,32 @@ public UserFactory(Client client, Proxy proxy) {
super(client, proxy);
}

/**
* @deprecated use {@link SubusersFactory#actionList()} instead
*/
@Deprecated
public UserList actionList() {
UserList action = new UserList();
action.client(client);
action.proxy(proxy);
return action;
}

/**
* @deprecated use {@link SubusersFactory#actionAdd(String, String)} ()} instead
*/
@Deprecated
public UserAdd actionAdd() {
UserAdd action = new UserAdd();
action.client(client);
action.proxy(proxy);
return action;
}

/**
* @deprecated use {@link SubusersFactory#actionEdit(String)} ()} instead
*/
@Deprecated
public UserEdit actionEdit(String username) {
UserEdit action = new UserEdit();
action.client(client);
Expand Down
3 changes: 2 additions & 1 deletion src/main/java/pl/smsapi/api/action/AbstractAction.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import org.json.JSONObject;
import pl.smsapi.Client;
import pl.smsapi.api.authenticationStrategy.AuthenticationStrategy;
import pl.smsapi.api.response.Response;
import pl.smsapi.exception.*;
import pl.smsapi.proxy.Proxy;

Expand All @@ -14,7 +15,7 @@
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public abstract class AbstractAction<T> {
public abstract class AbstractAction<T extends Response> {

public final static String RESPONSE_PACKAGE_NAME = "pl.smsapi.api.response";

Expand Down
3 changes: 2 additions & 1 deletion src/main/java/pl/smsapi/api/action/AbstractSendAction.java
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
package pl.smsapi.api.action;

import pl.smsapi.StringUtils;
import pl.smsapi.api.response.Response;

import java.util.Calendar;

public abstract class AbstractSendAction<T, TResponse> extends AbstractAction<TResponse> {
public abstract class AbstractSendAction<T, TResponse extends Response> extends AbstractAction<TResponse> {

/**
* Set mobile phone number of the recipients.
Expand Down
35 changes: 35 additions & 0 deletions src/main/java/pl/smsapi/api/action/subusers/Subuser.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package pl.smsapi.api.action.subusers;

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

public class Subuser implements Response {
public final String id;
public final String username;
public final boolean active;
public final String description;
public final double pointsFromAccount;
public final double pointsPerMonth;

private Subuser(String id, String username, boolean active, String description, double pointsFromAccount, double pointsPerMonth) {
this.id = id;
this.username = username;
this.active = active;
this.description = description;
this.pointsFromAccount = pointsFromAccount;
this.pointsPerMonth = pointsPerMonth;
}

static class SubuserFromJsonFactory {
public Subuser createFrom(JSONObject jsonObject) {
return new Subuser(
jsonObject.getString("id"),
jsonObject.getString("username"),
jsonObject.getBoolean("active"),
jsonObject.optString("description"),
jsonObject.getJSONObject("points").getDouble("from_account"),
jsonObject.getJSONObject("points").getDouble("per_month")
);
}
}
}
45 changes: 45 additions & 0 deletions src/main/java/pl/smsapi/api/action/subusers/SubuserAdd.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package pl.smsapi.api.action.subusers;

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

public class SubuserAdd extends AbstractAction<Subuser> {
public SubuserAdd(String username, String password) {
params.put("credentials[username]", username);
params.put("credentials[password]", password);
}

@Override
protected String endPoint() {
return "subusers";
}

@Override
protected Subuser createResponse(String data) {
return new Subuser.SubuserFromJsonFactory().createFrom(new JSONObject(data));
}

public void withApiPassword(String apiPassword) {
params.put("credentials[api_password]", apiPassword);
}

public void asActive() {
params.put("active", "1");
}

public void asInactive() {
params.put("active", "0");
}

public void withDescription(String description) {
params.put("description", description);
}

public void withPointsFromAccount(double pointsFromAccount) {
params.put("points[from_account]", String.valueOf(pointsFromAccount));
}

public void withPointsPerMonth(double pointsPerMonth) {
params.put("points[per_month]", String.valueOf(pointsPerMonth));
}
}
27 changes: 27 additions & 0 deletions src/main/java/pl/smsapi/api/action/subusers/SubuserDelete.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package pl.smsapi.api.action.subusers;

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

public class SubuserDelete extends AbstractAction<Response> {
private final String id;

public SubuserDelete(String id) {
this.id = id;
}

@Override
protected String endPoint() {
return "subusers/" + id;
}

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

@Override
protected Response createResponse(String data) {
return null;
}
}
55 changes: 55 additions & 0 deletions src/main/java/pl/smsapi/api/action/subusers/SubuserEdit.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
package pl.smsapi.api.action.subusers;

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

public class SubuserEdit extends AbstractAction<Subuser> {
private final String id;

public SubuserEdit(String id) {
this.id = id;
}

@Override
protected String endPoint() {
return "subusers/" + id;
}

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

@Override
protected Subuser createResponse(String data) {
return new Subuser.SubuserFromJsonFactory().createFrom(new JSONObject(data));
}

public void withPassword(String password) {
params.put("credentials[password]", password);
}

public void withApiPassword(String apiPassword) {
params.put("credentials[api_password]", apiPassword);
}

public void asActive() {
params.put("active", "1");
}

public void asInactive() {
params.put("active", "0");
}

public void withDescription(String description) {
params.put("description", description);
}

public void withPointsFromAccount(double pointsFromAccount) {
params.put("points[from_account]", String.valueOf(pointsFromAccount));
}

public void withPointsPerMonth(double pointsPerMonth) {
params.put("points[per_month]", String.valueOf(pointsPerMonth));
}
}
27 changes: 27 additions & 0 deletions src/main/java/pl/smsapi/api/action/subusers/SubuserGet.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package pl.smsapi.api.action.subusers;

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

public class SubuserGet extends AbstractAction<Subuser> {
private final String id;

public SubuserGet(String id) {
this.id = id;
}

@Override
protected String endPoint() {
return "subusers/" + id;
}

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

@Override
protected Subuser createResponse(String data) {
return new Subuser.SubuserFromJsonFactory().createFrom(new JSONObject(data));
}
}
25 changes: 25 additions & 0 deletions src/main/java/pl/smsapi/api/action/subusers/Subusers.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package pl.smsapi.api.action.subusers;

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

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

@Override
protected Subuser buildItem(JSONObject jsonObject) {
return new Subuser.SubuserFromJsonFactory().createFrom(jsonObject);
}

static class SubusersFromJsonFactory {
public Subusers createFrom(JSONObject jsonObject) {
return new Subusers(
jsonObject.getInt("size"),
jsonObject.getJSONArray("collection")
);
}
}
}
47 changes: 47 additions & 0 deletions src/main/java/pl/smsapi/api/action/subusers/SubusersFactory.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
package pl.smsapi.api.action.subusers;

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

public class SubusersFactory extends ActionFactory {

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

public SubuserAdd actionAdd(String username, String password) {
SubuserAdd action = new SubuserAdd(username, password);
action.client(client);
action.proxy(proxy);
return action;
}

public SubuserGet actionGet(String id) {
SubuserGet action = new SubuserGet(id);
action.client(client);
action.proxy(proxy);
return action;
}

public SubuserEdit actionEdit(String id) {
SubuserEdit action = new SubuserEdit(id);
action.client(client);
action.proxy(proxy);
return action;
}

public SubuserDelete actionDelete(String id) {
SubuserDelete action = new SubuserDelete(id);
action.client(client);
action.proxy(proxy);
return action;
}

public SubusersList actionList() {
SubusersList action = new SubusersList();
action.client(client);
action.proxy(proxy);
return action;
}
}
21 changes: 21 additions & 0 deletions src/main/java/pl/smsapi/api/action/subusers/SubusersList.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package pl.smsapi.api.action.subusers;

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

public class SubusersList extends AbstractAction<Subusers> {
@Override
protected String endPoint() {
return "subusers";
}

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

@Override
protected Subusers createResponse(String data) {
return new Subusers.SubusersFromJsonFactory().createFrom(new JSONObject(data));
}
}
4 changes: 4 additions & 0 deletions src/main/java/pl/smsapi/api/action/user/UserAdd.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
package pl.smsapi.api.action.user;

/**
* @deprecated use {@link pl.smsapi.api.action.subusers.SubuserAdd()} instead
*/
@Deprecated
public class UserAdd extends AbstractUserControl<UserAdd> {

/**
Expand Down
4 changes: 4 additions & 0 deletions src/main/java/pl/smsapi/api/action/user/UserEdit.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
package pl.smsapi.api.action.user;

/**
* @deprecated use {@link pl.smsapi.api.action.subusers.SubuserEdit()} instead
*/
@Deprecated
public class UserEdit extends AbstractUserControl<UserEdit> {

/**
Expand Down
Loading