Skip to content

Commit aa36611

Browse files
authored
Update Error Handling (#19)
* all endpoints now pass all errors to the client * all endpoints now log all errors to console Signed-off-by: Keith Russo <[email protected]>
1 parent 7d027f6 commit aa36611

17 files changed

+1034
-206
lines changed

api/application_commands_endpoints.go

+100-14
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ import (
2020
"encoding/json"
2121
"fmt"
2222
"strconv"
23+
24+
log "github.com/veteran-software/nowlive-logging"
2325
)
2426

2527
// GetGlobalApplicationCommands - Fetch all the global commands for your application.
@@ -36,7 +38,13 @@ func GetGlobalApplicationCommands(applicationID Snowflake, withLocalizations boo
3638
u.RawQuery = q.Encode()
3739

3840
var commands []*ApplicationCommand
39-
err := json.Unmarshal(fireGetRequest(u, nil, nil), &commands)
41+
responseBytes, err := fireGetRequest(u, nil, nil)
42+
if err != nil {
43+
log.Errorln(log.Discord, log.FuncName(), err)
44+
return nil, err
45+
}
46+
47+
err = json.Unmarshal(responseBytes, &commands)
4048

4149
return commands, err
4250
}
@@ -55,7 +63,13 @@ func CreateGlobalApplicationCommand(applicationID Snowflake, payload CreateAppli
5563
u := parseRoute(fmt.Sprintf(createGlobalApplicationCommand, api, applicationID.String()))
5664

5765
var command *ApplicationCommand
58-
err := json.Unmarshal(firePostRequest(u, payload, nil), &command)
66+
responseBytes, err := firePostRequest(u, payload, nil)
67+
if err != nil {
68+
log.Errorln(log.Discord, log.FuncName(), err)
69+
return nil, err
70+
}
71+
72+
err = json.Unmarshal(responseBytes, &command)
5973

6074
return command, err
6175
}
@@ -82,7 +96,13 @@ func (i *Interaction) GetGlobalApplicationCommand() (*ApplicationCommand, error)
8296
u := parseRoute(fmt.Sprintf(getGlobalApplicationCommand, api, i.ApplicationID.String(), i.Data.ID.String()))
8397

8498
var commands *ApplicationCommand
85-
err := json.Unmarshal(fireGetRequest(u, nil, nil), &commands)
99+
responseBytes, err := fireGetRequest(u, nil, nil)
100+
if err != nil {
101+
log.Errorln(log.Discord, log.FuncName(), err)
102+
return nil, err
103+
}
104+
105+
err = json.Unmarshal(responseBytes, &commands)
86106

87107
return commands, err
88108
}
@@ -96,7 +116,13 @@ func (i *Interaction) EditGlobalApplicationCommand(payload EditApplicationComman
96116
u := parseRoute(fmt.Sprintf(editGlobalApplicationCommand, api, i.ApplicationID.String(), i.Data.ID.String()))
97117

98118
var commands *ApplicationCommand
99-
err := json.Unmarshal(firePatchRequest(u, payload, nil), &commands)
119+
responseBytes, err := firePatchRequest(u, payload, nil)
120+
if err != nil {
121+
log.Errorln(log.Discord, log.FuncName(), err)
122+
return nil, err
123+
}
124+
125+
err = json.Unmarshal(responseBytes, &commands)
100126

101127
return commands, err
102128
}
@@ -138,7 +164,13 @@ func BulkOverwriteGlobalApplicationCommands(
138164
u := parseRoute(fmt.Sprintf(bulkOverwriteGlobalApplicationCommands, api, applicationID.String()))
139165

140166
var commands []*ApplicationCommand
141-
err := json.Unmarshal(firePutRequest(u, payload, nil), &commands)
167+
responseBytes, err := firePutRequest(u, payload, nil)
168+
if err != nil {
169+
log.Errorln(log.Discord, log.FuncName(), err)
170+
return nil, err
171+
}
172+
173+
err = json.Unmarshal(responseBytes, &commands)
142174

143175
return commands, err
144176
}
@@ -154,7 +186,13 @@ func (i *Interaction) GetGuildApplicationCommands(withLocalizations bool) ([]*Ap
154186
u.RawQuery = q.Encode()
155187

156188
var commands []*ApplicationCommand
157-
err := json.Unmarshal(fireGetRequest(u, nil, nil), &commands)
189+
responseBytes, err := fireGetRequest(u, nil, nil)
190+
if err != nil {
191+
log.Errorln(log.Discord, log.FuncName(), err)
192+
return nil, err
193+
}
194+
195+
err = json.Unmarshal(responseBytes, &commands)
158196

159197
return commands, err
160198
}
@@ -176,7 +214,13 @@ func GetGuildApplicationCommands(
176214
u.RawQuery = q.Encode()
177215

178216
var commands []*ApplicationCommand
179-
err := json.Unmarshal(fireGetRequest(u, nil, nil), &commands)
217+
responseBytes, err := fireGetRequest(u, nil, nil)
218+
if err != nil {
219+
log.Errorln(log.Discord, log.FuncName(), err)
220+
return nil, err
221+
}
222+
223+
err = json.Unmarshal(responseBytes, &commands)
180224

181225
return commands, err
182226
}
@@ -198,7 +242,13 @@ func CreateGuildApplicationCommand(
198242
u := parseRoute(fmt.Sprintf(createGuildApplicationCommand, api, applicationID.String(), guildID.String()))
199243

200244
var command *ApplicationCommand
201-
err := json.Unmarshal(firePostRequest(u, payload, nil), &command)
245+
responseBytes, err := firePostRequest(u, payload, nil)
246+
if err != nil {
247+
log.Errorln(log.Discord, log.FuncName(), err)
248+
return nil, err
249+
}
250+
251+
err = json.Unmarshal(responseBytes, &command)
202252

203253
return command, err
204254
}
@@ -216,7 +266,13 @@ func (i *Interaction) GetGuildApplicationCommand() (*ApplicationCommand, error)
216266
)
217267

