gitee配置
1.账号设置-生成私人令牌
2.创建仓库
3.gitee api
java util
@Data
public class FileDTO {
private String type;
private String name;
private String path;
private String sha;
private String content;
}
public class FileUtils {
//私人令牌
private static String ACCESS_TOKEN = "";
//用户名
private static String OWNER = "";
//仓库
private static String REPO = "";
private static String URL = "https://gitee.com/api/v5/repos/%s/%s/contents/template%s";
/**
* 获取文件夹下文件列表
* @param path
* @return
*/
public static List<FileDTO> getFiles(String path) {
List<FileDTO> fileDTOList = new ArrayList<>();
HttpClient httpClient = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.GET()
.uri(URI.create(buildPath(path) + "?access_token=" + ACCESS_TOKEN))
.build();
try {
HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
fileDTOList = JSON.parseObject(response.body(), new TypeReference<List<FileDTO>>() {
});
fileDTOList.forEach(fileDTO -> fileDTO.setContent(new String(Base64.getDecoder().decode(fileDTO.getContent()))));
} catch (Exception e) {
e.printStackTrace();
}
return fileDTOList;
}
/**
* 获取文件
* @param path
* @return
*/
public static FileDTO getFile(String path) {
FileDTO fileDTO = null;
HttpClient httpClient = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.GET()
.uri(URI.create(buildPath(path) + "?access_token=" + ACCESS_TOKEN))
.build();
try {
HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
//文件不存在 gitee默认单子文件夹处理
if ("[]".equals(response.body())) {
return null;
}
fileDTO = JSON.parseObject(response.body(), FileDTO.class);
//文件内容是base64加密
fileDTO.setContent(new String(Base64.getDecoder().decode(fileDTO.getContent())));
} catch (Exception e) {
e.printStackTrace();
}
return fileDTO;
}
/**
* 上传文件
* @param path
* @param content
* @return
*/
public static boolean addFile(String path, String content) {
HttpClient httpClient = HttpClient.newHttpClient();
Map<String, String> map = new HashMap<>();
map.put("access_token", ACCESS_TOKEN);
map.put("message", "add");
map.put("content", Base64.getEncoder().encodeToString(content.getBytes()));
HttpRequest request = HttpRequest.newBuilder()
.POST(HttpRequest.BodyPublishers.ofString(JSON.toJSONString(map)))
.uri(URI.create(buildPath(path)))
.header("Content-type", "application/json")
.build();
try {
HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
return 201 == response.statusCode();
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
/**
* 上传文件
* @param path
* @param file
* @return
*/
public static boolean addFile(String path, File file) {
try {
FileInputStream stream = new FileInputStream(file);
HttpClient httpClient = HttpClient.newHttpClient();
Map<String, String> map = new HashMap<>();
map.put("access_token", ACCESS_TOKEN);
map.put("message", "add");
map.put("content", Base64.getEncoder().encodeToString(stream.readAllBytes()));
HttpRequest request = HttpRequest.newBuilder()
.POST(HttpRequest.BodyPublishers.ofString(JSON.toJSONString(map)))
.uri(URI.create(buildPath(path)))
.header("Content-type", "application/json")
.build();
HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
return 201 == response.statusCode();
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
/**
* 修改文件
* @param path
* @param content
* @return
*/
public static boolean updateFile(String path, String content) {
FileDTO fileDTO = getFile(path);
if (fileDTO == null) {
return addFile(path, content);
}
HttpClient httpClient = HttpClient.newHttpClient();
Map<String, String> map = new HashMap<>();
map.put("access_token", ACCESS_TOKEN);
map.put("message", "update");
map.put("content", Base64.getEncoder().encodeToString(content.getBytes()));
map.put("sha", fileDTO.getSha());
HttpRequest request = HttpRequest.newBuilder()
.PUT(HttpRequest.BodyPublishers.ofString(JSON.toJSONString(map)))
.uri(URI.create(buildPath(path)))
.header("Content-type", "application/json")
.build();
try {
HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
return 200 == response.statusCode();
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
/**
* 构建文件
* @param path
* @return
*/
private static String buildPath(String path) {
if (!path.startsWith("/")) {
path = "/" + path;
}
return String.format(URL, OWNER, REPO, path);
}
}