Skip to content

arispoloway/tempus-api-graphql

Repository files navigation

tempus-api-graphql

A GraphQL wrapper for the tempus API. The spiritual successor of tempus-api.

npm version

Usage

Hosted

This GraphQL API is hosted at tempus.nolem.me via tempus-api-graphql-worker.

Using this hosted service with your favorite GraphQL client/library will likely be the simplest way to access this GraphQL API.

As a dependency of another project

For JS projects, this package exports a GraphQLSchema object to be used with the graphql package (link).

Below is an example usage:

const { graphql } = require("graphql");
const { schema } = require("tempus-api-graphql");

const query = `
{
  map(name: "jump_rush") {
    authors {
      name
      player {
        steamId
        country
      }
    }
    records(limit: 1, class: SOLDIER) {
      duration
      player {
        name
      }
      demo {
        url
        server {
          name
          online
        }
      }
    }
  }
}`;
graphql(schema, query).then((result) => {
  console.log(result);
});

Under the hood, this would request the 6 endpoints required to resolve all of the requested fields:

  • jump_rush map overview
  • jump_rush map record listing
  • author player stats
  • record overview
  • demo overview
  • server status list

These requests are cached and the resolvers attempt to make the fewest requests possible to resolve the requested fields.

At time of writing, that query results in the following:

{
  "data": {
    "map": {
      "authors": [
        {
          "name": "Bob+M|M+",
          "player": {
            "steamId": "STEAM_0:1:19865974",
            "country": "United States"
          }
        }
      ],
      "records": {
        "soldier": [
          {
            "duration": 46.91956281661987,
            "player": {
              "name": "Boshy"
            },
            "demo": {
              "url": "http://tempus-demos.s3.amazonaws.com/23/auto-20181102-140940-jump_rush.zip",
              "server": {
                "name": "jump.tf (France) Rank 50 Only",
                "online": true
              }
            }
          }
        ]
      }
    }
  }
}

Check out an example project that uses tempus-api-graphql to power an entirely in-browser GraphiQL instance. Source for this example found here.

Standalone

This repo also includes a graphiql script for running a standalone GraphQL server with express-graphql. To start the server, clone this repo and run npm install and npm run graphiql.

This will start a server listening at localhost:4000/graphql, along with a GraphiQL instance at localhost:4000/graphiql.

About

A JS GraphQL wrapper for the tempus.xyz API

Topics

Resources

Stars

Watchers

Forks

Contributors 3

  •  
  •  
  •