[fixes #825] Add ReleaseInfo model
This model contains all the information about a releases
This commit is contained in:
parent
23af62d8d0
commit
6ad84e526a
62
core/src/net/sf/openrocket/communication/ReleaseInfo.java
Normal file
62
core/src/net/sf/openrocket/communication/ReleaseInfo.java
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
package net.sf.openrocket.communication;
|
||||||
|
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import javax.json.JsonObject;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class containing info about a GitHub release. All the info is stored in a JSON objects, retrieved using the GitHub
|
||||||
|
* releases API.
|
||||||
|
*
|
||||||
|
* @author Sibo Van Gool <sibo.vangool@hotmail.com>
|
||||||
|
*/
|
||||||
|
public class ReleaseInfo {
|
||||||
|
// GitHub release JSON object containing all the information about a certain release
|
||||||
|
// You can examine an example object here: https://api.github.com/repos/openrocket/openrocket/releases/latest
|
||||||
|
private final JsonObject obj;
|
||||||
|
|
||||||
|
private static final Logger log = LoggerFactory.getLogger(ReleaseInfo.class);
|
||||||
|
|
||||||
|
public ReleaseInfo(JsonObject obj) {
|
||||||
|
this.obj = obj;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the release tag from the GitHub release JSON object.
|
||||||
|
* @return release tag (e.g. "15.0.3")
|
||||||
|
*/
|
||||||
|
private String getReleaseTag() {
|
||||||
|
if (this.obj == null) return null;
|
||||||
|
|
||||||
|
String tag = this.obj.get("tag_name").toString(); // Release label is encapsulated in the 'tag_name'-tag
|
||||||
|
tag = tag.replaceAll("^\"+|\"+$", ""); // Remove double quotations in the beginning and end
|
||||||
|
|
||||||
|
// Remove the 'release-' preamble of the name tag (example name tag: 'release-15.03')
|
||||||
|
String preamble = "release-";
|
||||||
|
if (tag.startsWith(preamble)) {
|
||||||
|
tag = tag.substring(preamble.length());
|
||||||
|
} else {
|
||||||
|
log.debug("Invalid release tag format for tag: " + tag);
|
||||||
|
}
|
||||||
|
return tag;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the release notes from the GitHub release JSON object.
|
||||||
|
* @return release notes (this is the text that explains a certain GitHub release)
|
||||||
|
*/
|
||||||
|
private String getReleaseNotes() {
|
||||||
|
if (this.obj == null) return null;
|
||||||
|
return this.obj.get("body").toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the release URL from the GitHub release JSON object.
|
||||||
|
* @return release URL (e.g. 'https://github.com/openrocket/openrocket/releases/tag/release-15.03')
|
||||||
|
*/
|
||||||
|
private String getReleaseURL() {
|
||||||
|
if (this.obj == null) return null;
|
||||||
|
return this.obj.get("html_url").toString();
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user