218268
var command *ApplicationCommand
219-
err := json.Unmarshal(fireGetRequest(u, nil, nil), &command)
269+
responseBytes, err := fireGetRequest(u, nil, nil)
270+
if err != nil {
271+
log.Errorln(log.Discord, log.FuncName(), err)
272+
return nil, err
273+
}
274+
275+
err = json.Unmarshal(responseBytes, &command)
220276

221277
return command, err
222278
}
@@ -238,7 +294,13 @@ func (i *Interaction) EditGuildApplicationCommand(payload *EditApplicationComman
238294
)
239295

240296
var command *ApplicationCommand
241-
err := json.Unmarshal(firePatchRequest(u, payload, nil), &command)
297+
responseBytes, err := firePatchRequest(u, payload, nil)
298+
if err != nil {
299+
log.Errorln(log.Discord, log.FuncName(), err)
300+
return nil, err
301+
}
302+
303+
err = json.Unmarshal(responseBytes, &command)
242304

243305
return command, err
244306
}
@@ -279,7 +341,13 @@ func (i *Interaction) BulkOverwriteGuildApplicationCommands(payload []*Applicati
279341
)
280342

281343
var commands []*ApplicationCommand
282-
err := json.Unmarshal(firePutRequest(u, payload, nil), &commands)
344+
responseBytes, err := firePutRequest(u, payload, nil)
345+
if err != nil {
346+
log.Errorln(log.Discord, log.FuncName(), err)
347+
return nil, err
348+
}
349+
350+
err = json.Unmarshal(responseBytes, &commands)
283351

284352
return commands, err
285353
}
@@ -298,7 +366,13 @@ func (i *Interaction) GetGuildApplicationCommandPermissions() ([]*GuildApplicati
298366
)
299367

300368
var commandPerms []*GuildApplicationCommandPermissions
301-
err := json.Unmarshal(fireGetRequest(u, nil, nil), &commandPerms)
369+
responseBytes, err := fireGetRequest(u, nil, nil)
370+
if err != nil {
371+
log.Errorln(log.Discord, log.FuncName(), err)
372+
return nil, err
373+
}
374+
375+
err = json.Unmarshal(responseBytes, &commandPerms)
302376

303377
return commandPerms, err
304378
}
@@ -318,7 +392,13 @@ func (i *Interaction) GetApplicationCommandPermissions() (*GuildApplicationComma
318392
)
319393

