@@ -54,24 +54,28 @@ func TibiaHousesOverviewV3(c *gin.Context) {
54
54
var (
55
55
// Creating empty vars
56
56
HouseData , GuildhallData []House
57
+ Errors []error
57
58
58
59
// Channels
59
60
done = make (chan struct {})
60
61
housesChan = make (chan House )
61
62
guildhallsChan = make (chan House )
63
+ errorsChan = make (chan error )
62
64
63
65
baseURL = "https://www.tibia.com/community/?subtopic=houses&world=" + TibiadataQueryEscapeStringV3 (world ) + "&town=" + TibiadataQueryEscapeStringV3 (town ) + "&type="
64
66
)
65
67
66
- go houseFetcher (c , baseURL , "houses" , done , housesChan )
67
- go houseFetcher (c , baseURL , "guildhalls" , done , guildhallsChan )
68
+ go houseFetcher (baseURL , "houses" , done , housesChan , errorsChan )
69
+ go houseFetcher (baseURL , "guildhalls" , done , guildhallsChan , errorsChan )
68
70
69
71
for n := 2 ; n > 0 ; {
70
72
select {
71
73
case h := <- housesChan :
72
74
HouseData = append (HouseData , h )
73
75
case gh := <- guildhallsChan :
74
76
GuildhallData = append (GuildhallData , gh )
77
+ case err := <- errorsChan :
78
+ Errors = append (Errors , err )
75
79
case <- done :
76
80
n --
77
81
}
@@ -80,8 +84,13 @@ func TibiaHousesOverviewV3(c *gin.Context) {
80
84
close (done )
81
85
close (guildhallsChan )
82
86
close (housesChan )
87
+ close (errorsChan )
88
+
89
+ if len (Errors ) > 0 {
90
+ TibiaDataAPIHandleOtherResponse (c , http .StatusBadGateway , "TibiaHousesOverviewV3" , gin.H {"error" : Errors [0 ].Error ()})
91
+ return
92
+ }
83
93
84
- //
85
94
// Build the data-blob
86
95
jsonData := JSONData {
87
96
Houses {
@@ -100,14 +109,17 @@ func TibiaHousesOverviewV3(c *gin.Context) {
100
109
TibiaDataAPIHandleSuccessResponse (c , "TibiaHousesOverviewV3" , jsonData )
101
110
}
102
111
103
- func houseFetcher (c * gin.Context , baseURL , houseType string , done chan struct {}, outputChan chan House ) {
112
+ func houseFetcher (baseURL , houseType string , done chan struct {}, outputChan chan House , errorsChan chan error ) {
113
+ defer func () {
114
+ done <- struct {}{}
115
+ }()
116
+
104
117
// Getting data with TibiadataHTMLDataCollectorV3
105
118
TibiadataRequest .URL = baseURL + TibiadataQueryEscapeStringV3 (houseType )
106
119
BoxContentHTML , err := TibiadataHTMLDataCollectorV3 (TibiadataRequest )
107
-
108
- // return error (e.g. for maintenance mode)
109
120
if err != nil {
110
- TibiaDataAPIHandleOtherResponse (c , http .StatusBadGateway , "TibiaHousesOverviewV3" , gin.H {"error" : err .Error ()})
121
+ // return error (e.g. for maintenance mode)
122
+ errorsChan <- err
111
123
return
112
124
}
113
125
@@ -176,6 +188,4 @@ func houseFetcher(c *gin.Context, baseURL, houseType string, done chan struct{},
176
188
}
177
189
}
178
190
})
179
-
180
- done <- struct {}{}
181
191
}
0 commit comments