@ -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; | |||
} | |||
} |