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.
#!/usr/bin/env ruby # This Ruby client for The Game Crafter is more involved than simply using HTTParty standalone. # With this code, you can expand upon the client and easily add your own encapsulated functionality! # It also shows some good Ruby design practices if you're still new to the language. # You'll need at least Ruby 1.9.3 or so and Bundler. # make it easy to do multi-part requests require 'httmultiparty' module TheGameCrafter # wrap up our basic client actions in a class class Client include HTTMultiParty base_uri 'https://www.thegamecrafter.com/api'.freeze # we set these in the initializer... attr_accessor :api_key, :username, :password # these get set after #get_session! attr_reader :user_id, :session_id def initialize(username, password, api_key) @username, @password, @api_key = username, password, api_key end # get a session and user id def get_session! response = post '/session', query: { 'username' => username, 'password' => password, 'api_key_id' => api_key } @session_id = response['id'] @user_id = response['user_id'] end # get user account info def account_info get '/user/' + @user_id, query: default_query_params end # upload a file # provide an IO that responds to #path. A File is good! def upload_file(io, folder_id) post '/file', query: { 'name' => File.basename(io.path), 'folder_id' => folder_id, 'file' => io }.merge(default_query_params) end # search for games def search_games(query) get '/game', query: { 'q' => query }.merge(default_query_params) end private # wrappers around HTTParty to handle TGC responses automagically def post(*args) response = self.class.post *args response.parsed_response['result'] end def get(*args) response = self.class.get *args response.parsed_response['result'] end # we use this a lot. factor it out. def default_query_params { 'session_id' => session_id } end end end client = TheGameCrafter::Client.new('username', 'password', 'api key') client.get_session! account_info = client.account_info p client.upload_file File.open('file.jpg'), account_info['root_folder_id'] p client.search_games "Steampunk"
require 'rest-client' require 'json' url="https://www.thegamecrafter.com/api" api_key_id = '' #replace with yours username = '' #replace with yours password = '' #replace with yours root_folder_id = '' #replace with yours #Get a Session params = {:api_key_id => api_key_id, :username => username, :password => password} response = RestClient.post("#{url}/session", params) puts "HTTP Success? #{response.code == 200}" puts "Session response: #{response}" session = JSON.parse(response)['result'] #Fetch My Account Info params = {:session_id => session['id']} response = RestClient.get("#{url}/user/#{session['user_id']}", params) puts "Account info response: #{response}" user = JSON.parse(response)['result'] #Upload a File params = { :name => 'example.png', :file => File.new('example.png'), :folder_id => root_folder_id, :session_id => session['id'] } response = RestClient.post("#{url}/file", params) puts "HTTP Success? #{response.code == 200}" puts "Upload response: #{response}" #Search Games params = { :q => 'Steampunk', :session_id => session['id'] #optional } response = RestClient.get("#{url}/game", params) puts "HTTP Success? #{response.code == 200}" results = JSON.parse(response)['result'] puts "There are #{results.size} results"