Dev Save Points Example
Saving Player Points with devBatchSavePoints
devBatchSavePoints/**
* Generates HMAC signature for API authentication
* @returns {Promise<string>} The signature for API requests
*/
async function getSignature() {
try {
const response = await fetch(`https://api.opengameprotocol.com/user/hmac-signature`, {
method: 'POST',
body: JSON.stringify({
secretKey: SECRET_KEY,
path: '/play/dev/batch-save-points',
method: 'POST',
apiKey: API_KEY,
}),
headers: {
'Content-Type': 'application/json',
},
});
if (!response.ok) {
throw new Error(
`Failed to get signature: ${response.status} ${response.statusText}`
);
}
const result = await response.json();
return result.data.signature;
} catch (error) {
console.error('Failed to get signature:', error);
throw new Error('Signature generation failed');
}
}
/**
* Saves player points for a game
* @param {string} gameApiKey - API key returned after registering the game
* @param {Array<Object>} points - Array of { playerId, points }
* @returns {Promise<Object>} API response
*/
async function savePlayerPoints(gameApiKey, points) {
const signature = await getSignature();
const payload = {
gameApiKey,
points,
};
console.log('Submitting player points:', payload);
const response = await fetch(`https://api.opengameprotocol.com/play/dev/batch-save-points`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
Accept: 'application/json',
'x-auth-provider': 'hmac',
Authorization: signature,
},
body: JSON.stringify(payload),
});
if (!response.ok) {
const errorText = await response.text();
throw new Error(
`Save points failed: ${response.status} ${response.statusText} - ${errorText}`
);
}
const result = await response.json();
console.log('Save points response:', result);
return result;
}
// Example usage:
savePlayerPoints(
'YOUR_GAME_API_KEY',
[{ playerId: 'player123', points: '100' }],
);Last updated