Skip to content

A sleek, easy-to-use wrapper for making API calls to Riot and DataDragon with built-in rate limiting

License

Notifications You must be signed in to change notification settings

junioryono/Riot-API-Golang

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

149 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Automated Version Tagging

⚡️ Riot-API-Golang

A sleek, easy-to-use wrapper for making API calls to Riot and DataDragon with built-in rate limiting

The Riot-API-Golang provides a simplified interface to access Riot Games and DataDragon APIs in Golang. It smoothly handles Riot's rate limiting, making your development experience hassle-free.

Features

  • 🚀 Simple to use
  • 🧠 Intelligent rate limiting
  • 🎮 Access to Riot Games and DataDragon APIs

Installation

go get github.com/junioryono/Riot-API-Golang

Example Usage (Riot API)

continent continent.Continent, gameName, tagLine string

func main() {
	apiKey := "RGAPI-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
	client := apiclient.New(apiKey)

	riotAccount, err := client.GetAccountByRiotID(continent.AMERICAS, "Mighty Junior", "NA1")
	if err != nil {
		panic(err)
	}

	matchlist, err := client.GetMatchlist(region.NA1.Continent(), riotAccount.Puuid, nil)
	if err != nil {
		panic(err)
	}

	matchID := (*matchlist)[0]

	match, err := client.GetMatch(region.NA1.Continent(), matchID)
	if err != nil {
		panic(err)
	}

	fmt.Println(match.Info.GameCreation)
}

Example Usage (Riot API - With Context)

func main() {
	apiKey := "RGAPI-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
	client := apiclient.New(apiKey)

	riotAccount, err := client.GetAccountByRiotID(continent.AMERICAS, "Mighty Junior", "NA1")
	if err != nil {
		panic(err)
	}

	matchlist, err := client.WithContext(context.TODO()).GetMatchlist(region.NA1.Continent(), riotAccount.Puuid, nil)
	if err != nil {
		panic(err)
	}

	matchID := (*matchlist)[0]

	match, err := client.WithContext(context.TODO()).GetMatch(region.NA1.Continent(), matchID)
	if err != nil {
		panic(err)
	}

	fmt.Println(match.Info.GameCreation)
}

Example Usage (DDragon)

func main() {
	patches, err := staticdata.GetPatches()
	if err != nil {
		panic(err)
	}

	currentPatch := patches.CurrentPatch()

	champions, err := staticdata.GetChampions(currentPatch, language.EnglishUnitedStates)
	if err != nil {
		panic(err)
	}

	champ, err := champions.Champion("MonkeyKing")
	if err != nil {
		panic(err)
	}

	fmt.Println(champ.Blurb)
}

Request Throttling

Throttle the number of requests made to Riot's APIs. This is beneficial if a frontend portion of the application exists.

conservation := ratelimiter.ConserveUsage{
    RegionPercent: 30,
    MethodPercent: 30,
}

client.SetUsageConservation(conservation)

Ignore limits for specific methods. The region's conservation percentage will still be followed.

conservation := ratelimiter.ConserveUsage{
    RegionPercent: 30,
    MethodPercent: 30,
    IgnoreLimits: []ratelimiter.MethodID{
        ratelimiter.GetLeagueEntriesChallenger,
        ratelimiter.GetLeagueEntriesGrandmaster,
        ratelimiter.GetLeagueEntriesMaster,
        ratelimiter.GetLeagueEntries,
    },
}

client.SetUsageConservation(conservation)

Request Error Handling

How many times Riot API requests will be retried when unsuccessful. By default, requests will be retried indefinitely (-1).

client.SetMaxRetries(3)

Contributing

Interested in contributing to Riot-API-Golang? Check out the contributing guide to see how you can make an impact.

License

Riot-API-Golang is licensed under the MIT license. See the LICENSE file for more info.

Support

If you encounter any issues or have questions, please file an issue on the GitHub issues page.

About

A sleek, easy-to-use wrapper for making API calls to Riot and DataDragon with built-in rate limiting

Resources

License

Contributing

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •  

Languages