Skip to content

Latest commit

 

History

History
41 lines (29 loc) · 1.91 KB

README.md

File metadata and controls

41 lines (29 loc) · 1.91 KB

LevelingService

Exorath's leveling Microservice written in Go.

##Endpoints

###/players/{uuid}/xp/{xp} [POST]: ####Adds experience to a user's leveling-service account (And levels the player up if neccessary). Arguments:

  • uuid (string): the uuid of the player
  • xp (integer): The amount of experience to grant the player
  • err: optional error

Response: {"success", true}

Behind the scenes (Design doc): When this endpoint is called, an increment is send to the DB. While the player has more experience then required for a level up, he will keep leveling up (as soon as there's not enough experience, this stops). The level-up query is molecular: It requires demands for enough experience to deduct, and the level must be not have increased, if these requirements are not met, the level-up loop terminates.

###/players/{uuid} [GET]: ####gets current experience, current level and unconsumed levels Arguments:

  • uuid (string): the uuid of the player

Response: {"xp": 1624, "lvl": 20, "consumable":[19,20]}

  • xp: the current experience of the player
  • lvl: the current level of the player
  • consumable: the levels that can be processed for a reward (Maybe a more advanced consumable will be a cool feature in the future, allowing for multiple consumers).
  • err: optional error

###/player/{uuid}/consume/{lvl} [POST]: ####Consumes an unconsumed level. Should be called when a reward was granted for the level up (For the reward to be a real transaction, post the consumed level somewhere in the reward document, and check if it already exists to not consume twice before this method can be executed)

Arguments:

  • uuid (string): the uuid of the player
  • lvl (number): the level to consume

Response: {"success": true}

  • success: whether or not the consumption succeeded
  • err: optional error

Source disclaimer: This is our first Golang written service, expect many code best practices to be broken in the source!