| @ -0,0 +1,6 @@ | |||||
| { | |||||
| "host":"localhost", | |||||
| "port":8182, | |||||
| "username":"", | |||||
| "password":"" | |||||
| } | |||||
| @ -0,0 +1,3 @@ | |||||
| { | |||||
| "api":"put-your-key-here" | |||||
| } | |||||
| @ -0,0 +1,37 @@ | |||||
| package net.jrtechs.www.SteamAPI; | |||||
| import net.jrtechs.www.utils.ConfigLoader; | |||||
| /** | |||||
| * Class which is used to pull information from the Steam api | |||||
| * | |||||
| * @author Jeffery Russell 5-26-18 | |||||
| */ | |||||
| public class APIConnection | |||||
| { | |||||
| /** Base url to use for all queries to steam's api **/ | |||||
| private final String baseURL = "http://api.steampowered.com"; | |||||
| /** Path to use when getting info on a player from api **/ | |||||
| private final String playerInfoURL = "/ISteamUser/GetPlayerSummaries/v0002/"; | |||||
| private final String friendListURL = "/ISteamUser/GetFriendList/v0001/"; | |||||
| /** Path to conf file(from within the conf folder) **/ | |||||
| private final String confPath = "SteamAPIKey.json"; | |||||
| /** API key for steam's api - loaded from json conf file **/ | |||||
| private String apiKey; | |||||
| /** | |||||
| * Constructor for APIConnection which loads a config file | |||||
| * and sets the api key to your Steam api key. | |||||
| */ | |||||
| public APIConnection() | |||||
| { | |||||
| ConfigLoader conf = new ConfigLoader(confPath); | |||||
| apiKey = "?key=" + conf.getValue("api"); | |||||
| } | |||||
| } | |||||
| @ -0,0 +1,101 @@ | |||||
| package net.jrtechs.www.graphDB; | |||||
| import org.apache.tinkerpop.gremlin.driver.Client; | |||||
| import org.apache.tinkerpop.gremlin.driver.Cluster; | |||||
| import org.apache.tinkerpop.gremlin.driver.ResultSet; | |||||
| import net.jrtechs.www.utils.ConfigLoader; | |||||
| /** | |||||
| * Simple helper class which allows us to remotely connect to a | |||||
| * remote graph | |||||
| * | |||||
| * @author Jeffery Russell 5-24-18 | |||||
| */ | |||||
| public class RemoteConnection | |||||
| { | |||||
| /** Stores/manages client connections **/ | |||||
| private Cluster cluster; | |||||
| /** | |||||
| * Connection to the graph db | |||||
| */ | |||||
| private Client client; | |||||
| /** | |||||
| * Connects to a remote Graph database | |||||
| * | |||||
| * Check this link out to learn about Cluster.Builder() | |||||
| * http://tinkerpop.apache.org/javadocs/3.3.3/core/org/apache/tinkerpop/ | |||||
| * gremlin/driver/Cluster.Builder.html | |||||
| * | |||||
| */ | |||||
| public RemoteConnection() | |||||
| { | |||||
| ConfigLoader conf = new ConfigLoader("GremlinServerConnection.json"); | |||||
| Cluster.Builder b = Cluster.build(); | |||||
| b.addContactPoint(conf.getValue("host")); | |||||
| b.port(conf.getInt("port")); | |||||
| b.credentials(conf.getValue("username"), conf.getValue("password")); | |||||
| this.cluster = b.create(); | |||||
| this.client = cluster.connect(); | |||||
| } | |||||
| /** | |||||
| * Queries the graph and return the results which can be iterated over | |||||
| * | |||||
| * ex: | |||||
| * ResultSet results = remote.queryGraph("g.V().values('name')"); | |||||
| * | |||||
| * results.stream().forEach(result -> | |||||
| * { | |||||
| * String s = result.getString(); | |||||
| * System.out.println("name: " + s); | |||||
| * }); | |||||
| * | |||||
| * @param q | |||||
| * @return | |||||
| */ | |||||
| public ResultSet queryGraph(String q) | |||||
| { | |||||
| return this.client.submit(q); | |||||
| } | |||||
| /** | |||||
| * Closes connection with remote database | |||||
| */ | |||||
| public void closeConnection() | |||||
| { | |||||
| this.cluster.close(); | |||||
| } | |||||
| /** | |||||
| * testing method which will be removed soon | |||||
| * @param args | |||||
| */ | |||||
| public static void main(String args[]) | |||||
| { | |||||
| RemoteConnection remote = new RemoteConnection(); | |||||
| ResultSet results = remote.queryGraph("g.V().values('name')"); | |||||
| //results.stream().forEach(System.out::println); | |||||
| results.stream().forEach(result -> | |||||
| { | |||||
| String s = result.getString(); | |||||
| System.out.println("name: " + s); | |||||
| }); | |||||
| remote.closeConnection(); | |||||
| } | |||||
| } | |||||
| @ -0,0 +1,101 @@ | |||||
| package net.jrtechs.www.utils; | |||||
| import org.json.JSONObject; | |||||
| import java.io.BufferedReader; | |||||
| import java.io.FileInputStream; | |||||
| import java.io.InputStreamReader; | |||||
| /** | |||||
| * {@link ConfigLoader} Is responsible for abstracting the process | |||||
| * of loading a configuration file to make it easier to use for | |||||
| * multiple purposes. | |||||
| * All configuration files will be stored in JSON format which | |||||
| * makes reading and distributing them easier. | |||||
| * | |||||
| * @author Jeffery Russell 5-22-18 | |||||
| */ | |||||
| public class ConfigLoader | |||||
| { | |||||
| /** Json object which stores configuration contents **/ | |||||
| JSONObject config; | |||||
| /** | |||||
| * Constructor which reads in a conf file and sets the | |||||
| * json element of the class. | |||||
| * | |||||
| * @param fileName | |||||
| */ | |||||
| public ConfigLoader(String fileName) | |||||
| { | |||||
| fileName = "conf/" + fileName; | |||||
| String file = this.loadFile(fileName); | |||||
| this.config = new JSONObject(file); | |||||
| } | |||||
| /** | |||||
| * Loads JSON from a particular file | |||||
| * | |||||
| * @param file -- file name to open | |||||
| * @return - String of file contents | |||||
| */ | |||||
| private String loadFile(String file) | |||||
| { | |||||
| String jsonString = ""; | |||||
| try | |||||
| { | |||||
| BufferedReader br = new BufferedReader( | |||||
| new InputStreamReader(new FileInputStream(file))); | |||||
| String line; | |||||
| while((line = br.readLine()) != null) | |||||
| { | |||||
| if(line.length() > 0 && line.charAt(0) != '#') | |||||
| { | |||||
| jsonString += line; | |||||
| } | |||||
| } | |||||
| } | |||||
| catch(Exception e) | |||||
| { | |||||
| e.printStackTrace(); | |||||
| } | |||||
| return jsonString; | |||||
| } | |||||
| /** | |||||
| * Returns a single property from a {@link ConfigLoader} | |||||
| * based on its key. | |||||
| * | |||||
| * @param key | |||||
| * @return | |||||
| */ | |||||
| public String getValue(String key) | |||||
| { | |||||
| if(this.config.has(key)) | |||||
| return this.config.getString(key); | |||||
| else | |||||
| return null; | |||||
| } | |||||
| /** | |||||
| * Returns the integer value associated with a key in | |||||
| * the configuration file. | |||||
| * | |||||
| * @param key | |||||
| * @return | |||||
| */ | |||||
| public int getInt(String key) | |||||
| { | |||||
| if(this.config.has(key)) | |||||
| return this.config.getInt(key); | |||||
| else | |||||
| return 0; | |||||
| } | |||||
| } | |||||
| @ -0,0 +1,81 @@ | |||||
| package net.jrtechs.www.utils; | |||||
| import java.io.*; | |||||
| import java.net.HttpURLConnection; | |||||
| import java.net.URL; | |||||
| /** | |||||
| * Class which retrieves contents of a website as html | |||||
| * | |||||
| * @author Jeffery Russell 5-25-18 | |||||
| */ | |||||
| public class WebScraper { | |||||
| /** | |||||
| * Grabs the contents of a website as a string | |||||
| * | |||||
| * @param link to open | |||||
| * @return source code of website as a single string | |||||
| */ | |||||
| public static String getWebsite(String link) { | |||||
| try { | |||||
| URL url = new URL(link); | |||||
| BufferedReader br = new BufferedReader( | |||||
| new InputStreamReader(url.openStream()) | |||||
| ); | |||||
| return WebScraper.getBufferedReaderData(br); | |||||
| } catch (Exception e) { | |||||
| e.printStackTrace(); | |||||
| } | |||||
| return ""; | |||||
| } | |||||
| /** | |||||
| * Gets contents of a post request sent to a web server | |||||
| * | |||||
| * @param link to open | |||||
| * @param postData to send | |||||
| * @return source code of website as a string | |||||
| */ | |||||
| public static String getPostResponse(String link, String postData) { | |||||
| try { | |||||
| URL url = new URL(link); | |||||
| HttpURLConnection conn = (HttpURLConnection) url.openConnection(); | |||||
| conn.setDoOutput(true); | |||||
| conn.setRequestMethod("POST"); | |||||
| OutputStream os = conn.getOutputStream(); | |||||
| os.write(postData.getBytes()); | |||||
| os.flush(); | |||||
| BufferedReader br = new BufferedReader( | |||||
| new InputStreamReader(conn.getInputStream()) | |||||
| ); | |||||
| return WebScraper.getBufferedReaderData(br); | |||||
| } catch (Exception ex) { | |||||
| ex.printStackTrace(); | |||||
| } | |||||
| return ""; | |||||
| } | |||||
| /** | |||||
| * Helper method for getPostResponse() and getWebsite() | |||||
| * Slams all contents of a buffered reader into a single string. | |||||
| * | |||||
| * @param br | |||||
| * @return contents of buffered reader | |||||
| * @throws IOException -- with br.readLine() | |||||
| */ | |||||
| private static String getBufferedReaderData(BufferedReader br) | |||||
| throws IOException { | |||||
| String html = ""; | |||||
| String line; | |||||
| while ((line = br.readLine()) != null) { | |||||
| html += line; | |||||
| } | |||||
| return html; | |||||
| } | |||||
| } | |||||