harrk / gamejolt-api
A PHP library for the Game Jolt API.
Installs: 2 483
Dependents: 0
Suggesters: 0
Security: 0
Stars: 5
Watchers: 3
Forks: 1
Open Issues: 0
Requires
- php: ^8.1|8.2|8.3
- ext-json: *
- guzzlehttp/guzzle: ^7.5
Requires (Dev)
- phpstan/phpstan: ^1.9.18
- phpunit/phpunit: ^10.0
README
This library provides full (except batching) coverage of Game Jolt's API (Trophies, Scores, Sessions, etc...) At the moment this library is written and tested for v1.2 of Game Jolt's API.
Installation
$ composer require "harrk/gamejolt-api"
Usage
Create an instance of GamejoltApi and provide a GamejoltConfig to begin making API calls to Game Jolt.
$gameId = 0; // Your game's ID $gamePrivaykey = "Your game's private key"; $api = new GamejoltApi(new GamejoltConfig( $gameId, $gamePrivaykey ));
Endpoints
Below are examples of how you would interact with each endpoint. Bare in mind that these are only examples, and may not use all parameter options.
Refer to the Game Jolt API Documentation or the source code for more options.
Data Store
The Data Store API can be used to store/retrieve data in the cloud.
// Fetch the value for my-key $api->dataStore()->fetch('my-key'); // Set the value for my-key to my-value $api->dataStore()->set('my-key', 'my-value'); // Update player-logins by 1 $api->dataStore()->update('player-logins', DataStore::OPERATION_ADD, 1); // Remove my-key $api->dataStore()->remove('my-key'); // Fetch all keys $api->dataStore()->getKeys();
Friends
The Friends API can only be used to find the friend IDs of the user currently.
// Fetch all friend ids for the user $api->friends()->fetch('username', 'user-token');
Scores
//Fetch scores $api->scores()->fetch(); //Fetch all score tables $api->scores()->tables(); //Add a gamejolt user's score to the table $api->scores()->addUserScore('username', 'user_token', '100 Jumps', 100); //Add a guest's score to the table $api->scores()->addGuestScore('Mr Guest', '50 jumps', 50); //Get score rank $api->scores()->getRank(60);
Sessions
//Open a session for the given user $api->sessions()->open('username', 'user_token'); //Let GJ know the user session is still active $api->sessions()->ping('username', 'user_token', Sessions::STATUS_ACTIVE); //Check if the session is still open for user $api->sessions()->check('username', 'user_token'); //Close the session for user $api->sessions()->close('username', 'user_token');
Time
//Get GJ's server time $api->time()->fetch();
Trophies
//Get all trophies $api->trophies()->fetch('username', 'user_token'); //User has achieved a trophy with ID 1 $api->trophies()->addAchieved('username', 'user_token', 1); //User unachieved trophy with ID 1 $api->trophies()->removeAchieved('username', 'user_token', 1);
Users
//Fetch data on user $api->users()->fetch('username', 'user_token'); //Verify if the user's credentials are correct $api->users()->auth('username', 'user_token');
Catching Exceptions
Here is a example on how to catch exceptions:
try { $auth = $api->users()->auth('username', 'user_token'); } catch (TimeOutException $e) { return redirect()->route('home')->with('error', $e->getMessage()); }
Testing
Two commands have been provided to simplify the running of tests.
Run Unit Tests
$ composer test
Run Static Code Analysis
$ composer analyse
Todo
- Allow POST method on endpoints
- Increase coverage of Unit Tests
License
MIT License