github.com/walkingsparrow/docker@v1.4.2-0.20151218153551-b708a2249bfa/api/client/lib/events.go (about)

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