This repository has been archived on 2022-09-04. You can view files and clone it, but cannot push or open issues or pull requests.
Go to file
Dawid Wysokiński c79f93844e add github.com/Kichiyaki/go-pg-logrus-query-logger/v10 and github.com/Kichiyaki/gin-logrus 2021-04-23 20:55:06 +02:00
.circleci Add .circleci/config.yml 2021-02-06 12:39:55 +01:00
dailyplayerstats add the 'Select' option to the FetchConfigs 2021-03-21 13:03:39 +01:00
dailytribestats add the 'Select' option to the FetchConfigs 2021-03-21 13:03:39 +01:00
ennoblement add the 'Select' option to the FetchConfigs 2021-03-21 13:03:39 +01:00
graphql increase query complexity 2021-04-22 19:49:50 +02:00
middleware add the 'Select' option to the FetchConfigs 2021-03-21 13:03:39 +01:00
player add the 'Select' option to the FetchConfigs 2021-03-21 13:03:39 +01:00
playerhistory add the 'Select' option to the FetchConfigs 2021-03-21 13:03:39 +01:00
scripts update go version in go.mod file, move shell scripts to the separated directory, add Makefile 2021-02-23 18:01:11 +01:00
server add the 'Select' option to the FetchConfigs 2021-03-21 13:03:39 +01:00
servermap fix server map generation 2021-03-21 13:21:24 +01:00
serverstats add the 'Select' option to the FetchConfigs 2021-03-21 13:03:39 +01:00
tribe add the 'Select' option to the FetchConfigs 2021-03-21 13:03:39 +01:00
tribechange add the 'Select' option to the FetchConfigs 2021-03-21 13:03:39 +01:00
tribehistory add the 'Select' option to the FetchConfigs 2021-03-21 13:03:39 +01:00
utils move safeStrPointer and safeIntPointer from the resolvers package to the utils package 2021-03-21 07:50:19 +01:00
version add the 'Select' option to the FetchConfigs 2021-03-21 13:03:39 +01:00
village add the 'Select' option to the FetchConfigs 2021-03-21 13:03:39 +01:00
.gitignore add github.com/Kichiyaki/go-pg-logrus-query-logger/v10 and github.com/Kichiyaki/gin-logrus 2021-04-23 20:55:06 +02:00
Dockerfile update go version in go.mod file, move shell scripts to the separated directory, add Makefile 2021-02-23 18:01:11 +01:00
LICENSE add LICENSE, update README.md 2020-08-24 13:33:30 +02:00
Makefile rename utils.SanitizeSortExpressions -> utils.SanitizeSorts, add query complexity limit 2021-03-20 18:13:45 +01:00
README.md update README.md 2021-03-21 13:11:28 +01:00
go.mod add github.com/Kichiyaki/go-pg-logrus-query-logger/v10 and github.com/Kichiyaki/gin-logrus 2021-04-23 20:55:06 +02:00
go.sum add github.com/Kichiyaki/go-pg-logrus-query-logger/v10 and github.com/Kichiyaki/gin-logrus 2021-04-23 20:55:06 +02:00
main.go add github.com/Kichiyaki/go-pg-logrus-query-logger/v10 and github.com/Kichiyaki/gin-logrus 2021-04-23 20:55:06 +02:00

README.md

TWHelp API

A GraphQL API for Tribal Wars data.

API Limits

You can fetch in one GraphQL query:

  1. 1000 daily player/tribe stats records
  2. 200 ennoblements
  3. 30 versions
  4. 200 players/tribes
  5. 1000 villages
  6. 100 player/tribe history records
  7. 100 servers
  8. 60 server stats records
  9. 100 tribe changes

Sample queries

You can check how to make requests from JavaScript here.

  1. All bonus villages with 10% more population
query {
    villages(server: "en115", filter: { playerID: [0], bonus: 4 }) {
        total
        items {
            id
            name
            x
            y
            points
        }
    }
}

  1. Top 30 players without a tribe, ordered by points.
query {
    players(
        server: "pl148"
        filter: { tribeID: [0] }
        sort: ["points DESC"]
        limit: 30
    ) {
        total
        items {
            id
            name
            rank
            points
            totalVillages
            rankAtt
            rankDef
            rankTotal
            rankSup
        }
    }
}

  1. Search a player by a nickname fragment.
query {
    players(server: "pl148", filter: { nameIEQ: "%pablo%" }) {
        total
        items {
            id
            name
        }
    }
}

Map service

You can generate a server map with this API. The current endpoint is http(s)://youraddress/map/server (replace "server" with the server you're interested in, for example, pl151).

Available query params:

Param Default
showBarbarians false
largerMarkers false
markersOnly false
centerX 500
centerY 500
scale 1 (max 5)
showGrid false
showContinentNumbers false
backgroundColor #000
gridLineColor #fff
continentNumberColor #fff
tribe(this param you can define multiple times) format tribeid,hexcolor (for example, tribe=631,#0000ff)
player(this param you can define multiple times) format playerid,hexcolor (for example, player=631,#0000ff)

Example

pl151 Map

Development

Required env variables to run this API:

DB_USER=your_pgdb_user
DB_NAME=your_pgdb_name
DB_PORT=your_pgdb_port
DB_HOST=your_pgdb_host
DB_PASSWORD=your_pgdb_password
LIMIT_WHITELIST=127.0.0.1,::1
LOG_DB_QUERIES=[true|false]

Prerequisites

  1. Golang
  2. PostgreSQL database
  3. Configured cron

Installing

  1. Clone this repo.
  2. Navigate to the directory where you have cloned this repo.
  3. Set the required env variables directly in your system or create .env.development file.
  4. go run main.go