Coder Social home page Coder Social logo

battlerite's Introduction

Battlerite.js

This is a Javascript API client wrapper for Battlerite. If you run into problems or find bugs, file an issue.

Installation

$ yarn add battlerite
# or npm install battlerite

To initalize the library

import Battlerite from 'battlerite';
const battlerite = new Battlerite('api-key');

Base options can be modified by passing an object during initalization.

Properties

  • host [String] - HTTP Url to call
  • title [String] - X-TITLE-ID modifier
  • region [String] - (NOT USED - only for Vainglory - all Battlerite Game Data Service data is on the "global" region shard) Region of which game data to request (na, eu, sa, ea, sg) Reference
import Battlerite from 'battlerite';

// Defaults
const options = {
  host: 'https://api.dc01.gamelockerapp.com/shards/',
  region: 'global', // only valid region currently
  title: 'semc-vainglory', // not required <?> TODO: fix defaults
};

const battlerite = new Battlerite('api-key', options);

Reference (previously for Vainglory, updating for Battlerite SOON, all docs here are for Vainglory - there may be overlap)

All methods are named references from the Official API Reference. All methods will return a promise.

You can check on the property .errors to determine if a response has errored and the subsequent message that follows. .debug will provide request and header information.

Example

{ errors: true,
  messages: 'The specified object could not be found.',
  region: 'na',
  debug:
   { url: 'https://api.dc01.gamelockerapp.com/shards/na/matches?page[offset]=0&page[limit]=50&sort=createdAt&filter[createdAt-start]=2017-03-02T00:28:32.721Z&filter[createdAt-end]=2017-03-02T03:28:32.721Z&filter[playerNames]=&filter[teamNames]=',
     status: 'https://api.dc01.gamelockerapp.com/status',
     headers:
      { 'Content-Encoding': 'gzip',
        'Content-Type': 'application/json',
        'User-Agent': 'js/vainglory',
        Accept: 'application/vnd.api+json',
        Authorization: 'Bearer aaa.bbb.ccc',
        'X-TITLE-ID': 'semc-vainglory'
      }
    }
  },
  rateLimit:
    { limit: '10',
      remaining: '9',
      reset: '6000000000',
      requestId: 'some-arbitrary-id' }
    }

Rate limit information is attached to every request. All models will return .rateLimit, see the Reference for more information or if you need to increase your rate limit.

  rateLimit:
    { limit: '10',
      remaining: '9',
      reset: '6000000000',
      requestId: 'some-arbitrary-id' }
    }

Telemetry data can be retrieved from the match model under assets. Assets is an array of asset.

Example

const matchId = 'f5373c40-0aa9-11e7-bcff-0667892d829e';
vainglory.matches.single(matchId).then((match) => {
  console.log(match.assets) // array of asset
}).catch((err) => console.error(err));

.resolve()

If you would like to resolve telemetry data, you can call .resolve() directly on the asset. Note that this currently returns the raw data that is associated with .URL.

const matchId = 'f5373c40-0aa9-11e7-bcff-0667892d829e';
vainglory.matches.single(matchId).then(async (match) => {
  const telemetry = await match.assets[0].resolve();
  console.log(telemetry);
}).catch((err) => console.error(err));

vainglory.status

Returns API meta information.

vainglory.status().then((info) => console.log(info));

Example Response

{
  id: 'gamelocker', // From server
  releasedAt: '2017-02-24T20:44:05Z', // From server
  version: 'gamelockerd-v4.0.2', // From server
  clientVersion: '0.8.1' // From VaingloryJS
}

vainglory.region

Changes the region for the current request.

vainglory.region('sg').matches... // will return data from `sg` region
vainglory.matches... // data from the region that was initialized (defaults to na)
vainglory.players... // data from the region that was initialized (defaults to na)

vainglory.setRegion

Sets the region for the instance.

vainglory.setRegion('sg'); // Overwrites parent
vainglory.matches... // will return data from `sg` region
vainglory.players... // will return data from `sg` region

vainglory.models

Exposed data models. See mock data in tests to see how data should be referenced.

