func parseSearchResults(elem json.Json) *SearchResult { result := new(SearchResult) result.Name = elem.Get("from_user").String() result.ProfileImageUrl = elem.Get("profile_image_url").String() result.Tweet = elem.Get("text").String() result.SentAt = elem.Get("created_at").String() return result }
// parseStatus converts a json obj into a twitter status. func parseStatus(elem json.Json) *Status { status := new(Status) status.Text = elem.Get("text").String() status.SentAt = elem.Get("created_at").String() status.Tweeter = *parseUser(elem.Get("user")) return status }
/** * DoSearch searches all status updates for a particular pattern. */ func DoSearch(client *Client, query string) (searchResults []SearchResult, err os.Error) { log.Stdout("Do Search\n") // get json response from server var jsonStrResponse string var maxFetchCount = client.MaxFetchCount if maxFetchCount == 0 { maxFetchCount = DefaultMaxFetchCount } // use a default query = http.URLEscape(query) // make query safe to travel in http body/url var maxFetchCountStr = strconv.Itoa(maxFetchCount) // send request log.Stdoutf("max fetch count: %s\n", maxFetchCountStr) var url = URLSearch + "?q=" + query + "&rpp=" + maxFetchCountStr jsonStrResponse, err = send(url, "GET", nil, client, "") if err != nil { return nil, err } // parse json response var resultObj json.Json resultObj, err = parseJson(jsonStrResponse) if err != nil { return nil, err } // create status response var i int resultObj = resultObj.Get("results") searchResults = make([]SearchResult, resultObj.Len()) log.Stdoutf("result count: %d", resultObj.Len()) for i = 0; i < len(searchResults); i++ { var elem = resultObj.Elem(i) searchResults[i] = *parseSearchResults(elem) } return }
// parseUser converts a json obj into a twitter user func parseUser(elem json.Json) *User { user := new(User) user.ScreenName = elem.Get("screen_name").String() user.Name = elem.Get("name").String() user.Description = elem.Get("description").String() user.Url = elem.Get("url").String() user.ProfileImageUrl = elem.Get("profile_image_url").String() user.Location = elem.Get("location").String() user.FriendsCount, _ = strconv.Atoi(elem.Get("friends_count").String()) user.FollowersCount, _ = strconv.Atoi(elem.Get("followers_count").String()) user.ProfileBgColour = "#" + elem.Get("profile_background_color").String() user.ProfileFgColour = "#" + elem.Get("profile_text_color").String() user.ProfileLinkColour = "#" + elem.Get("profile_link_color").String() user.ProfileBgImageUrl = elem.Get("profile_background_image_url").String() user.ProfileBgImageTile = elem.Get("profile_background_tile").String() == "true" return user }