events.go 1011 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. package lib
  2. import (
  3. "io"
  4. "net/url"
  5. "time"
  6. "github.com/docker/docker/api/types"
  7. "github.com/docker/docker/pkg/parsers/filters"
  8. "github.com/docker/docker/pkg/timeutils"
  9. )
  10. // Events returns a stream of events in the daemon in a ReadCloser.
  11. // It's up to the caller to close the stream.
  12. func (cli *Client) Events(options types.EventsOptions) (io.ReadCloser, error) {
  13. var query url.Values
  14. ref := time.Now()
  15. if options.Since != "" {
  16. ts, err := timeutils.GetTimestamp(options.Since, ref)
  17. if err != nil {
  18. return nil, err
  19. }
  20. query.Set("since", ts)
  21. }
  22. if options.Until != "" {
  23. ts, err := timeutils.GetTimestamp(options.Until, ref)
  24. if err != nil {
  25. return nil, err
  26. }
  27. query.Set("until", ts)
  28. }
  29. if options.Filters.Len() > 0 {
  30. filterJSON, err := filters.ToParam(options.Filters)
  31. if err != nil {
  32. return nil, err
  33. }
  34. query.Set("filters", filterJSON)
  35. }
  36. serverResponse, err := cli.GET("/events", query, nil)
  37. if err != nil {
  38. return nil, err
  39. }
  40. return serverResponse.body, nil
  41. }