streams.go
changeset 217 cc086e49cd0c
parent 207 301d5b94be3f
child 238 1c0042e76902
equal deleted inserted replaced
216:403ce36a94ab 217:cc086e49cd0c
    23 }
    23 }
    24 
    24 
    25 // openStream opens a stream URL and returns an http.Response
    25 // openStream opens a stream URL and returns an http.Response
    26 // Note that the caller should close the connection when it's done reading
    26 // Note that the caller should close the connection when it's done reading
    27 // the stream.
    27 // the stream.
    28 // The stream name can be "user", "local", "public" or "hashtag".
    28 // The stream name can be "user", "local", "public", "list" or "hashtag".
    29 // When it is "hashtag", the hashTag argument cannot be empty.
    29 // When it is "hashtag", the param argument contains the hashtag.
    30 func (mc *Client) openStream(streamName, hashTag string) (*websocket.Conn, error) {
    30 // When it is "list", the param argument contains the list ID.
    31 	var tag string
    31 func (mc *Client) openStream(streamName, param string) (*websocket.Conn, error) {
       
    32 	var tag, list string
    32 
    33 
    33 	switch streamName {
    34 	switch streamName {
    34 	case "user", "public", "public:local":
    35 	case "user", "public", "public:local":
    35 	case "hashtag":
    36 	case "hashtag":
    36 		if hashTag == "" {
    37 		if param == "" {
    37 			return nil, ErrInvalidParameter
    38 			return nil, ErrInvalidParameter
    38 		}
    39 		}
    39 		tag = hashTag
    40 		tag = param
       
    41 	case "list":
       
    42 		if param == "" {
       
    43 			return nil, ErrInvalidParameter
       
    44 		}
       
    45 		list = param
    40 	default:
    46 	default:
    41 		return nil, ErrInvalidParameter
    47 		return nil, ErrInvalidParameter
    42 	}
    48 	}
    43 
    49 
    44 	if !strings.HasPrefix(mc.APIBase, "http") {
    50 	if !strings.HasPrefix(mc.APIBase, "http") {
    54 	urlParams := url.Values{}
    60 	urlParams := url.Values{}
    55 	urlParams.Add("stream", streamName)
    61 	urlParams.Add("stream", streamName)
    56 	urlParams.Add("access_token", mc.UserToken.AccessToken)
    62 	urlParams.Add("access_token", mc.UserToken.AccessToken)
    57 	if tag != "" {
    63 	if tag != "" {
    58 		urlParams.Add("tag", tag)
    64 		urlParams.Add("tag", tag)
       
    65 	} else if list != "" {
       
    66 		urlParams.Add("list", list)
    59 	}
    67 	}
    60 	u.RawQuery = urlParams.Encode()
    68 	u.RawQuery = urlParams.Encode()
    61 
    69 
    62 	c, _, err := websocket.DefaultDialer.Dial(u.String(), nil)
    70 	c, _, err := websocket.DefaultDialer.Dial(u.String(), nil)
    63 	return c, err
    71 	return c, err