UNPKG

tempus-api-graphql

Version:

A GraphQL wrapper for the tempus api (tempus2.xyz)

111 lines (90 loc) 3.09 kB
# tempus-api-graphql A [GraphQL](https://graphql.org/) wrapper for the [tempus](https://tempus2.xyz/) API. The spiritual successor of [tempus-api](https://github.com/arispoloway/tempus-api). [![npm version](https://badge.fury.io/js/tempus-api-graphql.svg)](https://badge.fury.io/js/tempus-api-graphql) ## Usage ### Hosted This GraphQL API is hosted at [tempus.nolem.me](https://tempus.nolem.me) via [tempus-api-graphql-worker](https://github.com/arispoloway/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](https://www.npmjs.com/package/graphql)). Below is an example usage: ```js 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: ```json { "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](https://xff7m.csb.app/) that uses `tempus-api-graphql` to power an entirely in-browser `GraphiQL` instance. Source for this example found [here](https://codesandbox.io/s/graphiql-tempus-api-graphql-demo-xff7m). ### 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](https://github.com/graphql/graphiql) instance at `localhost:4000/graphiql`.