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