Skip to content

Commit

Permalink
subscribing to authing events
Browse files Browse the repository at this point in the history
  • Loading branch information
smile365 committed Feb 21, 2023
1 parent 78b2223 commit bd836aa
Show file tree
Hide file tree
Showing 8 changed files with 135 additions and 11 deletions.
7 changes: 6 additions & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,11 @@
<version>2.3.0</version>
</dependency>

<dependency>
<groupId>org.java-websocket</groupId>
<artifactId>Java-WebSocket</artifactId>
<version>1.5.3</version>
</dependency>
</dependencies>

<build>
Expand Down Expand Up @@ -182,4 +187,4 @@
</repository>
</distributionManagement>

</project>
</project>
17 changes: 10 additions & 7 deletions src/main/java/cn/authing/sdk/java/client/BaseClient.java
Original file line number Diff line number Diff line change
@@ -1,31 +1,34 @@
package cn.authing.sdk.java.client;

import cn.authing.sdk.java.model.Receiver;
import cn.authing.sdk.java.model.AuthingClientOptions;
import cn.authing.sdk.java.model.AuthingRequestConfig;
import cn.authing.sdk.java.util.JsonUtils;


/**
* @author luojielin
*/
public class BaseClient {

protected AuthingClientOptions options;

public BaseClient(AuthingClientOptions options) {
this.options = options;
}

public static <T> T deserialize(String content, Class<T> valueType) {
return JsonUtils.deserialize(content, valueType);
}

public static String serialize(Object value) {
return JsonUtils.serialize(value);
}

public String request(AuthingRequestConfig config) {
return options.doRequest(config.getUrl(), config.getMethod(), config.getHeaders(), config.getBody());
}



public void subEvent(String eventCode, Receiver receiver){
}
}
39 changes: 36 additions & 3 deletions src/main/java/cn/authing/sdk/java/client/ManagementClient.java
Original file line number Diff line number Diff line change
@@ -1,13 +1,17 @@
package cn.authing.sdk.java.client;

import cn.authing.sdk.java.model.AuthingWebsocketClient;
import cn.authing.sdk.java.model.Receiver;
import cn.authing.sdk.java.util.signature.Impl.SignatureComposer;
import cn.hutool.core.util.StrUtil;
import cn.authing.sdk.java.dto.*;

import cn.authing.sdk.java.model.AuthingRequestConfig;
import cn.authing.sdk.java.model.ManagementClientOptions;

import java.net.URI;
import java.net.URISyntaxException;
import java.util.HashMap;
import java.util.Collections;
import java.util.Map;


public class ManagementClient extends BaseClient {
Expand Down Expand Up @@ -3651,4 +3655,33 @@ public IsSuccessRespDto updateAccessKey(UpdateAccessKeyDto reqDto) {
}


}

@Override
public void subEvent(String eventCode, Receiver receiver) {
if (StrUtil.isBlank(eventCode)) {
throw new IllegalArgumentException("eventCode is required");
}
if (receiver == null) {
throw new IllegalArgumentException("receiver is required");
}
ManagementClientOptions options = (ManagementClientOptions) this.options;
String eventUri = "ws"+options.getHost().substring(4)
+options.getEventEndpoint()+"?code="+eventCode;
URI wssUri = null;
try {
wssUri = new URI(eventUri);
} catch (URISyntaxException e) {
throw new RuntimeException(e);
}
// System.out.println("eventUri:"+eventUri);
SignatureComposer signatureComposer = new SignatureComposer();
HashMap<String,String> query = new HashMap<String, String>();
String signa = signatureComposer.composeStringToSign("websocket",eventUri,query,query);
String authorization = signatureComposer.getAuthorization(options.getAccessKeyId(),options.getAccessKeySecret(),signa);
// System.out.println(authorization);
HashMap<String,String> headers = new HashMap();
headers.put("Authorization",authorization);
AuthingWebsocketClient client = new AuthingWebsocketClient(wssUri,headers,receiver);
client.connect();
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package cn.authing.sdk.java.model;

import org.java_websocket.client.WebSocketClient;

import java.util.Map;

/**
Expand Down Expand Up @@ -28,4 +30,5 @@ public abstract class AuthingClientOptions {
* @return 响应
*/
public abstract String doRequest(String url, String method, Map<String, String> headers, Object body);

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package cn.authing.sdk.java.model;

import org.java_websocket.client.WebSocketClient;
import org.java_websocket.handshake.ServerHandshake;

import java.net.URI;
import java.util.Map;

/**
* @author songxueyan
* @date 2023/2/21
**/
public class AuthingWebsocketClient extends WebSocketClient {

private final Receiver receiver;

public AuthingWebsocketClient(URI serverUri, Map<String, String> httpHeaders, Receiver receiver) {
super(serverUri, httpHeaders);
this.receiver = receiver;
}

@Override
public void onOpen(ServerHandshake serverHandshake) {
// System.out.println("onOpen");
}

@Override
public void onMessage(String s) {
// System.out.println("onMessage:"+s);
this.receiver.onReceiverMessage(s);
}

@Override
public void onClose(int i, String s, boolean b) {
System.out.println("onClose,i="+i+",s="+s+",b="+b);
}

@Override
public void onError(Exception e) {
System.out.println(e);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,8 @@ public class ManagementClientOptions extends AuthingClientOptions {
*/
private static final int RANDOM_STRING_LENGTH = 16;

private String eventEndpoint = "/event/v1/management/sub";

public ManagementClientOptions() {
}

Expand Down Expand Up @@ -317,4 +319,12 @@ public void setExpires_in(Long expires_in) {
}

}

public void setEventEndpoint(String eventEndpoint) {
this.eventEndpoint = eventEndpoint;
}

public String getEventEndpoint() {
return eventEndpoint;
}
}
5 changes: 5 additions & 0 deletions src/main/java/cn/authing/sdk/java/model/Receiver.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package cn.authing.sdk.java.model;

public interface Receiver {
void onReceiverMessage(String msg);
}
23 changes: 23 additions & 0 deletions src/test/java/test/management/SubEventTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package test.management;

import cn.authing.sdk.java.client.ManagementClient;
import cn.authing.sdk.java.model.ManagementClientOptions;
import cn.authing.sdk.java.model.Receiver;

/**
* @author songxueyan
* @date 2023/2/21
**/
public class SubEventTest {
public static void main(String[] args) {
ManagementClientOptions clientOptions = new ManagementClientOptions();
clientOptions.setAccessKeyId("ACCESS_KEY_ID");
clientOptions.setAccessKeySecret("ACCESS_KEY_SECRET");
// clientOptions.setHost("http://core.authing.cn");
// clientOptions.setEventEndpoint("/events");

ManagementClient client = new ManagementClient(clientOptions);

client.subEvent("authing.user.created", msg -> System.out.println(msg));
}
}

0 comments on commit bd836aa

Please sign in to comment.