在提交详细信息中搜索 Bitbucket 存储库中的评论
Searching comments in Bitbucket repository in commit details
我们正在尝试从我们的 JAVA 代码中搜索 Bitbucket 提交中的特定文本。
我们需要为此使用 REST 网络服务
我们尝试使用 APT /2.0/repositories/{username}/{repo_slug}/commits 但它return 这个存储库的所有提交
我们只需要那些有特定文字的提交细节 "xyz"
我们再次找到一个代码搜索 API
https://api.bitbucket.org/2.0/teams/{用户名}/search/code
这里给出错误:服务器 returned HTTP 响应代码:405 方法不允许
String commitsUrl="https://api.bitbucket.org/2.0/teams/"+bitbucketUsername+"/search/code";
URL url = new URL(commitsUrl);
HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
connection.setRequestMethod("GET");
String encoded = Base64.getEncoder().encodeToString((bitbucketUsername+":"+bitbucketPasscode).getBytes(StandardCharsets.UTF_8));
connection.setRequestProperty("Authorization", "Basic "+encoded);
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
connection.setDoOutput(true);
String body = "search_query="+search_query;
os = connection.getOutputStream();
os.write(body.getBytes(StandardCharsets.UTF_8));
connection.connect();
br = new BufferedReader(new InputStreamReader((connection.getInputStream())));
显示错误:
不允许使用 405 方法
预期:根据 link 中的描述返回一些 JSON
https://developer.atlassian.com/bitbucket/api/2/reference/resource/teams/%7Busername%7D/search/code
很遗憾,我们没有找到任何可在提交评论中搜索的选项。
现在我们换个方式接近:
我们正在使用 REST API repositories{username}{repo_slug}commits 进行所有提交
并通过评论字段手动比较搜索文本。
String commitsUrl=ROOT_REPOSITORY+bitbucketUsername+"/"+repoName+"/commits/";
URL url = new URL(urlString);
HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
connection.setRequestMethod(methodType);
connection.setRequestProperty("Authorization", "Bearer "+token);
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
connection.connect();
BufferedReader br = new BufferedReader(new InputStreamReader((connection.getInputStream())));
StringBuilder sb = new StringBuilder();
String output;
while ((output = br.readLine()) != null) {
sb.append(output);
}
JSONObject root = new JSONObject(sb.toString());
JSONArray array = root.getJSONArray("values");
for(int i=0; i< array.length(); i++) {
JSONObject obj = (JSONObject) array.get(i);
String message = obj.getString("message");
//From this message string search your text
我们正在尝试从我们的 JAVA 代码中搜索 Bitbucket 提交中的特定文本。 我们需要为此使用 REST 网络服务
我们尝试使用 APT /2.0/repositories/{username}/{repo_slug}/commits 但它return 这个存储库的所有提交
我们只需要那些有特定文字的提交细节 "xyz"
我们再次找到一个代码搜索 API https://api.bitbucket.org/2.0/teams/{用户名}/search/code 这里给出错误:服务器 returned HTTP 响应代码:405 方法不允许
String commitsUrl="https://api.bitbucket.org/2.0/teams/"+bitbucketUsername+"/search/code";
URL url = new URL(commitsUrl);
HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
connection.setRequestMethod("GET");
String encoded = Base64.getEncoder().encodeToString((bitbucketUsername+":"+bitbucketPasscode).getBytes(StandardCharsets.UTF_8));
connection.setRequestProperty("Authorization", "Basic "+encoded);
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
connection.setDoOutput(true);
String body = "search_query="+search_query;
os = connection.getOutputStream();
os.write(body.getBytes(StandardCharsets.UTF_8));
connection.connect();
br = new BufferedReader(new InputStreamReader((connection.getInputStream())));
显示错误:
不允许使用 405 方法预期:根据 link 中的描述返回一些 JSON https://developer.atlassian.com/bitbucket/api/2/reference/resource/teams/%7Busername%7D/search/code
很遗憾,我们没有找到任何可在提交评论中搜索的选项。
现在我们换个方式接近:
我们正在使用 REST API repositories{username}{repo_slug}commits 进行所有提交 并通过评论字段手动比较搜索文本。
String commitsUrl=ROOT_REPOSITORY+bitbucketUsername+"/"+repoName+"/commits/";
URL url = new URL(urlString);
HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
connection.setRequestMethod(methodType);
connection.setRequestProperty("Authorization", "Bearer "+token);
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
connection.connect();
BufferedReader br = new BufferedReader(new InputStreamReader((connection.getInputStream())));
StringBuilder sb = new StringBuilder();
String output;
while ((output = br.readLine()) != null) {
sb.append(output);
}
JSONObject root = new JSONObject(sb.toString());
JSONArray array = root.getJSONArray("values");
for(int i=0; i< array.length(); i++) {
JSONObject obj = (JSONObject) array.get(i);
String message = obj.getString("message");
//From this message string search your text