// DeleteReserved is the client implementation for the IronMQ v3 API (http://dev.iron.io/mq/3/reference/api/#delete-message) func (h *HTTPClient) DeleteReserved(ctx context.Context, token, projID, qName string, messageID int, reservationID string) (*Deleted, error) { body := &bytes.Buffer{} if err := json.NewEncoder(body).Encode(deleteReservedReq{ReservationID: reservationID}); err != nil { return nil, err } req, err := h.newReq("DELETE", token, projID, fmt.Sprintf("queues/%s/messages/%d", qName, messageID), body) if err != nil { return nil, err } ret := new(Deleted) doFunc := func(resp *http.Response, err error) error { if err != nil { return err } defer resp.Body.Close() if err := json.NewDecoder(resp.Body).Decode(ret); err != nil { return err } return nil } if err := gorion.HTTPDo(ctx, h.client, h.transport, req, doFunc); err != nil { return nil, err } return ret, nil }
// Enqueue is the Client implementation for the v3 API http://dev.iron.io/mq/3/reference/api/#post-messages func (h *HTTPClient) Enqueue(ctx context.Context, token, projID, qName string, msgs []NewMessage) (*Enqueued, error) { reqBody := &bytes.Buffer{} if err := json.NewEncoder(reqBody).Encode(enqueueReq{Messages: msgs}); err != nil { return nil, err } req, err := h.newReq("POST", token, projID, fmt.Sprintf("queues/%s/messages", qName), reqBody) if err != nil { return nil, err } ret := new(Enqueued) doFunc := func(resp *http.Response, err error) error { if err != nil { return err } defer resp.Body.Close() if err := json.NewDecoder(resp.Body).Decode(ret); err != nil { return err } return nil } if err := gorion.HTTPDo(ctx, h.client, h.transport, req, doFunc); err != nil { return nil, err } return ret, nil }
// Dequeue is the client implementation for the v3 API (http://dev.iron.io/mq/3/reference/api/#reserve-messages) func (h *HTTPClient) Dequeue(ctx context.Context, token, projID, qName string, num int, timeout Timeout, wait Wait, delete bool) ([]DequeuedMessage, error) { if !timeoutInRange(timeout) { return nil, ErrTimeoutOutOfRange } if !waitInRange(wait) { return nil, ErrWaitOutOfRange } body := &bytes.Buffer{} if err := json.NewEncoder(body).Encode(dequeueReq{Num: num, Timeout: int(timeout), Wait: int(wait), Delete: delete}); err != nil { return nil, err } req, err := h.newReq("POST", token, projID, fmt.Sprintf("queues/%s/reservations", qName), body) if err != nil { return nil, err } ret := new(dequeueResp) doFunc := func(resp *http.Response, err error) error { if err != nil { return err } defer resp.Body.Close() if err := json.NewDecoder(resp.Body).Decode(ret); err != nil { return err } return nil } if err := gorion.HTTPDo(ctx, h.client, h.transport, req, doFunc); err != nil { return nil, err } return ret.Messages, nil }