320394
var commandPerms *GuildApplicationCommandPermissions
321-
err := json.Unmarshal(fireGetRequest(u, nil, nil), &commandPerms)
395+
responseBytes, err := fireGetRequest(u, nil, nil)
396+
if err != nil {
397+
log.Errorln(log.Discord, log.FuncName(), err)
398+
return nil, err
399+
}
400+
401+
err = json.Unmarshal(responseBytes, &commandPerms)
322402

323403
return commandPerms, err
324404
}
@@ -351,7 +431,13 @@ func (i *Interaction) EditApplicationCommandPermissions(payload *EditApplication
351431
)
352432

353433
var commandPerms *GuildApplicationCommandPermissions
354-
err := json.Unmarshal(firePutRequest(u, payload, nil), &commandPerms)
434+
responseBytes, err := firePutRequest(u, payload, nil)
435+
if err != nil {
436+
log.Errorln(log.Discord, log.FuncName(), err)
437+
return nil, err
438+
}
439+
440+
err = json.Unmarshal(responseBytes, &commandPerms)
355441

356442
return commandPerms, err
357443
}

api/application_role_connection_metadata_endpoints.go

+16-2
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ package api
1919
import (
2020
"encoding/json"
2121
"fmt"
22+
23+
log "github.com/veteran-software/nowlive-logging"
2224
)
2325

2426
// GetApplicationRoleConnectionMetadataRecords - Returns a list of ApplicationRoleConnectionMetadata objects for the given Application.
@@ -28,7 +30,13 @@ func GetApplicationRoleConnectionMetadataRecords(appID string) ([]*ApplicationRo
2830
u := parseRoute(fmt.Sprintf(getApplicationRoleConnectionMetadataRecords, api, appID))
2931

3032
var m []*ApplicationRoleConnectionMetadata
31-
err := json.Unmarshal(fireGetRequest(u, nil, nil), &m)
33+
responseBytes, err := fireGetRequest(u, nil, nil)
34+
if err != nil {
35+
log.Errorln(log.Discord, log.FuncName(), err)
36+
return nil, err
37+
}
38+
39+
err = json.Unmarshal(responseBytes, &m)
3240

3341
return m, err
3442
}
@@ -40,7 +48,13 @@ func UpdateApplicationRoleConnectionMetadataRecords(appID string) ([]*Applicatio
4048
u := parseRoute(fmt.Sprintf(updateApplicationRoleConnectionMetadataRecords, api, appID))
4149

4250
var m []*ApplicationRoleConnectionMetadata
43-
err := json.Unmarshal(firePutRequest(u, nil, nil), &m)
51+
responseBytes, err := firePutRequest(u, nil, nil)
52+
if err != nil {
53+
log.Errorln(log.Discord, log.FuncName(), err)
54+
return nil, err
55+
}
56+
57+
err = json.Unmarshal(responseBytes, &m)
4458

4559
return m, err
4660
}

api/audit_log_endpoints.go

+11-3
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ import (
2121
"errors"
2222
"fmt"
2323
"strconv"
24+
25+
log "github.com/veteran-software/nowlive-logging"
2426
)
2527

2628
// GetGuildAuditLog - Returns an audit log object for the Guild. Requires the ViewAuditLog permission.
@@ -65,8 +67,14 @@ func (g *Guild) GetGuildAuditLog(userID *Snowflake,
6567
u.RawQuery = q.Encode()
6668
}
6769

68-
var log AuditLog
69-
err := json.Unmarshal(fireGetRequest(u, nil, nil), &log)
70+
var auditLog *AuditLog
71+
responseBytes, err := fireGetRequest(u, nil, nil)
72+
if err != nil {
73+
log.Errorln(log.Discord, log.FuncName(), err)
74+
return nil, err
75+
}
76+
77+
err = json.Unmarshal(responseBytes, &auditLog)
7078

71-
return &log, err
79+
return auditLog, err
7280
}

api/auto_moderation_endpoints.go

+33-15
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import (
2222
"fmt"
2323

2424
utils "github.com/veteran-software/discord-api-wrapper/v10/utilities"
25+
log "github.com/veteran-software/nowlive-logging"
2526
)
2627

