Skip to content
Merged

Dev #103

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
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@
<dependency>
<groupId>cn.jpush.api</groupId>
<artifactId>jiguang-common</artifactId>
<version>1.0.8</version>
<version>1.0.9</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
Expand Down
39 changes: 39 additions & 0 deletions src/main/java/cn/jpush/api/JPushConfig.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package cn.jpush.api;

import cn.jiguang.common.ClientConfig;

public class JPushConfig {

private static ClientConfig clientConfig = ClientConfig.getInstance();

private static JPushConfig instance = new JPushConfig();

public static final String ADMIN_HOST_NAME = "api.admin.host.name";
public static final String V1_APP_PATH = "jpush.v1.app.path";

private JPushConfig() {
clientConfig.put(ADMIN_HOST_NAME, "https://admin.jpush.cn");
clientConfig.put(V1_APP_PATH, "/v1/app");
}

public static JPushConfig getInstance() {
return instance;
}

public ClientConfig getClientConfig() {
return clientConfig;
}

public JPushConfig setAdminHostName(String hostName) {
clientConfig.put(ADMIN_HOST_NAME, hostName);
return this;
}

public void put(String key, Object value) {
clientConfig.put(key, value);
}

public Object get(String key) {
return clientConfig.get(key);
}
}
92 changes: 92 additions & 0 deletions src/main/java/cn/jpush/api/admin/AdminClient.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
package cn.jpush.api.admin;

import cn.jiguang.common.ServiceHelper;
import cn.jiguang.common.connection.HttpProxy;
import cn.jiguang.common.connection.IHttpClient;
import cn.jiguang.common.connection.NativeHttpClient;
import cn.jiguang.common.resp.APIConnectionException;
import cn.jiguang.common.resp.APIRequestException;
import cn.jiguang.common.resp.DefaultResult;
import cn.jiguang.common.resp.ResponseWrapper;
import cn.jiguang.common.utils.Preconditions;
import cn.jpush.api.JPushConfig;
import com.google.gson.Gson;
import com.google.gson.JsonObject;

/**
* Admin APIs
* https://docs.jiguang.cn/jpush/server/push/rest_api_admin_api_v1/
*/
public class AdminClient {

private IHttpClient mHttpClient;
private String mBasePath;
private String mV1AppPath;
private Gson mGson = new Gson();

/**
* Create a Push Client.
*
* @param appKey The KEY of one application on JPush.
* @param masterSecret API access secret of the appKey.
*/
public AdminClient(String appKey, String masterSecret) {
this(appKey, masterSecret, null, JPushConfig.getInstance());
}

public AdminClient(String appKey, String masterSecret, HttpProxy proxy) {
this(appKey, masterSecret, proxy, JPushConfig.getInstance());
}


public AdminClient(String appKey, String masterSecret, HttpProxy proxy, JPushConfig conf) {
ServiceHelper.checkBasic(appKey, masterSecret);
mBasePath = (String) conf.get(JPushConfig.ADMIN_HOST_NAME);
mV1AppPath = (String) conf.get(JPushConfig.V1_APP_PATH);
String authCode = ServiceHelper.getBasicAuthorization(appKey, masterSecret);
this.mHttpClient = new NativeHttpClient(authCode, proxy, conf.getClientConfig());
}

public void setHttpClient(IHttpClient client) {
this.mHttpClient = client;
}

/**
* Create an app under developer account
* @param appName app name
* @param packageName android package name
* @param groupName developer app group name
* @return {@link CreateAppResult}
* @throws APIConnectionException connect exception
* @throws APIRequestException request exception
*/
public CreateAppResult createApp(String appName, String packageName, String groupName)
throws APIConnectionException, APIRequestException {
Preconditions.checkArgument(null != appName, "app name should not be null");
Preconditions.checkArgument(null != packageName, "package name should not be null");
JsonObject jsonObject = new JsonObject();
jsonObject.addProperty("app_name", appName);
jsonObject.addProperty("android_package", packageName);
if (null != groupName) {
jsonObject.addProperty("group_name", groupName);
}
ResponseWrapper responseWrapper = mHttpClient.sendPost(mBasePath + mV1AppPath, mGson.toJson(jsonObject));
return CreateAppResult.fromResponse(responseWrapper, CreateAppResult.class);
}

/**
* Delete app by app key
* @param appKey app key
* @return {@link AppResult}
* @throws APIConnectionException connect exception
* @throws APIRequestException request exception
*/
public AppResult deleteApp(String appKey) throws APIConnectionException, APIRequestException {
ResponseWrapper responseWrapper = mHttpClient.sendDelete(mBasePath + mV1AppPath + "/" + appKey + "/delete");
return DefaultResult.fromResponse(responseWrapper, AppResult.class);
}

// public AppResult uploadCertificate(String appKey) throws APIConnectionException, APIRequestException {
//
// }
}
13 changes: 13 additions & 0 deletions src/main/java/cn/jpush/api/admin/AppResult.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package cn.jpush.api.admin;

