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.
open System
open System.Threading
open Newtonsoft.Json // get this here = http://james.newtonking.com/json
open RestSharp // get this here = http://restsharp.org/
open Dynamitey
open System.Dynamic
open System.Collections.Generic
open System.Xml.Linq
open System.Numerics
open Microsoft.CSharp.RuntimeBinder
let API_KEY_ID = "" // get your own
let USERNAME = "" // put your username here;
let PASSWORD = "" // put your password here;
let client = RestSharp.RestClient("https://www.thegamecrafter.com/api/")
let mutable session_id = ""
let mutable user_id = ""
let GetASession(username : string, password : string) =
let request = new RestSharp.RestRequest("session", RestSharp.Method.POST);
ignore (request.AddParameter("username", username))
ignore (request.AddParameter("password", password))
ignore (request.AddParameter("api_key_id", API_KEY_ID))
let response = client.Execute(request)
let data:Newtonsoft.Json.Linq.JObject = JsonConvert.DeserializeObject(response.Content) :?> Newtonsoft.Json.Linq.JObject
session_id <- data.GetValue("result").SelectToken("id").ToString()
user_id <- data.GetValue("result").SelectToken("user_id").ToString()
let FetchMyAccountInfo() =
let request = new RestRequest("user/" + user_id, Method.GET)
ignore (request.AddParameter("session_id", session_id))
let response = client.Execute(request)
let data:Newtonsoft.Json.Linq.JObject = JsonConvert.DeserializeObject(response.Content) :?> Newtonsoft.Json.Linq.JObject
let user = data.GetValue("result")
user
let UploadAFile(user:Newtonsoft.Json.Linq.JToken, filepath, filename) =
let request = new RestSharp.RestRequest("file", Method.POST)
ignore (request.AddFile("file", filepath))
ignore (request.AddParameter("name", filename))
ignore (request.AddParameter("folder_id", user.SelectToken("root_folder_id")))
ignore (request.AddParameter("session_id", session_id))
let response = client.Execute(request)
let data:Newtonsoft.Json.Linq.JObject = JsonConvert.DeserializeObject(response.Content) :?> Newtonsoft.Json.Linq.JObject
let file = data.GetValue("result")
file
let SearchGames() =
let request = new RestSharp.RestRequest("game", Method.GET)
ignore (request.AddParameter("q", "Steampunk"))
ignore (request.AddParameter("session_id", session_id))
let response = client.Execute(request)
let data:Newtonsoft.Json.Linq.JObject = JsonConvert.DeserializeObject(response.Content) :?> Newtonsoft.Json.Linq.JObject
let games = data //.GetValue("result")
games
Console.WriteLine("Getting A Session...")
GetASession(USERNAME, PASSWORD)
Console.WriteLine("Session ID: " + session_id)
Console.WriteLine("User ID: " + user_id)
Thread.Sleep(1000);
Console.WriteLine("\n")
Console.WriteLine("Fetching My Account Info...");
let user = FetchMyAccountInfo()
Console.WriteLine("Display Name: " + user.SelectToken("display_name").ToString())
Console.WriteLine("email: " + user.SelectToken("email").ToString())
Thread.Sleep(1000);
Console.WriteLine("\n")
Console.WriteLine("Uploading A File...")
let file = UploadAFile(user, "c:\\erase\\hi.png", "image.png")
Console.WriteLine("File name: " + file.SelectToken("name").ToString())
Console.WriteLine("File ID: " + file.SelectToken("id").ToString())
Thread.Sleep(1000);
Console.WriteLine("\n");
Console.WriteLine("Searching Games...")
let games = SearchGames()
for game in games do
Console.WriteLine("Game Name: " + game.Value.SelectToken("items").First.SelectToken("name").ToString())
Console.WriteLine("Game ID: " + game.Value.SelectToken("items").First.SelectToken("id").ToString())
Thread.Sleep(100)
Console.WriteLine("\n");
Console.Write("Hit any key to close...");
ignore (Console.ReadKey())