2728
// ListAutoModerationRulesForGuild - Get a list of all rules currently configured for the guild. Returns a list of auto moderation rule objects for the given guild.
@@ -47,7 +48,13 @@ func ListAutoModerationRulesForGuild(guildID string,
4748
u := parseRoute(fmt.Sprintf(listAutoModerationRulesForGuild, api, guildID))
4849

4950
var rules []*AutoModerationRule
50-
err = json.Unmarshal(fireGetRequest(u, nil, nil), &rules)
51+
responseBytes, err := fireGetRequest(u, nil, nil)
52+
if err != nil {
53+
log.Errorln(log.Discord, log.FuncName(), err)
54+
return nil, err
55+
}
56+
57+
err = json.Unmarshal(responseBytes, &rules)
5158

5259
return rules, err
5360
}
@@ -73,7 +80,13 @@ func GetAutoModerationRule(guildID string, channel *Channel, userID, ruleID *Sno
7380
u := parseRoute(fmt.Sprintf(getAutoModerationRule, api, guildID, ruleID.String()))
7481

7582
var rule *AutoModerationRule
76-
err = json.Unmarshal(fireGetRequest(u, nil, nil), &rule)
83+
responseBytes, err := fireGetRequest(u, nil, nil)
84+
if err != nil {
85+
log.Errorln(log.Discord, log.FuncName(), err)
86+
return nil, err
87+
}
88+
89+
err = json.Unmarshal(responseBytes, &rule)
7790

7891
return rule, err
7992
}
@@ -103,7 +116,13 @@ func CreateAutoModerationRule(guildID string,
103116
u := parseRoute(fmt.Sprintf(getAutoModerationRule, api, guildID, ruleID.String()))
104117

105118
var rule *AutoModerationRule
106-
err = json.Unmarshal(firePostRequest(u, payload, reason), &rule)
119+
responseBytes, err := firePostRequest(u, payload, reason)
120+
if err != nil {
121+
log.Errorln(log.Discord, log.FuncName(), err)
122+
return nil, err
123+
}
124+
125+
err = json.Unmarshal(responseBytes, &rule)
107126

108127
return rule, err
109128
}
@@ -144,7 +163,13 @@ func ModifyAutoModerationRule(guildID string,
144163
u := parseRoute(fmt.Sprintf(modifyAutoModerationRule, api, guildID, ruleID.String()))
145164

146165
var rule *AutoModerationRule
147-
err = json.Unmarshal(firePatchRequest(u, payload, reason), &rule)
166+
responseBytes, err := firePatchRequest(u, payload, reason)
167+
if err != nil {
168+
log.Errorln(log.Discord, log.FuncName(), err)
169+
return nil, err
170+
}
171+
172+
err = json.Unmarshal(responseBytes, &rule)
148173

149174
return rule, err
150175
}
@@ -154,26 +179,19 @@ func ModifyAutoModerationRule(guildID string,
154179
// This endpoint requires the ManageGuild permission.
155180
//
156181
//goland:noinspection GoUnusedExportedFunction
157-
func DeleteAutoModerationRule(guildID string,
158-
channel *Channel,
159-
userID,
160-
ruleID *Snowflake,
161-
reason *string) (*AutoModerationRule, error) {
182+
func DeleteAutoModerationRule(guildID string, channel *Channel, userID, ruleID *Snowflake, reason *string) error {
162183
g := &Guild{ID: *StringToSnowflake(guildID)}
163184

164185
member, err := g.GetGuildMember(userID)
165186
if err != nil {
166-
return nil, err
187+
return err
167188
}
168189

169190
if !CanManageGuild(member, channel) {
170-
return nil, errors.New(utils.ManageGuildPermissionsAreRequired)
191+
return errors.New(utils.ManageGuildPermissionsAreRequired)
171192
}
172193

173194
u := parseRoute(fmt.Sprintf(deleteAutoModerationRule, api, guildID, ruleID.String()))
174195

175-
var rule *AutoModerationRule
176-
err = json.Unmarshal(firePatchRequest(u, nil, reason), &rule)
177-
178-
return rule, err
196+
return fireDeleteRequest(u, reason)
179197
}

0 commit comments

Comments
 (0)