Skip to content

Commit

Permalink
Add files via upload
Browse files Browse the repository at this point in the history
  • Loading branch information
BeingMan authored Jan 11, 2021
1 parent 7ce4a3a commit 39535ed
Show file tree
Hide file tree
Showing 14 changed files with 1,658 additions and 0 deletions.
60 changes: 60 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
# 使用加签SDK的用法说明

新建一个对象```AssetCloudRequest()```

- ```url```:完整的请求路径 http://platform.assetcloud.org.cn/dev-api/+请求路径;

- ```key``````secret```:平台获取的key和secret

Get调用方法:

```java
AssetCloudRequest request = new AssetCloudRequest();
request.setUrl("");
request.setKey("");
request.setSecret("");
request.setHttpMethods(HttpMethods.GET);
HttpRequestUtil.send(request);
```

Post调用方法:
```java
AssetCloudRequest request = new AssetCloudRequest();
request.setUrl("");
request.setKey("");
request.setSecret("");
request.setBody("");
request.setHttpMethods(HttpMethods.POST);
HttpRequestUtil.send(request);
```

Delete调用方法:

```java
AssetCloudRequest request = new AssetCloudRequest();
request.setUrl("");
request.setKey("");
request.setSecret("");
request.setHttpMethods(HttpMethods.DELETE);
HttpRequestUtil.send(request);
```

Put调用方法:
```java
AssetCloudRequest request = new AssetCloudRequest();
request.setUrl("");
request.setKey("");
request.setSecret("");
request.setBody("");
request.setHttpMethods(HttpMethods.Put);
HttpRequestUtil.send(request);
```
返回结果为:```AssetCloudResponse<T>```

| 字段 | 类型 | 说明 |
| ------- | ------- | -------- |
| code | int | 状态码 |
| success | Boolean | 是否成功 |
| data | T | 承载数据 |
| msg | String | 返回消息 |

39 changes: 39 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>cn.org.assetcloud</groupId>
<artifactId>assetcloud-authorization</artifactId>
<version>1.1</version>

<dependencies>
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
<scope>provided</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-codec/commons-codec -->
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.11</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.4.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.70</version>
</dependency>

</dependencies>
</project>
67 changes: 67 additions & 0 deletions src/main/java/cn/org/assetcloud/HttpRequestUtil.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
package cn.org.assetcloud;

import cn.org.assetcloud.entity.*;
import cn.org.assetcloud.exception.HttpProcessException;
import cn.org.assetcloud.util.AssetSignUtil;
import cn.org.assetcloud.util.StringUtil;
import com.alibaba.fastjson.JSONObject;
import org.apache.commons.codec.digest.HmacUtils;

/**
* @author Juxiu Ren Jianchao
*/
public class HttpRequestUtil {

public static AssetCloudResponse<Object> send(AssetCloudRequest request) throws HttpProcessException {
String result = "";
if (request.getHttpMethods() == HttpMethods.POST) {
result = AssetSignUtil.post(buildConfig(handleRequest(request)));
} else if (request.getHttpMethods() == HttpMethods.GET) {
result = AssetSignUtil.get(buildConfig(handleRequest(request)));
}
JSONObject json = JSONObject.parseObject(result);
AssetCloudResponse<Object> r = new AssetCloudResponse<Object>();
r.setCode(json.getIntValue("code"));
r.setData(json.get("data"));
r.setMsg(json.getString("msg"));
r.setSuccess(json.getBoolean("success"));
return r;
}

private static HttpConfig buildConfig(AssetCloudRequest request) {
HttpConfig httpConfig = HttpConfig.custom();
HttpHeader headers = HttpHeader.custom().other("key", request.getKey());
httpConfig.headers(headers.build());
httpConfig.url(request.getUrl());
if (request.getHttpMethods() == HttpMethods.POST) {
httpConfig.method(HttpMethods.POST);
httpConfig.json(request.getBody());
}
return httpConfig;
}

private static AssetCloudRequest handleRequest(AssetCloudRequest request) throws HttpProcessException {
String url = request.getUrl();
String key = request.getKey();
String secret = request.getSecret();
//判空
if (StringUtil.isBlank(url) || StringUtil.isBlank(key) || StringUtil.isBlank(secret)) {
throw new HttpProcessException("url key secret can not be null or empty");
}
//毫秒级时间
long localTime = System.currentTimeMillis();
StringBuilder sb = new StringBuilder();
if (!url.contains("?")) {
sb.append(url).append("?timestamp=").append(localTime);
} else {
sb.append(url).append("&timestamp=").append(localTime);
}
//加签
String shaUrl = sb.toString();
String sha = HmacUtils.hmacSha256Hex(secret,shaUrl.substring(shaUrl.indexOf("?") + 1));
sb.append("&sign=").append(sha);
request.setUrl(sb.toString());
return request;
}

}
48 changes: 48 additions & 0 deletions src/main/java/cn/org/assetcloud/builder/Hcb.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
package src.main.java.cn.org.assetcloud.builder;

import org.apache.http.client.config.RequestConfig;
import org.apache.http.impl.client.HttpClientBuilder;

/**
* @author Juxiu Ren Jianchao
*/
public class Hcb extends HttpClientBuilder {

public boolean isSetPool=false;


private Hcb(){}
public static Hcb custom(){
return new Hcb();
}

/**
* 设置超时时间
*
* @param timeout 超市时间,单位-毫秒
* @return 返回当前对象
*/
@Deprecated
public Hcb timeout(int timeout){
return timeout(timeout, true);
}

/**
* 设置超时时间以及是否允许网页重定向(自动跳转 302)
*
* @param timeout 超时时间,单位-毫秒
* @param redirectEnable 自动跳转
* @return 返回当前对象
*/
@Deprecated
public Hcb timeout(int timeout, boolean redirectEnable){
// 配置请求的超时设置
RequestConfig config = RequestConfig.custom()
.setConnectionRequestTimeout(timeout)
.setConnectTimeout(timeout)
.setSocketTimeout(timeout)
.setRedirectsEnabled(redirectEnable)
.build();
return (Hcb) this.setDefaultRequestConfig(config);
}
}
22 changes: 22 additions & 0 deletions src/main/java/cn/org/assetcloud/entity/AssetCloudRequest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package src.main.java.cn.org.assetcloud.entity;

import lombok.Data;

/**
* @author JuXiu Ren Jianchao
*/
@Data
public class AssetCloudRequest {

private static final long serialVersionUID = 1L;

private String url;

private String key;

private String secret;

private String body;

private HttpMethods httpMethods;
}
35 changes: 35 additions & 0 deletions src/main/java/cn/org/assetcloud/entity/AssetCloudResponse.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package src.main.java.cn.org.assetcloud.entity;

import lombok.AllArgsConstructor;
import lombok.Data;

import java.io.Serializable;

/**
* @author Juxiu Ren Jianchao
*/
@Data
public class AssetCloudResponse<T> implements Serializable {

private static final long serialVersionUID = 1L;

/**
*状态码
*/
private int code;

/**
*是否成功
*/
private Boolean success;

/**
* 承载数据
*/
private T data;

/**
* 返回消息
*/
private String msg;
}
Loading

0 comments on commit 39535ed

Please sign in to comment.