import cn.jiguang.common.resp.BaseResult;
import com.google.gson.annotations.Expose;

public class AppResult extends BaseResult {

@Expose private String success;

public String getSuccess() {
return success;
}
}
22 changes: 22 additions & 0 deletions src/main/java/cn/jpush/api/admin/CreateAppResult.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package cn.jpush.api.admin;

import cn.jiguang.common.resp.BaseResult;
import com.google.gson.annotations.Expose;

public class CreateAppResult extends BaseResult {
@Expose private String app_key;
@Expose private boolean is_new_created;
@Expose private String android_package;

public String getApp_key() {
return app_key;
}

public boolean is_new_created() {
return is_new_created;
}

public String getAndroid_package() {
return android_package;
}
}
6 changes: 3 additions & 3 deletions src/main/java/cn/jpush/api/report/MessagesResult.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ public class MessagesResult extends BaseResult {

public static class Message {
@Expose
public long msg_id;
public String msg_id;
@Expose
public Android android;
@Expose
Expand Down Expand Up @@ -47,13 +47,13 @@ public static class Ios {
@Expose
public int apns_target;
@Expose
public int apns_received;
@Expose
public int click;
@Expose
public int target;
@Expose
public int received;
@Expose
public int msg_click;
}

public static class Winphone {
Expand Down
2 changes: 2 additions & 0 deletions src/main/java/cn/jpush/api/report/ReceivedsResult.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@ public static class Received {
@Expose
public int ios_apns_sent;
@Expose
public int ios_apns_received;
@Expose
public int ios_msg_received;
@Expose
public int wp_mpns_sent;
Expand Down
2 changes: 1 addition & 1 deletion src/test/java/cn/jpush/api/BaseTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
public abstract class BaseTest {

protected static final String APP_KEY = "d4ee2375846bc30fa51334f5";
protected static final String MASTER_SECRET = "cfb11ca45888cdd6388483f5";
protected static final String MASTER_SECRET = "3f045fd404d09a8a1f38d791";
protected static final String GROUP_MASTER_SECRET = "b11314807507e2bcfdeebe2e";
protected static final String GROUP_PUSH_KEY = "2c88a01e073a0fe4fc7b167c";

Expand Down
12 changes: 5 additions & 7 deletions src/test/java/cn/jpush/api/device/DeviceNormalRemoteTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -31,16 +31,16 @@ public void testUpdateDeviceTagAlias_add_remove_tags() throws APIConnectionExcep
tagsToAdd.add("tag1");
tagsToAdd.add("tag2");
Set<String> tagsToRemove = new HashSet<String>();
tagsToRemove.add("tag3");
tagsToRemove.add("tag4");
DefaultResult result = jpushClient.updateDeviceTagAlias(REGISTRATION_ID1, "alias1", tagsToAdd, tagsToRemove);
tagsToRemove.add("tag1");
tagsToRemove.add("tag2");
DefaultResult result = jpushClient.updateDeviceTagAlias(REGISTRATION_ID3, "alias1", tagsToAdd, tagsToRemove);
assertTrue(result.isResultOK());
}

@Test
@TestOrder(order = 110)
public void testGetDeviceTagAlias_1() throws Exception {
TagAliasResult result = jpushClient.getDeviceTagAlias(REGISTRATION_ID1);
TagAliasResult result = jpushClient.getDeviceTagAlias(REGISTRATION_ID3);

assertTrue(result.isResultOK());
assertEquals("alias not equals", "alias1", result.alias);
Expand Down Expand Up @@ -92,10 +92,8 @@ public void testAddRemoveDevicesFromTag() throws APIConnectionException, APIRequ
@Test
@TestOrder(order = 210)
public void testIsDeviceInTag() throws APIConnectionException, APIRequestException {
BooleanResult result = jpushClient.isDeviceInTag("tag3", REGISTRATION_ID1);
BooleanResult result = jpushClient.isDeviceInTag("tag2", REGISTRATION_ID3);
assertTrue("", result.result);
result = jpushClient.isDeviceInTag("tag3", REGISTRATION_ID2);
assertFalse("", result.result);
}

@Test
Expand Down