Skip to content

Commit

Permalink
routes!
Browse files Browse the repository at this point in the history
  • Loading branch information
thewilloftheshadow committed Apr 27, 2023
1 parent 2cf56cd commit 25f0167
Show file tree
Hide file tree
Showing 12 changed files with 761 additions and 93 deletions.
2 changes: 1 addition & 1 deletion .github/CODEOWNERS
Validating CODEOWNERS rules …
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
* @thewilloftheshadow
/packages/kiai.js @OIRNOIR
/packages/kiai.js @thewilloftheshadow @OIRNOIR
2 changes: 1 addition & 1 deletion packages/kiai.js/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@
"node": ">=16.17.1"
},
"dependencies": {
"@buape/kiai-api-types": "^1.0.0",
"@buape/kiai-api-types": "^1.1.0",
"ms": "^2.1.3",
"node-fetch": "^3.3.1"
},
Expand Down
9 changes: 8 additions & 1 deletion packages/kiai.js/src/KiaiClient.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,18 @@
import { RateLimitError } from "@buape/kiai-api-types"
import { RequestHandler } from "./RequestHandler"
import * as handlers from "./handlers"

export class KiaiClient {
apiKey: string
baseURL: string
debug: boolean

blacklist = new handlers.Blacklist(this)
leveling = new handlers.Leveling(this)
multipliers = new handlers.Multipliers(this)
rewards = new handlers.Rewards(this)
settings = new handlers.Settings(this)

_requestHandler: RequestHandler

/**
Expand All @@ -24,7 +31,7 @@ export class KiaiClient {
}

public async getRatelimit() {
const res = await this._requestHandler.request("/ratelimit", {}, "GET", {}, true)
const res = await this._requestHandler.request("/ratelimit", "GET", {}, {}, true)
return res as RateLimitError
}

Expand Down
12 changes: 8 additions & 4 deletions packages/kiai.js/src/RequestHandler.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,13 @@ export class RequestHandler {
}

// eslint-disable-next-line @typescript-eslint/no-explicit-any
async request(endpoint: string, query = {}, method = "GET", body: { [key: string]: any }, noError: boolean = false) {
async request(
endpoint: string,
method: "GET" | "POST" | "PATCH" | "PUT" | "DELETE" = "GET",
query = {},
body: { [key: string]: any } = {},
noError: boolean = false
) {
const url = `${this._client.baseURL}${endpoint}${toQueryString(query)}`
const options = {
method,
Expand All @@ -23,9 +29,7 @@ export class RequestHandler {
try {
const res = await fetch(url, options)
if (res.status >= 200 && res.status < 300) {
const json = (await res.json()) as {
[key: string]: unknown
}
const json = (await res.json())
if (this._client.debug) console.debug("Success: \n", json)
return json
} else if (res.status === 429) {
Expand Down
34 changes: 19 additions & 15 deletions packages/kiai.js/src/handlers/Blacklist.ts
Original file line number Diff line number Diff line change
@@ -1,24 +1,28 @@
import { KiaiClient } from "../index"
import { BaseHandler } from "."
import { Blacklist as APIBlacklist, Message } from "@buape/kiai-api-types"

export class Blacklist {
_client: KiaiClient
constructor(client: KiaiClient) {
this._client = client
export class Blacklist extends BaseHandler {
async getBlacklists(guildId: string) {
const result = (await this._client._requestHandler.request(`/guild/${guildId}/blacklist`)) as APIBlacklist[]
return result
}

getBlacklists(guildId: string) {
return {}
async createBlacklist(guildId: string, data: APIBlacklist) {
const result = (await this._client._requestHandler.request(`/guild/${guildId}/blacklist`, "POST", {}, data)) as Message
return result
}

createBlacklist(guildId: string, type: "guild" | "channel" | "role", value: string) {
return {}
async deleteAllBlacklists(guildId: string) {
const result = (await this._client._requestHandler.request(`/guild/${guildId}/blacklist`, "DELETE")) as {
users: number
roles: number
channels: number
}
return result
}

deleteAllBlacklists(guildId: string) {
return {}
}

deleteBlacklist(guildId: string, type: "guild" | "channel" | "role", id: string) {
return {}
async deleteBlacklist(guildId: string, data: APIBlacklist) {
const result = (await this._client._requestHandler.request(`/guild/${guildId}/blacklist/${data.type}/${data.id}`, "DELETE")) as Message
return result
}
}
55 changes: 36 additions & 19 deletions packages/kiai.js/src/handlers/Leveling.ts
Original file line number Diff line number Diff line change
@@ -1,32 +1,49 @@
import { KiaiClient } from "../index"
import { Leaderboard, LevelData, Message } from "@buape/kiai-api-types"
import { BaseHandler } from "."

export class Leveling {
_client: KiaiClient
constructor(client: KiaiClient) {
this._client = client
export class Leveling extends BaseHandler {
async getLeaderboard(guildId: string) {
const result = (await this._client._requestHandler.request(`/guild/${guildId}/leaderboard`)) as Leaderboard
return result
}

getLeaderboard(guildId: string) {
return {}
async getMember(guildId: string, userId: string) {
const result = (await this._client._requestHandler.request(`/guild/${guildId}/member/${userId}`)) as LevelData
return result
}

getMember(guildId: string, userId: string) {
return {}
async addXp(guildId: string, userId: string, xp: number) {
const result = (await this._client._requestHandler.request(
`/guild/${guildId}/member/${userId}/xp`,
"PATCH",
{},
{
xp
}
)) as Message
return result
}

addXp(guildId: string, userId: string, xp: number) {
return {}
async removeXp(guildId: string, userId: string, xp: number) {
const result = (await this._client._requestHandler.request(
`/guild/${guildId}/member/${userId}/xp`,
"PATCH",
{},
{
xp,
remove: true
}
)) as Message
return result
}

removeXp(guildId: string, userId: string, xp: number) {
return this.addXp(guildId, userId, -xp)
async setXp(guildId: string, userId: string, xp: number) {
const result = (await this._client._requestHandler.request(`/guild/${guildId}/member/${userId}/xp`, "PUT", {}, { xp })) as Message
return result
}

setXp(guildId: string, userId: string, xp: number) {
return {}
}

setXpBulk(guildId: string, data: { userId: string; xp: number }[]) {
return {}
async setXpBulk(guildId: string, data: { userId: string; xp: number }[]) {
const result = (await this._client._requestHandler.request(`/guild/${guildId}/members/xp`, "PUT", {}, { data })) as Message
return result
}
}
45 changes: 28 additions & 17 deletions packages/kiai.js/src/handlers/Multipliers.ts
Original file line number Diff line number Diff line change
@@ -1,28 +1,39 @@
import { KiaiClient } from "../index"
import { ChannelMultiplier, GuildMultiplier, Message, Multiplier, RoleMultiplier } from "@buape/kiai-api-types"
import { BaseHandler } from "."

export class Multipliers {
_client: KiaiClient
constructor(client: KiaiClient) {
this._client = client
export class Multipliers extends BaseHandler {
async getMultipliers(guildId: string) {
const result = (await this._client._requestHandler.request(`/guild/${guildId}/multipliers`)) as Multiplier[]
return result
}

getMultipliers(guildId: string) {
return {}
async createMultiplier(guildId: string, data: Multiplier) {
const result = (await this._client._requestHandler.request(`/guild/${guildId}/multipliers`, "POST", {}, data)) as Message
return result
}

createMultiplier(data) {
return {}
async resetMultipliers(guildId: string) {
const result = (await this._client._requestHandler.request(`/guild/${guildId}/multipliers`, "DELETE")) as { channels: number; roles: number }
return result
}

resetMultipliers(guildId: string) {
return {}
async getMultiplier(guildId: string, type: "channel" | "role" | "guild", id: string) {
const result = await this._client._requestHandler.request(`/guild/${guildId}/multipliers/${type}${type === "guild" ? "" : `/${id}`}`)
switch (type) {
case "channel":
return result as ChannelMultiplier
case "role":
return result as RoleMultiplier
case "guild":
return result as GuildMultiplier
}
}

getMultiplier(guildId: string, type: string, id: string) {
return {}
}

clearMultiplier(guildId: string, type: string, id: string) {
return {}
async clearMultiplier(guildId: string, type: "channel" | "role" | "guild", id: string) {
const result = (await this._client._requestHandler.request(
`/guild/${guildId}/multipliers/${type}${type === "guild" ? "" : `/${id}`}`,
"DELETE"
)) as Message
return result
}
}
30 changes: 15 additions & 15 deletions packages/kiai.js/src/handlers/Rewards.ts
Original file line number Diff line number Diff line change
@@ -1,24 +1,24 @@
import { KiaiClient } from "../index"
import { Message, Reward } from "@buape/kiai-api-types"
import { BaseHandler } from "."

export class Rewards {
_client: KiaiClient
constructor(client: KiaiClient) {
this._client = client
export class Rewards extends BaseHandler {
async getRewards(guildId: string) {
const result = (await this._client._requestHandler.request(`/guild/${guildId}/rewards`)) as Reward[]
return result
}

getRewards(guildId: string) {
return {}
}

createReward() {
return {}
async createReward(guildId: string, data: Reward) {
const result = (await this._client._requestHandler.request(`/guild/${guildId}/rewards`, "POST", {}, data)) as Message
return result
}

clearRewards() {
return {}
async clearRewards(guildId: string) {
const result = (await this._client._requestHandler.request(`/guild/${guildId}/rewards`, "DELETE")) as Message
return result
}

deleteReward() {
return {}
async deleteReward(guildId: string, id: string) {
const result = (await this._client._requestHandler.request(`/guild/${guildId}/rewards/${id}`, "DELETE")) as Message
return result
}
}
33 changes: 23 additions & 10 deletions packages/kiai.js/src/handlers/Settings.ts
Original file line number Diff line number Diff line change
@@ -1,16 +1,29 @@
import { KiaiClient } from "../index"
import { ApiPermission, GuildSettings } from "@buape/kiai-api-types"
import { BaseHandler } from "."

export class Settings {
_client: KiaiClient
constructor(client: KiaiClient) {
this._client = client
export class Settings extends BaseHandler {
async getSettings(guildId: string) {
const result = (await this._client._requestHandler.request(`/guild/${guildId}/settings`)) as GuildSettings
return result
}

getSettings(guildId: string) {
return {}
}
async getPermissions(guildId: string) {
const result = (await this._client._requestHandler.request(`/guild/${guildId}/permissions`)) as number
// convert result to an array of permissions from the ApiPermission enum
const permissions: ApiPermission[] = []

let bit = 0
let num = result

while (num > 0) {
if (num & 1) {
const permission = 1 << bit
permissions.push(permission)
}
num >>= 1
bit++
}

getPermissions(guildId: string) {
return {}
return permissions
}
}
14 changes: 14 additions & 0 deletions packages/kiai.js/src/handlers/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import { KiaiClient } from ".."

export { Blacklist } from "./Blacklist"
export { Leveling } from "./Leveling"
export { Multipliers } from "./Multipliers"
export { Rewards } from "./Rewards"
export { Settings } from "./Settings"

export class BaseHandler {
public _client: KiaiClient
constructor(client: KiaiClient) {
this._client = client
}
}
3 changes: 1 addition & 2 deletions packages/kiai.js/src/index.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import { KiaiClient } from "./KiaiClient"
export { KiaiClient }

export { APIError } from "./errors/APIError"
export { RatelimitError } from "./errors/RatelimitError"

export * as Types from "@buape/kiai-api-types"
export * as Types from "@buape/kiai-api-types"
Loading

0 comments on commit 25f0167

Please sign in to comment.