Skip to content

Commit 546be77

Browse files
Refactor errors (#30)
1 parent d471be8 commit 546be77

16 files changed

+209
-422
lines changed

controllers/boards_controller.go

+31-63
Original file line numberDiff line numberDiff line change
@@ -23,29 +23,21 @@ func NewBoardsController(wc *wrecker.Wrecker) *BoardsController {
2323
// Fetch loads a board from the board_spec (username/board-slug)
2424
// Endpoint: [GET] /v1/boards/<board_spec:board>/
2525
func (bc *BoardsController) Fetch(boardSpec string) (*models.Board, error) {
26-
// Make request
27-
response := new(models.Response)
28-
response.Data = new(models.Board)
29-
resp, err := bc.wreckerClient.Get("/boards/"+boardSpec).
26+
// Build + execute request
27+
resp := new(models.Response)
28+
resp.Data = new(models.Board)
29+
httpResp, err := bc.wreckerClient.Get("/boards/"+boardSpec).
3030
URLParam("fields", models.BOARD_FIELDS).
31-
Into(response).
31+
Into(resp).
3232
Execute()
3333

34-
// Error from Wrecker
35-
if err != nil {
34+
// Check Error
35+
if err = models.WrapPinterestError(httpResp, resp, err); err != nil {
3636
return nil, err
3737
}
3838

39-
// Status code
40-
if !(resp.StatusCode >= 200 && resp.StatusCode < 300) {
41-
return nil, &models.PinterestError{
42-
StatusCode: resp.StatusCode,
43-
Message: response.Message,
44-
}
45-
}
46-
4739
// OK
48-
return response.Data.(*models.Board), nil
40+
return resp.Data.(*models.Board), nil
4941
}
5042

5143
// BoardCreateOptionals is a struct that represents the optional parameters
@@ -57,31 +49,23 @@ type BoardCreateOptionals struct {
5749
// Create makes a new board
5850
// Endpoint: [POST] /v1/boards/
5951
func (bc *BoardsController) Create(boardName string, optionals *BoardCreateOptionals) (*models.Board, error) {
60-
// Make request
61-
response := new(models.Response)
62-
response.Data = new(models.Board)
63-
resp, err := bc.wreckerClient.Post("/boards/").
52+
// Build + execute request
53+
resp := new(models.Response)
54+
resp.Data = new(models.Board)
55+
httpResp, err := bc.wreckerClient.Post("/boards/").
6456
URLParam("fields", models.BOARD_FIELDS).
6557
FormParam("name", boardName).
6658
FormParam("description", optionals.Description).
67-
Into(response).
59+
Into(resp).
6860
Execute()
6961

70-
// Error from Wrecker
71-
if err != nil {
62+
// Check Error
63+
if err = models.WrapPinterestError(httpResp, resp, err); err != nil {
7264
return nil, err
7365
}
7466

75-
// Status code
76-
if !(resp.StatusCode >= 200 && resp.StatusCode < 300) {
77-
return nil, &models.PinterestError{
78-
StatusCode: resp.StatusCode,
79-
Message: response.Message,
80-
}
81-
}
82-
8367
// OK
84-
return response.Data.(*models.Board), nil
68+
return resp.Data.(*models.Board), nil
8569
}
8670

8771
// BoardUpdateOptionals is a struct that represents the optional parameters
@@ -94,56 +78,40 @@ type BoardUpdateOptionals struct {
9478
// Update updates an existing board
9579
// Endpoint: [PATCH] /v1/boards/<board_spec:board>/
9680
func (bc *BoardsController) Update(boardSpec string, optionals *BoardUpdateOptionals) (*models.Board, error) {
97-
// Make request
98-
response := new(models.Response)
99-
response.Data = new(models.Board)
100-
resp, err := bc.wreckerClient.Patch("/boards/"+boardSpec+"/").
81+
// Build + execute request
82+
resp := new(models.Response)
83+
resp.Data = new(models.Board)
84+
httpResp, err := bc.wreckerClient.Patch("/boards/"+boardSpec+"/").
10185
URLParam("fields", models.BOARD_FIELDS).
10286
FormParam("name", optionals.Name).
10387
FormParam("description", optionals.Description).
104-
Into(response).
88+
Into(resp).
10589
Execute()
10690

107-
// Error from Wrecker
108-
if err != nil {
91+
// Check Error
92+
if err = models.WrapPinterestError(httpResp, resp, err); err != nil {
10993
return nil, err
11094
}
11195

112-
// Status code
113-
if !(resp.StatusCode >= 200 && resp.StatusCode < 300) {
114-
return nil, &models.PinterestError{
115-
StatusCode: resp.StatusCode,
116-
Message: response.Message,
117-
}
118-
}
119-
12096
// OK
121-
return response.Data.(*models.Board), nil
97+
return resp.Data.(*models.Board), nil
12298
}
12399

124100
// Delete deletes an existing board
125101
// Endpoint: [DELETE] /v1/boards/<board_spec:board>/
126102
func (bc *BoardsController) Delete(boardSpec string) error {
127-
// Make request
128-
response := new(models.Response)
129-
response.Data = ""
130-
resp, err := bc.wreckerClient.Delete("/boards/" + boardSpec + "/").
131-
Into(response).
103+
// Build + execute request
104+
resp := new(models.Response)
105+
resp.Data = ""
106+
httpResp, err := bc.wreckerClient.Delete("/boards/" + boardSpec + "/").
107+
Into(resp).
132108
Execute()
133109

134-
// Error from Wrecker
135-
if err != nil {
110+
// Check Error
111+
if err = models.WrapPinterestError(httpResp, resp, err); err != nil {
136112
return err
137113
}
138114

139-
// Status code
140-
if !(resp.StatusCode >= 200 && resp.StatusCode < 300) {
141-
return &models.PinterestError{
142-
StatusCode: resp.StatusCode,
143-
Message: response.Message,
144-
}
145-
}
146-
147115
// OK
148116
return nil
149117
}

controllers/boards_pins_controller.go

+8-16
Original file line numberDiff line numberDiff line change
@@ -27,27 +27,19 @@ type BoardsPinsFetchOptionals struct {
2727
// Fetch loads a board from the board_spec (username/board-slug)
2828
// Endpoint: [GET] /v1/boards/<board_spec:board>/pins/
2929
func (bpc *BoardsPinsController) Fetch(boardSpec string, optionals *BoardsPinsFetchOptionals) (*[]models.Pin, error) {
30-
// Make request
31-
response := new(models.Response)
32-
response.Data = &[]models.Pin{}
33-
resp, err := bpc.wreckerClient.Get("/boards/"+boardSpec+"/pins/").
30+
// Build + execute request
31+
resp := new(models.Response)
32+
resp.Data = &[]models.Pin{}
33+
httpResp, err := bpc.wreckerClient.Get("/boards/"+boardSpec+"/pins/").
3434
URLParam("fields", models.PIN_FIELDS).
35-
Into(response).
35+
Into(resp).
3636
Execute()
3737

38-
// Error from Wrecker
39-
if err != nil {
38+
// Check Error
39+
if err = models.WrapPinterestError(httpResp, resp, err); err != nil {
4040
return nil, err
4141
}
4242

43-
// Status code
44-
if !(resp.StatusCode >= 200 && resp.StatusCode < 300) {
45-
return nil, &models.PinterestError{
46-
StatusCode: resp.StatusCode,
47-
Message: response.Message,
48-
}
49-
}
50-
5143
// OK
52-
return response.Data.(*[]models.Pin), nil
44+
return resp.Data.(*[]models.Pin), nil
5345
}

controllers/me_boards_controller.go

+7-15
Original file line numberDiff line numberDiff line change
@@ -24,26 +24,18 @@ func newMeBoardsController(wc *wrecker.Wrecker) *MeBoardsController {
2424
// Endpoint: [GET] /v1/me/boards/
2525
func (mbc *MeBoardsController) Fetch() (*[]models.Board, error) {
2626
// Build + execute request
27-
response := new(models.Response)
28-
response.Data = &[]models.Board{}
29-
resp, err := mbc.wreckerClient.Get("/me/boards/").
27+
resp := new(models.Response)
28+
resp.Data = &[]models.Board{}
29+
httpResp, err := mbc.wreckerClient.Get("/me/boards/").
3030
URLParam("fields", models.BOARD_FIELDS).
31-
Into(response).
31+
Into(resp).
3232
Execute()
3333

34-
// Error from Wrecker
35-
if err != nil {
34+
// Check Error
35+
if err = models.WrapPinterestError(httpResp, resp, err); err != nil {
3636
return nil, err
3737
}
3838

39-
// Status code
40-
if !(resp.StatusCode >= 200 && resp.StatusCode < 300) {
41-
return nil, &models.PinterestError{
42-
StatusCode: resp.StatusCode,
43-
Message: response.Message,
44-
}
45-
}
46-
4739
// OK
48-
return response.Data.(*[]models.Board), nil
40+
return resp.Data.(*[]models.Board), nil
4941
}

controllers/me_boards_suggested_controller.go

+8-18
Original file line numberDiff line numberDiff line change
@@ -29,35 +29,25 @@ type MeBoardsSuggestedFetchOptionals struct {
2929
// Fetch loads board suggestions for the logged in user
3030
// Endpoint: [GET] /v1/me/boards/suggested/
3131
func (mbsc *MeBoardsSuggestedController) Fetch(optionals *MeBoardsSuggestedFetchOptionals) (*[]models.Board, error) {
32-
// Build request
33-
response := new(models.Response)
34-
response.Data = &[]models.Board{}
32+
// Build + execute request
33+
resp := new(models.Response)
34+
resp.Data = &[]models.Board{}
3535
request := mbsc.wreckerClient.Get("/me/boards/suggested/").
3636
URLParam("fields", models.BOARD_FIELDS).
37-
Into(response)
37+
Into(resp)
3838
if optionals.Count != 0 {
3939
request.URLParam("count", strconv.Itoa(int(optionals.Count)))
4040
}
4141
if optionals.Pin != "" {
4242
request.URLParam("pin", optionals.Pin)
4343
}
44+
httpResp, err := request.Execute()
4445

45-
// Execute request
46-
resp, err := request.Execute()
47-
48-
// Error from Wrecker
49-
if err != nil {
46+
// Check Error
47+
if err = models.WrapPinterestError(httpResp, resp, err); err != nil {
5048
return nil, err
5149
}
5250

53-
// Status code
54-
if !(resp.StatusCode >= 200 && resp.StatusCode < 300) {
55-
return nil, &models.PinterestError{
56-
StatusCode: resp.StatusCode,
57-
Message: response.Message,
58-
}
59-
}
60-
6151
// OK
62-
return response.Data.(*[]models.Board), nil
52+
return resp.Data.(*[]models.Board), nil
6353
}

controllers/me_controller.go

+7-15
Original file line numberDiff line numberDiff line change
@@ -34,26 +34,18 @@ func NewMeController(wc *wrecker.Wrecker) *MeController {
3434
// Endpoint: [GET] /v1/me/
3535
func (mc *MeController) Fetch() (*models.User, error) {
3636
// Build + execute request
37-
response := new(models.Response)
38-
response.Data = new(models.User)
39-
resp, err := mc.wreckerClient.Get("/me/").
37+
resp := new(models.Response)
38+
resp.Data = new(models.User)
39+
httpResp, err := mc.wreckerClient.Get("/me/").
4040
URLParam("fields", models.USER_FIELDS).
41-
Into(response).
41+
Into(resp).
4242
Execute()
4343

44-
// Error from Wrecker
45-
if err != nil {
44+
// Check Error
45+
if err = models.WrapPinterestError(httpResp, resp, err); err != nil {
4646
return nil, err
4747
}
4848

49-
// Status code
50-
if !(resp.StatusCode >= 200 && resp.StatusCode < 300) {
51-
return nil, &models.PinterestError{
52-
StatusCode: resp.StatusCode,
53-
Message: response.Message,
54-
}
55-
}
56-
5749
// OK
58-
return response.Data.(*models.User), nil
50+
return resp.Data.(*models.User), nil
5951
}

controllers/me_followers_controller.go

+8-18
Original file line numberDiff line numberDiff line change
@@ -27,32 +27,22 @@ type MeFollowersFetchOptionals struct {
2727
// Fetch loads the users that follow the logged in user
2828
// Endpoint: [GET] /v1/me/boards/followers/
2929
func (mfc *MeFollowersController) Fetch(optionals *MeFollowersFetchOptionals) (*[]models.User, *models.Page, error) {
30-
// Build request
31-
response := new(models.Response)
32-
response.Data = &[]models.User{}
30+
// Build + execute request
31+
resp := new(models.Response)
32+
resp.Data = &[]models.User{}
3333
request := mfc.wreckerClient.Get("/me/followers/").
3434
URLParam("fields", models.USER_FIELDS).
35-
Into(response)
35+
Into(resp)
3636
if optionals.Cursor != "" {
3737
request.URLParam("cursor", optionals.Cursor)
3838
}
39+
httpResp, err := request.Execute()
3940

40-
// Execute request
41-
resp, err := request.Execute()
42-
43-
// Error from Wrecker
44-
if err != nil {
41+
// Check Error
42+
if err = models.WrapPinterestError(httpResp, resp, err); err != nil {
4543
return nil, nil, err
4644
}
4745

48-
// Status code
49-
if !(resp.StatusCode >= 200 && resp.StatusCode < 300) {
50-
return nil, nil, &models.PinterestError{
51-
StatusCode: resp.StatusCode,
52-
Message: response.Message,
53-
}
54-
}
55-
5646
// OK
57-
return response.Data.(*[]models.User), &response.Page, nil
47+
return resp.Data.(*[]models.User), &resp.Page, nil
5848
}

0 commit comments

Comments
 (0)