NOTE: Get an APIKey.
This code will allow you to get a session, fetch account info, upload a file, and search games. From it you should be able to discern how to work with the entire TGC API.
package playground; import java.io.BufferedReader; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.URLEncoder; import java.util.ArrayList; import java.util.List; import org.apache.http.HttpEntity; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.ContentType; import org.apache.http.entity.mime.MultipartEntityBuilder; import org.apache.http.entity.mime.content.FileBody; import org.apache.http.entity.mime.content.StringBody; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.message.BasicNameValuePair; import org.apache.http.util.EntityUtils; import org.json.JSONException; import org.json.JSONObject; public class TGCJavaAPI { public static void main(String[] args) throws ClientProtocolException, IOException { CloseableHttpClient httpclient = HttpClients.createDefault(); String sessionId = ""; String userId = ""; // Get a session // TODO: Replace _USER_ with your username, _PASS_ with your password, and _APIKEY_ with your API Key Id String session = getSession(httpclient, "_USER_", "_PASS_", "_APIKEY_"); if (session != null){ //System.out.println(session); //Prints out full response //Parse the results. This uses the JSON.org library try { JSONObject sessionObject = new JSONObject(session); if (sessionObject.has("result")){ sessionId = sessionObject.getJSONObject("result").getString("id"); userId = sessionObject.getJSONObject("result").getString("user_id"); } else if(sessionObject.has("error")){ System.out.println("Error: " + sessionObject.getJSONObject("error").getString("message")); return; } } catch (JSONException e) { e.printStackTrace(); System.out.println("Error parsing session results."); return; } } else { return; } String rootFolderId = ""; //Fetch account info String account = fetchAccountInfo(httpclient, sessionId, userId); if (account != null){ //System.out.println(account); //Prints out full response //Parse the results. This uses the JSON.org library try { JSONObject accountObject = new JSONObject(account); rootFolderId = accountObject.getJSONObject("result").getString("root_folder_id"); } catch (JSONException e) { e.printStackTrace(); System.out.println("Error parsing account results."); return; } } //Upload a file // TODO: Replace _FILEPATH_ with the path to the file, and _FILENAME_ with the name for your file once uploaded to TGC String fileUplaod = fileUpload(httpclient, sessionId, "_FILEPATH_", "_FILENAME_", rootFolderId); if (fileUplaod != null){ //System.out.println(fileUplaod); //Prints out full response } //Search games String searchResults = searchGames(httpclient, "pirate booty grab", sessionId); if (searchResults != null){ //System.out.println(searchResults); //Prints out full response } httpclient.close(); } private static String getSession(CloseableHttpClient httpclient, String username, String password, String apikeyid) throws ClientProtocolException, IOException { HttpPost httpPost = new HttpPost("https://www.thegamecrafter.com/api/session"); List<BasicNameValuePair> nvps = new ArrayList<BasicNameValuePair>(); nvps.add(new BasicNameValuePair("username", username)); nvps.add(new BasicNameValuePair("password", password)); nvps.add(new BasicNameValuePair("api_key_id", apikeyid)); httpPost.setEntity(new UrlEncodedFormEntity(nvps)); CloseableHttpResponse response = httpclient.execute(httpPost); StringBuffer content = new StringBuffer(); try { HttpEntity entity = response.getEntity(); InputStream is = entity.getContent(); BufferedReader rd = new BufferedReader(new InputStreamReader(is)); String line; while ((line = rd.readLine()) != null) { content.append(line); content.append('\r'); } rd.close(); // Ensure it is fully consumed EntityUtils.consume(entity); } finally { response.close(); } return content.toString(); } private static String fetchAccountInfo(CloseableHttpClient httpclient, String sessionId, String userId) throws ClientProtocolException, IOException { HttpGet httpGet = new HttpGet("https://www.thegamecrafter.com/api/user/" + userId + "?session_id=" + sessionId); CloseableHttpResponse response = httpclient.execute(httpGet); StringBuffer content = new StringBuffer(); try { HttpEntity entity = response.getEntity(); InputStream is = entity.getContent(); BufferedReader rd = new BufferedReader(new InputStreamReader(is)); String line; while ((line = rd.readLine()) != null) { content.append(line); content.append('\r'); } rd.close(); // Ensure it is fully consumed EntityUtils.consume(entity); } finally { response.close(); } return content.toString(); } private static String fileUpload(CloseableHttpClient httpclient, String sessionId, String filepath, String filename, String rootFolderId) throws ClientProtocolException, IOException { HttpPost httpPost = new HttpPost("https://www.thegamecrafter.com/api/file"); File file = new File(filepath); if (!file.exists()){ return "File does not exist.\r"; } MultipartEntityBuilder entityBuilder = MultipartEntityBuilder.create(); entityBuilder.addPart("file", new FileBody(file)); entityBuilder.addPart("name", new StringBody(filepath, ContentType.TEXT_PLAIN)); entityBuilder.addPart("folder_id", new StringBody(rootFolderId, ContentType.TEXT_PLAIN)); entityBuilder.addPart("session_id", new StringBody(sessionId, ContentType.TEXT_PLAIN)); HttpEntity entity = entityBuilder.build(); httpPost.setEntity(entity); CloseableHttpResponse response = httpclient.execute(httpPost); StringBuffer content = new StringBuffer(); try { HttpEntity entity2 = response.getEntity(); InputStream is = entity2.getContent(); BufferedReader rd = new BufferedReader(new InputStreamReader(is)); String line; while ((line = rd.readLine()) != null) { content.append(line); content.append('\r'); } rd.close(); // Ensure it is fully consumed EntityUtils.consume(entity2); } finally { response.close(); } return content.toString(); } private static String searchGames(CloseableHttpClient httpclient, String query, String sessionId) throws ClientProtocolException, IOException { HttpGet httpGet = new HttpGet("https://www.thegamecrafter.com/api/game?q=" + URLEncoder.encode(query, "UTF-8") + "&_sort_by=Relevance" + (sessionId != null ? "&session_id=" + sessionId : "")); CloseableHttpResponse response = httpclient.execute(httpGet); StringBuffer content = new StringBuffer(); try { HttpEntity entity = response.getEntity(); InputStream is = entity.getContent(); BufferedReader rd = new BufferedReader(new InputStreamReader(is)); String line; while ((line = rd.readLine()) != null) { content.append(line); content.append('\r'); } rd.close(); // Ensure it is fully consumed EntityUtils.consume(entity); } finally { response.close(); } return content.toString(); } }