Moving doclets to public
This commit is contained in:
parent
0cca75a290
commit
348e86159e
|
|
@ -0,0 +1,173 @@
|
|||
/*
|
||||
* Copyright (c) 2012, The Broad Institute
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person
|
||||
* obtaining a copy of this software and associated documentation
|
||||
* files (the "Software"), to deal in the Software without
|
||||
* restriction, including without limitation the rights to use,
|
||||
* copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following
|
||||
* conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be
|
||||
* included in all copies or substantial portions of the Software.
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
* OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
package org.broadinstitute.sting.utils.help;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import org.apache.commons.io.IOUtils;
|
||||
import org.apache.http.HttpResponse;
|
||||
import org.apache.http.client.ClientProtocolException;
|
||||
import org.apache.http.client.methods.HttpGet;
|
||||
import org.apache.http.client.methods.HttpPost;
|
||||
import org.apache.http.entity.StringEntity;
|
||||
import org.apache.http.impl.client.DefaultHttpClient;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.net.MalformedURLException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class ForumAPIUtils {
|
||||
/**
|
||||
* How we post to the forum
|
||||
*/
|
||||
private final static String API_URL = "https://gatk.vanillaforums.com/";
|
||||
final private static String ACCESS_TOKEN = "access_token=";
|
||||
|
||||
public static List<String> getPostedTools(String forumKey) {
|
||||
Gson gson = new Gson();
|
||||
List<String> output = new ArrayList<String>();
|
||||
|
||||
String text = httpGet(API_URL + "categories.json?CategoryIdentifier=tool-bulletin&page=1-100000&" + ACCESS_TOKEN + forumKey);
|
||||
|
||||
APIQuery details = gson.fromJson(text, APIQuery.class);
|
||||
ForumDiscussion[] discussions = details.Discussions;
|
||||
|
||||
for (ForumDiscussion post : discussions) {
|
||||
output.add(post.Name);
|
||||
}
|
||||
|
||||
/*
|
||||
System.out.println(details.isJsonArray());
|
||||
System.out.println(details.isJsonNull());
|
||||
System.out.println(details.isJsonObject());
|
||||
System.out.println(details.isJsonPrimitive());
|
||||
|
||||
JsonArray posted = details.getAsJsonPrimitive().get("Discussions").getAsJsonArray();
|
||||
|
||||
for ( JsonElement post : posted ) {
|
||||
output.add( post.getAsJsonObject().get("Name").getAsString());
|
||||
}
|
||||
*/
|
||||
return output;
|
||||
}
|
||||
|
||||
|
||||
private static String httpGet(String urlStr) {
|
||||
String output = "";
|
||||
|
||||
try {
|
||||
|
||||
DefaultHttpClient httpClient = new DefaultHttpClient();
|
||||
HttpGet getRequest = new HttpGet(urlStr);
|
||||
getRequest.addHeader("accept", "application/json");
|
||||
|
||||
HttpResponse response = httpClient.execute(getRequest);
|
||||
|
||||
if (response.getStatusLine().getStatusCode() != 200) {
|
||||
throw new RuntimeException("Failed : HTTP error code : "
|
||||
+ response.getStatusLine().getStatusCode());
|
||||
}
|
||||
|
||||
output = IOUtils.toString(response.getEntity().getContent());
|
||||
|
||||
httpClient.getConnectionManager().shutdown();
|
||||
|
||||
} catch (ClientProtocolException e) {
|
||||
|
||||
e.printStackTrace();
|
||||
|
||||
} catch (IOException e) {
|
||||
|
||||
e.printStackTrace();
|
||||
}
|
||||
return output;
|
||||
}
|
||||
|
||||
private static String httpPost(String data, String URL) {
|
||||
try {
|
||||
|
||||
DefaultHttpClient httpClient = new DefaultHttpClient();
|
||||
HttpPost postRequest = new HttpPost(URL);
|
||||
|
||||
StringEntity input = new StringEntity(data);
|
||||
input.setContentType("application/json");
|
||||
postRequest.setEntity(input);
|
||||
|
||||
HttpResponse response = httpClient.execute(postRequest);
|
||||
|
||||
if (response.getStatusLine().getStatusCode() != 200) {
|
||||
throw new RuntimeException("Failed : HTTP error code : "
|
||||
+ response.getStatusLine().getStatusCode());
|
||||
}
|
||||
|
||||
BufferedReader br = new BufferedReader(
|
||||
new InputStreamReader((response.getEntity().getContent())));
|
||||
|
||||
String output = "";
|
||||
String line;
|
||||
System.out.println("Output from Server .... \n");
|
||||
while ((line = br.readLine()) != null) {
|
||||
output += (line + '\n');
|
||||
System.out.println(line);
|
||||
}
|
||||
|
||||
httpClient.getConnectionManager().shutdown();
|
||||
return output;
|
||||
|
||||
} catch (MalformedURLException e) {
|
||||
|
||||
e.printStackTrace();
|
||||
|
||||
} catch (IOException e) {
|
||||
|
||||
e.printStackTrace();
|
||||
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static void postToForum(GATKDocWorkUnit tool, final String forumKey) {
|
||||
|
||||
|
||||
ForumDiscussion post = new ForumDiscussion(tool);
|
||||
|
||||
Gson gson = new Gson();
|
||||
|
||||
String data = gson.toJson(post.getPostData());
|
||||
httpPost(data, API_URL + "post/discussion.json?" + ACCESS_TOKEN + forumKey);
|
||||
|
||||
|
||||
}
|
||||
|
||||
class APIQuery {
|
||||
ForumDiscussion[] Discussions;
|
||||
|
||||
public APIQuery() {
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,83 @@
|
|||
/*
|
||||
* Copyright (c) 2012, The Broad Institute
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person
|
||||
* obtaining a copy of this software and associated documentation
|
||||
* files (the "Software"), to deal in the Software without
|
||||
* restriction, including without limitation the rights to use,
|
||||
* copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following
|
||||
* conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be
|
||||
* included in all copies or substantial portions of the Software.
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
* OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
package org.broadinstitute.sting.utils.help;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
class ForumDiscussion {
|
||||
|
||||
final private static String POST_TEMPLATE = "<p>A new tool has been released!</p><p>Check out the documentation at <a href='%s'>%s</a>.</p>";
|
||||
|
||||
final int Announce;
|
||||
final String Body;
|
||||
final String Category;
|
||||
final int Closed;
|
||||
final String Format;
|
||||
final String Name;
|
||||
final int Sink;
|
||||
final String Tags;
|
||||
final String Type;
|
||||
|
||||
public ForumDiscussion(String name, String body, String format, String category,
|
||||
String tagsCSV, String type, int closed, int announce, int sink) {
|
||||
this.Name = name;
|
||||
this.Body = body;
|
||||
this.Format = format;
|
||||
this.Category = category;
|
||||
this.Tags = tagsCSV;
|
||||
this.Type = type;
|
||||
this.Closed = closed;
|
||||
this.Announce = announce;
|
||||
this.Sink = sink;
|
||||
}
|
||||
|
||||
public ForumDiscussion(GATKDocWorkUnit tool) {
|
||||
this(tool.name,
|
||||
String.format(POST_TEMPLATE, GATKDocUtils.URL_ROOT_FOR_RELEASE_GATKDOCS + tool.filename, tool.name),
|
||||
"Html", "tool-bulletin", tool.name + "," + tool.group + ",gatkdocs", "Discussion", 0, -1, -1);
|
||||
}
|
||||
|
||||
public Map<String, String> getPostData() {
|
||||
Map<String, String> output = new HashMap<String, String>();
|
||||
|
||||
output.put("Name", Name);
|
||||
output.put("Body", Body);
|
||||
output.put("Format", Format);
|
||||
output.put("Category", Category);
|
||||
if (Tags != null)
|
||||
output.put("Tags", Tags);
|
||||
if (Type != null)
|
||||
output.put("Type", Type);
|
||||
if (Closed != -1)
|
||||
output.put("Closed", Closed == 1 ? "1" : "0");
|
||||
if (Announce != -1)
|
||||
output.put("Announce", Announce == 1 ? "1" : "0");
|
||||
if (Sink != -1)
|
||||
output.put("Sink", Sink == 1 ? "1" : "0");
|
||||
|
||||
return output;
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue