Skip to content

Commit bdd86f0

Browse files
committed
Refactor the peekDeadLetter and support pass with the context
1 parent 3b356cd commit bdd86f0

File tree

2 files changed

+52
-46
lines changed

2 files changed

+52
-46
lines changed

client/client.go

Lines changed: 2 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -179,53 +179,9 @@ func (c *LmstfyClient) PeekJob(queue, jobID string) (job *Job, e *APIError) {
179179
return c.peekJob(nil, queue, jobID)
180180
}
181181

182-
// Peek the deadletter of the queue
182+
// PeekDeadLetter Peeks the dead letter of the queue
183183
func (c *LmstfyClient) PeekDeadLetter(queue string) (deadLetterSize int, deadLetterHead string, e *APIError) {
184-
req, err := c.getReq(http.MethodGet, path.Join(queue, "deadletter"), nil, nil)
185-
if err != nil {
186-
return 0, "", &APIError{
187-
Type: RequestErr,
188-
Reason: err.Error(),
189-
}
190-
}
191-
resp, err := c.httpCli.Do(req)
192-
if err != nil {
193-
return 0, "", &APIError{
194-
Type: RequestErr,
195-
Reason: err.Error(),
196-
}
197-
}
198-
defer resp.Body.Close()
199-
if resp.StatusCode != http.StatusOK {
200-
return 0, "", &APIError{
201-
Type: ResponseErr,
202-
Reason: parseResponseError(resp),
203-
RequestID: resp.Header.Get("X-Request-ID"),
204-
}
205-
}
206-
respBytes, err := ioutil.ReadAll(resp.Body)
207-
if err != nil {
208-
return 0, "", &APIError{
209-
Type: ResponseErr,
210-
Reason: err.Error(),
211-
RequestID: resp.Header.Get("X-Request-ID"),
212-
}
213-
}
214-
var respData struct {
215-
Namespace string `json:"namespace"`
216-
Queue string `json:"queue"`
217-
DeadLetterSize int `json:"deadletter_size"`
218-
DeadLetterHead string `json:"deadletter_head"`
219-
}
220-
err = json.Unmarshal(respBytes, &respData)
221-
if err != nil {
222-
return 0, "", &APIError{
223-
Type: ResponseErr,
224-
Reason: err.Error(),
225-
RequestID: resp.Header.Get("X-Request-ID"),
226-
}
227-
}
228-
return respData.DeadLetterSize, respData.DeadLetterHead, nil
184+
return c.peekDeadLetter(nil, queue)
229185
}
230186

231187
func (c *LmstfyClient) RespawnDeadLetter(queue string, limit, ttlSecond int64) (count int, e *APIError) {

client/client_impl.go

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -642,6 +642,56 @@ func (c *LmstfyClient) peekJob(ctx context.Context, queue, jobID string) (job *J
642642
return job, nil
643643
}
644644

645+
// peekDeadLetter Peek the dead letter of the queue
646+
func (c *LmstfyClient) peekDeadLetter(ctx context.Context, queue string) (
647+
deadLetterSize int, deadLetterHead string, e *APIError) {
648+
req, err := c.getReq(ctx, http.MethodGet, path.Join(queue, "deadletter"), nil, nil)
649+
if err != nil {
650+
return 0, "", &APIError{
651+
Type: RequestErr,
652+
Reason: err.Error(),
653+
}
654+
}
655+
resp, err := c.httpCli.Do(req)
656+
if err != nil {
657+
return 0, "", &APIError{
658+
Type: RequestErr,
659+
Reason: err.Error(),
660+
}
661+
}
662+
defer resp.Body.Close()
663+
if resp.StatusCode != http.StatusOK {
664+
return 0, "", &APIError{
665+
Type: ResponseErr,
666+
Reason: parseResponseError(resp),
667+
RequestID: resp.Header.Get("X-Request-ID"),
668+
}
669+
}
670+
respBytes, err := ioutil.ReadAll(resp.Body)
671+
if err != nil {
672+
return 0, "", &APIError{
673+
Type: ResponseErr,
674+
Reason: err.Error(),
675+
RequestID: resp.Header.Get("X-Request-ID"),
676+
}
677+
}
678+
var respData struct {
679+
Namespace string `json:"namespace"`
680+
Queue string `json:"queue"`
681+
DeadLetterSize int `json:"deadletter_size"`
682+
DeadLetterHead string `json:"deadletter_head"`
683+
}
684+
err = json.Unmarshal(respBytes, &respData)
685+
if err != nil {
686+
return 0, "", &APIError{
687+
Type: ResponseErr,
688+
Reason: err.Error(),
689+
RequestID: resp.Header.Get("X-Request-ID"),
690+
}
691+
}
692+
return respData.DeadLetterSize, respData.DeadLetterHead, nil
693+
}
694+
645695
func discardResponseBody(resp io.ReadCloser) {
646696
// discard response body, to make this connection reusable in the http connection pool
647697
_, _ = ioutil.ReadAll(resp)

0 commit comments

Comments
 (0)