Skip to content

Commit a56053b

Browse files
committed
Refactor the peekQueue and support pass with the context
1 parent 94d2afb commit a56053b

File tree

2 files changed

+52
-47
lines changed

2 files changed

+52
-47
lines changed

client/client.go

Lines changed: 2 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -169,54 +169,9 @@ func (c *LmstfyClient) QueueSize(queue string) (int, *APIError) {
169169
return c.queueSize(nil, queue)
170170
}
171171

172-
// Peek the job in the head of the queue
172+
// PeekQueue Peeks the job in the head of the queue
173173
func (c *LmstfyClient) PeekQueue(queue string) (job *Job, e *APIError) {
174-
req, err := c.getReq(http.MethodGet, path.Join(queue, "peek"), nil, nil)
175-
if err != nil {
176-
return nil, &APIError{
177-
Type: RequestErr,
178-
Reason: err.Error(),
179-
}
180-
}
181-
resp, err := c.httpCli.Do(req)
182-
if err != nil {
183-
return nil, &APIError{
184-
Type: RequestErr,
185-
Reason: err.Error(),
186-
}
187-
}
188-
defer resp.Body.Close()
189-
switch resp.StatusCode {
190-
case http.StatusNotFound:
191-
discardResponseBody(resp.Body)
192-
return nil, nil
193-
case http.StatusOK:
194-
// continue
195-
default:
196-
return nil, &APIError{
197-
Type: ResponseErr,
198-
Reason: parseResponseError(resp),
199-
RequestID: resp.Header.Get("X-Request-ID"),
200-
}
201-
}
202-
respBytes, err := ioutil.ReadAll(resp.Body)
203-
if err != nil {
204-
return nil, &APIError{
205-
Type: ResponseErr,
206-
Reason: err.Error(),
207-
RequestID: resp.Header.Get("X-Request-ID"),
208-
}
209-
}
210-
job = &Job{}
211-
err = json.Unmarshal(respBytes, job)
212-
if err != nil {
213-
return nil, &APIError{
214-
Type: ResponseErr,
215-
Reason: err.Error(),
216-
RequestID: resp.Header.Get("X-Request-ID"),
217-
}
218-
}
219-
return job, nil
174+
return c.peekQueue(nil, queue)
220175
}
221176

222177
// Peek a specific job data

client/client_impl.go

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -542,6 +542,56 @@ func (c *LmstfyClient) queueSize(ctx context.Context, queue string) (int, *APIEr
542542
return respData.Size, nil
543543
}
544544

545+
// peekQueue Peek the job in the head of the queue
546+
func (c *LmstfyClient) peekQueue(ctx context.Context, queue string) (job *Job, e *APIError) {
547+
req, err := c.getReq(ctx, http.MethodGet, path.Join(queue, "peek"), nil, nil)
548+
if err != nil {
549+
return nil, &APIError{
550+
Type: RequestErr,
551+
Reason: err.Error(),
552+
}
553+
}
554+
resp, err := c.httpCli.Do(req)
555+
if err != nil {
556+
return nil, &APIError{
557+
Type: RequestErr,
558+
Reason: err.Error(),
559+
}
560+
}
561+
defer resp.Body.Close()
562+
switch resp.StatusCode {
563+
case http.StatusNotFound:
564+
discardResponseBody(resp.Body)
565+
return nil, nil
566+
case http.StatusOK:
567+
// continue
568+
default:
569+
return nil, &APIError{
570+
Type: ResponseErr,
571+
Reason: parseResponseError(resp),
572+
RequestID: resp.Header.Get("X-Request-ID"),
573+
}
574+
}
575+
respBytes, err := ioutil.ReadAll(resp.Body)
576+
if err != nil {
577+
return nil, &APIError{
578+
Type: ResponseErr,
579+
Reason: err.Error(),
580+
RequestID: resp.Header.Get("X-Request-ID"),
581+
}
582+
}
583+
job = &Job{}
584+
err = json.Unmarshal(respBytes, job)
585+
if err != nil {
586+
return nil, &APIError{
587+
Type: ResponseErr,
588+
Reason: err.Error(),
589+
RequestID: resp.Header.Get("X-Request-ID"),
590+
}
591+
}
592+
return job, nil
593+
}
594+
545595
func discardResponseBody(resp io.ReadCloser) {
546596
// discard response body, to make this connection reusable in the http connection pool
547597
_, _ = ioutil.ReadAll(resp)

0 commit comments

Comments
 (0)