const match = new vainglory.models.match({data: ...match});
const matches = new vainglory.models.matches({data: ...matches});
const player = new vainglory.models.player({data: ...player});
const participant = new vainglory.models.participant({data: ...participant});
const roster = new vainglory.models.roster({data: ...roster});

Matches

vainglory.matches

Retrieves all matches. Reference

Arguments

  • options [Object] - Query paramaters
const now = new Date();
const minus28days = new Date();

minus28Days.setDate(now.getDate() - 28);

/* defaults */
const options = {
  page: {
    offset: 0,
    limit: 50,
  },
  sort: 'createdAt', // -createdAt for reverse
  filter: {
    'createdAt-start': minus28days.toISOString(), // ISO Date
    'createdAt-end': now.toISOString(), // ISO Date
    playerNames: [],
    teamNames: [],
  },
};

Returns

Example

vainglory.matches.collection(options).then((matches) => {
  if (matches.errors) {
    return console.log(matches);
  }
  console.log(matches);
}).catch((errors) => {
  console.log(errors);
});

Retreives a single match by ID. Reference

Arguments

  • matchId [String] - The ID of match to retrieve

Returns

Example

const matchId = '0123b560-d74c-11e6-b845-0671096b3e30';

vainglory.matches.single(matchId).then((match) => {
  if (match.errors) return;
  console.log(match);
}).catch((errors) => {
  console.log(errors);
});

Players

vainglory.players

Retreives a single player by playerId. Reference

Arguments

  • playerId [String] - The ID of player to retrieve

Returns

Example

const playerId = '6abb30de-7cb8-11e4-8bd3-06eb725f8a76';

vainglory.players.getById(playerId).then((player) => {
  if (player.errors) return;
  console.log(player);
}).catch((errors) => {
  console.log(errors);
});

Retreives players by playerName. Reference

Arguments

  • playerNames [Array] - The name of players to retrieve. Max length of 6.

Returns

Example

const playerNames = ['famous'];

vainglory.players.getByName(playerNames).then((players) => {
  if (players.errors || players.player) return;
  players.player.forEach(player => {
    console.log(player.id);
    console.log(player.stats);
  }
}).catch((errors) => {
  console.log(errors);
});

Tournament

vainglory.tournament

Tournament data is stored in seperate shards as they take place on a private client. After you call region, you can bind the same methods you would use to call matches or player data. Reference

Arguments

  • region [String] - Optional - Region of which tournament data to request (na, eu, sa, ea, sg). Note if this is blank, it will request whichever region data that was specified from setRegion or region Reference

Returns

Example

// Referencing Mathces
vainglory.tournament.region('na').matches.collection().then((matches) => {
  console.log(matches);
}).catch((err) => console.log(err));

// Or referencing Players
const playerNames = ['SOMEONE','SOMEONE_ELSE'];

vainglory.tournament.region('na').players.getByName(playerNames).then((players) => {
  console.log(players);
}).catch((err) => console.log(err));

Models

All results are wrapped with its respective data model.

  • .type - Returns the type of data requested
  • .id - Returns associated ID
  • .raw - Returns raw data from server

Remapped items vs server names

For fields in participant such as actor or itemGrants, server will return *1000_Item_HalcyonPotion*. The client will return Halcyon Potion automatically based on field mappings. If you would like the original response, instead of calling .stats directly, use ._stats or ._actor instead of .actor.

Ref

  • .assets - Array of Asset
  • .createdAt
  • .duration
  • .gameMode
  • .patchVersion
  • .shardId
  • .stats
  • .titleId
  • .rosters - Array of Roster

Ref

  • .URL
  • .contentType
  • .createdAt
  • .description
  • .filename
  • .name
  • .resolve() - Returns promise; resolves .URL data

Ref

Ref

  • ._actor
  • .actor
  • ._stats
  • .stats
  • .player - Player
  • .name
  • .shardId
  • .stats
  • .titleId
  • .skillTier
  • .karmaLevel
  • .createdAt

battlerite's People

Contributors

brianglhf avatar buddyp450 avatar pierreandreis avatar rudovjan avatar seripap avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.