Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Replace buftok due to incorrect delimiter handling #484

Closed
wants to merge 2 commits into from

Conversation

eagletmt
Copy link

The issue is the same as described in #481.

Instead of tweaking data to cope with buftok's bug, I implemented a similar Twitter::Streaming::BufferedTokenizer and add specs for it.
You can see the buftok's bug by replacing described_class with BufferedTokenizer in spec/twitter/streaming/buffered_tokenizer_spec.rb.

@coveralls
Copy link

Coverage Status

Changes Unknown when pulling 88940b8 on eagletmt:replace-buftok into * on sferik:master*.

@coveralls
Copy link

Coverage Status

Changes Unknown when pulling a69126e on eagletmt:replace-buftok into * on sferik:master*.

@sferik
Copy link
Owner

sferik commented Nov 20, 2013

Thanks for the patch. Is this really not possible with buftok? If not, perhaps you could apply this patch to buftok itself? It looks like the project hasn’t been updated in 7 years. I can’t even find the code on GitHub. Perhaps it’s time for an update. I imagine many other projects that use buftok could benefit from this patch. I would be willing to take over maintenance of this project if @tarcieri or @martinemde are willing to give me gem push access.

/cc @halorgium

@eagletmt
Copy link
Author

buftok is totally broken if delimiter.size > 1.

The reason I rewrote is:

  • buftok doesn't seem to be maintained.
  • Its code base is very small.

Rewriting is much easier than modifying for me.

I don't know how many projects use buftok actually, but I suspect that many projects implement their own tokenizer because it is too simple.
I had a look at em-twitter and found that it uses a very similar class https://github.com/eventmachine/eventmachine/blob/master/lib/em/buftok.rb (and it also seems to be broken if delimiter.size > 1).

@sferik
Copy link
Owner

sferik commented Nov 20, 2013

@eagletmt If buftok is broken, I’d like to try to fix it, since I believe its functionality is generally useful. I am willing to do the maintenance.

I’ve created a buftok repo on GitHub that I’ve imported from the gem. If I get push access to the gem and you’re be willing to submit your pull request to that repo, we can fix the problem there.

I’m currently trying to find the specs for buftok, since they weren’t packaged with the gem and the RubyForge project seems to be gone.

@eagletmt
Copy link
Author

Okay, I try to make a pull request to sferik/buftok.
It would contain specs like spec/twitter/streaming/buffered_tokenizer_spec.rb.

@martinemde
Copy link

Happy to give you push access, but I think @tarcieri may be the only one that still has access to this. I think I'm added as an author but not a gem pusher.

Wow what an old gem.

@sferik sferik closed this in 64dc08f Nov 22, 2013
@sferik sferik mentioned this pull request Nov 28, 2013
jsonn pushed a commit to jsonn/pkgsrc that referenced this pull request Jan 18, 2014
Changelog (from CHANGELOG.md)

5.5.1
-----
* [Fix bug where `Twitter::Error::AlreadyFavorited` would never be raised](sferik/twitter-ruby#512) ([@polestarw](https://twitter.com/polestarw))
* [Fix bug where `Twitter::Error::AlreadyPosted` would never be raised](sferik/twitter-ruby@e6b37b9)
* [Restore `Twitter::Entities#entities?` as a public method](sferik/twitter-ruby@234a9e3)

5.5.0
-----
* [Add entities to `Twitter::DirectMessage`](sferik/twitter-ruby@d911deb)
* [Add conversion methods to `Twitter::NullObject`](sferik/twitter-ruby@4900fee)

5.4.1
-----
* [Default to maximum number of tweets per request](sferik/twitter-ruby@1e41b5d)

5.4.0
-----
* [Fix enumerable search interface](sferik/twitter-ruby@e14cc33)

5.3.1
-----
* [Add `Twitter::Utils` module](sferik/twitter-ruby@a1f47fb) ([@charliesome](https://twitter.com/charliesome))
* [Remove `Enumerable` monkey patch](sferik/twitter-ruby@818b28d) ([@charliesome](https://twitter.com/charliesome))
* [Don't spawning a new thread if there's only one element](sferik/twitter-ruby@c01ea83)
* [Introduce meaningful constant names](sferik/twitter-ruby@215c808) ([@futuresanta](https://twitter.com/futuresanta))
* [Automatically flatten `Twitter::Arguments`](sferik/twitter-ruby@a556028)

5.3.0
-----
* [Add `UNABLE_TO_VERIFY_CREDENTIALS` error code](sferik/twitter-ruby@6a47e71)
* [Don't suppress `Twitter::Error::Forbidden` in #follow and #follow!](sferik/twitter-ruby@b949c04)
* [Update memoizable dependency to ~> 0.3.1](sferik/twitter-ruby#501)

5.2.0
-----
* [Replace `URI` with `adressable`](sferik/twitter-ruby@7ea2f53)
* [Make `Twitter::Streaming::FriendList` an array](sferik/twitter-ruby@1a38e5e)
* [Add `Twitter::Streaming::DeletedTweet`](sferik/twitter-ruby@084025b)
* [Add `Twitter::Streaming::StallWarning`](sferik/twitter-ruby@b07ac50)
* [Add error code for "User is over daily status update limit"](sferik/twitter-ruby@76c088d)
* [`Twitter::Streaming::Client#site` can take a `String` or `Twitter::User`](sferik/twitter-ruby@e3ad4f2)
* [Update `http_parser.rb` dependency to `~> 0.6.0`](sferik/twitter-ruby@6d2f81b)

5.1.1
-----
* [Custom equalizer for `Twitter::Place`](sferik/twitter-ruby@79c76a9)

5.1.0
-----
* [Use `Addressable::URI` everywhere](sferik/twitter-ruby@97d7c68) ([@matthewrudy](https://twitter.com/matthewrudy))
* [Allow use of `Twitter::Place` instead of `place_id`](sferik/twitter-ruby@c2b31dd)
* [Allow use of `Twitter::Tweet` instead of `in_reply_to_status_id`](sferik/twitter-ruby@6b7d6c2)

5.0.1
-----
* [Fix `buftok` delimiter handling](sferik/twitter-ruby#484)
* [Started handling streaming deletes](sferik/twitter-ruby@8860b97)

5.0.0
-----
* [Remove `Twitter::API::Undocumented#status_activity` and `#statuses_activity`](sferik/twitter-ruby@7f97081)
* [Remove `Twitter::Tweet#favoriters`, `#repliers`, `#repliers_count`, and `#retweeters`](sferik/twitter-ruby@77cc963)
* [Remove identity map](sferik/twitter-ruby@ec7c2df)
* [Remove `Twitter::Cursor#all`](sferik/twitter-ruby@72be414)
* [Remove `Twitter::Cursor#collection`](sferik/twitter-ruby@9ae4621)
* [Remove `Twitter#from_user`](sferik/twitter-ruby@d2ae9f1)
* [Remove `ClientError`, `ServerError`, and `ParserError`](sferik/twitter-ruby@7284394)
* [Remove global configuration](sferik/twitter-ruby@239c5a8)
* [Remove ability to configure client with environment variables](sferik/twitter-ruby@17e9585)
* [Remove Brittish English aliases](sferik/twitter-ruby@572813b)
* [Replace `multi_json` with `json`](sferik/twitter-ruby@e5fc292)
* [Rename `oauth_token` to `access_token`](sferik/twitter-ruby@d360f80)
* [Move `Twitter::Arguments` out of `REST::API` namespace](sferik/twitter-ruby@8faa153)
* [Move `Twitter::Client` into `REST` namespace](sferik/twitter-ruby@5b8c3fd)
* [Add `Twitter::Streaming::Client`](sferik/twitter-ruby@23afe90)
* [Add `Twitter::Error::AlreadyPosted`](sferik/twitter-ruby@e11d2a2)
* [Add `Twitter::REST::Client#reverse_token`](sferik/twitter-ruby@39139c4)
* [Add `#url` methods to `Twitter::List`, `Twitter::Tweet`, and `Twitter::User`](sferik/twitter-ruby@a89ec0f)
* [Add `Twitter::Place#contained_within` and `#contained_within?`](sferik/twitter-ruby@23cc247)
* [Add `Twitter::GeoResults`](sferik/twitter-ruby@be1a0a1)
* [Add `NullObject`](sferik/twitter-ruby@17880f4)
* [Add predicate methods for any possible `NullObject`](sferik/twitter-ruby@eac5522)
* [Always return `URI` instead of `String`](sferik/twitter-ruby@341f68d)
* [Allow `URI` as argument](sferik/twitter-ruby@c207567)
* [Allow `String` in addition to `URI` objects](sferik/twitter-ruby@89a46fb)
* [Collection caching](sferik/twitter-ruby@d484d7d)
* [Implement `Twitter::Cursor#each` without making an extra HTTP request](sferik/twitter-ruby@8eeff57)
* [Make `Twitter::SearchResults` enumerable](sferik/twitter-ruby@d5ce853)
* [Make `Twitter::Base` objects immutable](sferik/twitter-ruby@69b1ef7)
* [Missing key now raises `KeyError`, not `ArgumentError`](sferik/twitter-ruby@f56698c)
* [Use `equalizer` instead of manually overwriting #==](sferik/twitter-ruby@a7ddf71)
* [Give methods more natural names](sferik/twitter-ruby@e593194)
* [Fix `Twitter::SearchResults#rpp` return value](sferik/twitter-ruby@28d7320)

4.8.1
-----
* [Ignore case of profile image extension](sferik/twitter-ruby@7376061)
* [Allow use of Twitter::Token in place of bearer token string](sferik/twitter-ruby@13596bc)
* [Add Twitter::API::Undocumented#tweet_count](sferik/twitter-ruby@795458a)
* [Add missing dependencies](sferik/twitter-ruby@e07e034) ([@tmatilai](https://twitter.com/tmatilai))

4.8.0
-----
* [Add `Twitter::SearchResults#refresh_url`](sferik/twitter-ruby@6bf08c0) ([@mustafaturan](https://twitter.com/mustafaturan))
* [Fix issue with wrong signature being generated when multipart data is posted](sferik/twitter-ruby@65ab90a) ([@mustafaturan](https://twitter.com/mustafaturan))
* [Restore compatibility with Ruby 1.8.7](sferik/twitter-ruby@fb63970)
* [Remove undocumented methods, retired in the APIpocalypse](sferik/twitter-ruby@cf6a91f)

4.7.0
-----
* [Add support for application-only authentication](sferik/twitter-ruby#387) ([@paracycle](https://twitter.com/paracycle))
* [Add support for `Twitter::Entity::Symbol` entities](sferik/twitter-ruby@a14a0cd) ([@anno](https://twitter.com/anno))
* [Add `Twitter::API::OAuth#invalidate_token`](sferik/twitter-ruby#372) ([@terenceponce](https://twitter.com/terenceponce))
* [Add `Twitter::API::Lists#lists_owned` method](sferik/twitter-ruby@9e97b51)
* [Add `Twitter::API::Tweets#retweeters_ids` method](sferik/twitter-ruby@8cf5b2d)
* [Add `Twitter::SearchResults#next_results`](sferik/twitter-ruby#365) ([@KentonWhite](https://twitter.com/KentonWhite))
* [Make consumer_key readable](sferik/twitter-ruby@a318869)
* [Loosen required_rubygems_version for compatibility with Ubuntu 10.04](sferik/twitter-ruby@41bd565)
* [Remove default SSL configuration options and override](sferik/twitter-ruby@113b14b)
jsonn pushed a commit to jsonn/pkgsrc that referenced this pull request Jan 20, 2014
Changelog (from CHANGELOG.md)

5.5.1
-----
* [Fix bug where `Twitter::Error::AlreadyFavorited` would never be raised](sferik/twitter-ruby#512) ([@polestarw](https://twitter.com/polestarw))
* [Fix bug where `Twitter::Error::AlreadyPosted` would never be raised](sferik/twitter-ruby@e6b37b9)
* [Restore `Twitter::Entities#entities?` as a public method](sferik/twitter-ruby@234a9e3)

5.5.0
-----
* [Add entities to `Twitter::DirectMessage`](sferik/twitter-ruby@d911deb)
* [Add conversion methods to `Twitter::NullObject`](sferik/twitter-ruby@4900fee)

5.4.1
-----
* [Default to maximum number of tweets per request](sferik/twitter-ruby@1e41b5d)

5.4.0
-----
* [Fix enumerable search interface](sferik/twitter-ruby@e14cc33)

5.3.1
-----
* [Add `Twitter::Utils` module](sferik/twitter-ruby@a1f47fb) ([@charliesome](https://twitter.com/charliesome))
* [Remove `Enumerable` monkey patch](sferik/twitter-ruby@818b28d) ([@charliesome](https://twitter.com/charliesome))
* [Don't spawning a new thread if there's only one element](sferik/twitter-ruby@c01ea83)
* [Introduce meaningful constant names](sferik/twitter-ruby@215c808) ([@futuresanta](https://twitter.com/futuresanta))
* [Automatically flatten `Twitter::Arguments`](sferik/twitter-ruby@a556028)

5.3.0
-----
* [Add `UNABLE_TO_VERIFY_CREDENTIALS` error code](sferik/twitter-ruby@6a47e71)
* [Don't suppress `Twitter::Error::Forbidden` in #follow and #follow!](sferik/twitter-ruby@b949c04)
* [Update memoizable dependency to ~> 0.3.1](sferik/twitter-ruby#501)

5.2.0
-----
* [Replace `URI` with `adressable`](sferik/twitter-ruby@7ea2f53)
* [Make `Twitter::Streaming::FriendList` an array](sferik/twitter-ruby@1a38e5e)
* [Add `Twitter::Streaming::DeletedTweet`](sferik/twitter-ruby@084025b)
* [Add `Twitter::Streaming::StallWarning`](sferik/twitter-ruby@b07ac50)
* [Add error code for "User is over daily status update limit"](sferik/twitter-ruby@76c088d)
* [`Twitter::Streaming::Client#site` can take a `String` or `Twitter::User`](sferik/twitter-ruby@e3ad4f2)
* [Update `http_parser.rb` dependency to `~> 0.6.0`](sferik/twitter-ruby@6d2f81b)

5.1.1
-----
* [Custom equalizer for `Twitter::Place`](sferik/twitter-ruby@79c76a9)

5.1.0
-----
* [Use `Addressable::URI` everywhere](sferik/twitter-ruby@97d7c68) ([@matthewrudy](https://twitter.com/matthewrudy))
* [Allow use of `Twitter::Place` instead of `place_id`](sferik/twitter-ruby@c2b31dd)
* [Allow use of `Twitter::Tweet` instead of `in_reply_to_status_id`](sferik/twitter-ruby@6b7d6c2)

5.0.1
-----
* [Fix `buftok` delimiter handling](sferik/twitter-ruby#484)
* [Started handling streaming deletes](sferik/twitter-ruby@8860b97)

5.0.0
-----
* [Remove `Twitter::API::Undocumented#status_activity` and `#statuses_activity`](sferik/twitter-ruby@7f97081)
* [Remove `Twitter::Tweet#favoriters`, `#repliers`, `#repliers_count`, and `#retweeters`](sferik/twitter-ruby@77cc963)
* [Remove identity map](sferik/twitter-ruby@ec7c2df)
* [Remove `Twitter::Cursor#all`](sferik/twitter-ruby@72be414)
* [Remove `Twitter::Cursor#collection`](sferik/twitter-ruby@9ae4621)
* [Remove `Twitter#from_user`](sferik/twitter-ruby@d2ae9f1)
* [Remove `ClientError`, `ServerError`, and `ParserError`](sferik/twitter-ruby@7284394)
* [Remove global configuration](sferik/twitter-ruby@239c5a8)
* [Remove ability to configure client with environment variables](sferik/twitter-ruby@17e9585)
* [Remove Brittish English aliases](sferik/twitter-ruby@572813b)
* [Replace `multi_json` with `json`](sferik/twitter-ruby@e5fc292)
* [Rename `oauth_token` to `access_token`](sferik/twitter-ruby@d360f80)
* [Move `Twitter::Arguments` out of `REST::API` namespace](sferik/twitter-ruby@8faa153)
* [Move `Twitter::Client` into `REST` namespace](sferik/twitter-ruby@5b8c3fd)
* [Add `Twitter::Streaming::Client`](sferik/twitter-ruby@23afe90)
* [Add `Twitter::Error::AlreadyPosted`](sferik/twitter-ruby@e11d2a2)
* [Add `Twitter::REST::Client#reverse_token`](sferik/twitter-ruby@39139c4)
* [Add `#url` methods to `Twitter::List`, `Twitter::Tweet`, and `Twitter::User`](sferik/twitter-ruby@a89ec0f)
* [Add `Twitter::Place#contained_within` and `#contained_within?`](sferik/twitter-ruby@23cc247)
* [Add `Twitter::GeoResults`](sferik/twitter-ruby@be1a0a1)
* [Add `NullObject`](sferik/twitter-ruby@17880f4)
* [Add predicate methods for any possible `NullObject`](sferik/twitter-ruby@eac5522)
* [Always return `URI` instead of `String`](sferik/twitter-ruby@341f68d)
* [Allow `URI` as argument](sferik/twitter-ruby@c207567)
* [Allow `String` in addition to `URI` objects](sferik/twitter-ruby@89a46fb)
* [Collection caching](sferik/twitter-ruby@d484d7d)
* [Implement `Twitter::Cursor#each` without making an extra HTTP request](sferik/twitter-ruby@8eeff57)
* [Make `Twitter::SearchResults` enumerable](sferik/twitter-ruby@d5ce853)
* [Make `Twitter::Base` objects immutable](sferik/twitter-ruby@69b1ef7)
* [Missing key now raises `KeyError`, not `ArgumentError`](sferik/twitter-ruby@f56698c)
* [Use `equalizer` instead of manually overwriting #==](sferik/twitter-ruby@a7ddf71)
* [Give methods more natural names](sferik/twitter-ruby@e593194)
* [Fix `Twitter::SearchResults#rpp` return value](sferik/twitter-ruby@28d7320)

4.8.1
-----
* [Ignore case of profile image extension](sferik/twitter-ruby@7376061)
* [Allow use of Twitter::Token in place of bearer token string](sferik/twitter-ruby@13596bc)
* [Add Twitter::API::Undocumented#tweet_count](sferik/twitter-ruby@795458a)
* [Add missing dependencies](sferik/twitter-ruby@e07e034) ([@tmatilai](https://twitter.com/tmatilai))

4.8.0
-----
* [Add `Twitter::SearchResults#refresh_url`](sferik/twitter-ruby@6bf08c0) ([@mustafaturan](https://twitter.com/mustafaturan))
* [Fix issue with wrong signature being generated when multipart data is posted](sferik/twitter-ruby@65ab90a) ([@mustafaturan](https://twitter.com/mustafaturan))
* [Restore compatibility with Ruby 1.8.7](sferik/twitter-ruby@fb63970)
* [Remove undocumented methods, retired in the APIpocalypse](sferik/twitter-ruby@cf6a91f)

4.7.0
-----
* [Add support for application-only authentication](sferik/twitter-ruby#387) ([@paracycle](https://twitter.com/paracycle))
* [Add support for `Twitter::Entity::Symbol` entities](sferik/twitter-ruby@a14a0cd) ([@anno](https://twitter.com/anno))
* [Add `Twitter::API::OAuth#invalidate_token`](sferik/twitter-ruby#372) ([@terenceponce](https://twitter.com/terenceponce))
* [Add `Twitter::API::Lists#lists_owned` method](sferik/twitter-ruby@9e97b51)
* [Add `Twitter::API::Tweets#retweeters_ids` method](sferik/twitter-ruby@8cf5b2d)
* [Add `Twitter::SearchResults#next_results`](sferik/twitter-ruby#365) ([@KentonWhite](https://twitter.com/KentonWhite))
* [Make consumer_key readable](sferik/twitter-ruby@a318869)
* [Loosen required_rubygems_version for compatibility with Ubuntu 10.04](sferik/twitter-ruby@41bd565)
* [Remove default SSL configuration options and override](sferik/twitter-ruby@113b14b)
jsonn pushed a commit to jsonn/pkgsrc that referenced this pull request Mar 12, 2014
Changelog (from CHANGELOG.md)

5.5.1
-----
* [Fix bug where `Twitter::Error::AlreadyFavorited` would never be raised](sferik/twitter-ruby#512) ([@polestarw](https://twitter.com/polestarw))
* [Fix bug where `Twitter::Error::AlreadyPosted` would never be raised](sferik/twitter-ruby@e6b37b9)
* [Restore `Twitter::Entities#entities?` as a public method](sferik/twitter-ruby@234a9e3)

5.5.0
-----
* [Add entities to `Twitter::DirectMessage`](sferik/twitter-ruby@d911deb)
* [Add conversion methods to `Twitter::NullObject`](sferik/twitter-ruby@4900fee)

5.4.1
-----
* [Default to maximum number of tweets per request](sferik/twitter-ruby@1e41b5d)

5.4.0
-----
* [Fix enumerable search interface](sferik/twitter-ruby@e14cc33)

5.3.1
-----
* [Add `Twitter::Utils` module](sferik/twitter-ruby@a1f47fb) ([@charliesome](https://twitter.com/charliesome))
* [Remove `Enumerable` monkey patch](sferik/twitter-ruby@818b28d) ([@charliesome](https://twitter.com/charliesome))
* [Don't spawning a new thread if there's only one element](sferik/twitter-ruby@c01ea83)
* [Introduce meaningful constant names](sferik/twitter-ruby@215c808) ([@futuresanta](https://twitter.com/futuresanta))
* [Automatically flatten `Twitter::Arguments`](sferik/twitter-ruby@a556028)

5.3.0
-----
* [Add `UNABLE_TO_VERIFY_CREDENTIALS` error code](sferik/twitter-ruby@6a47e71)
* [Don't suppress `Twitter::Error::Forbidden` in #follow and #follow!](sferik/twitter-ruby@b949c04)
* [Update memoizable dependency to ~> 0.3.1](sferik/twitter-ruby#501)

5.2.0
-----
* [Replace `URI` with `adressable`](sferik/twitter-ruby@7ea2f53)
* [Make `Twitter::Streaming::FriendList` an array](sferik/twitter-ruby@1a38e5e)
* [Add `Twitter::Streaming::DeletedTweet`](sferik/twitter-ruby@084025b)
* [Add `Twitter::Streaming::StallWarning`](sferik/twitter-ruby@b07ac50)
* [Add error code for "User is over daily status update limit"](sferik/twitter-ruby@76c088d)
* [`Twitter::Streaming::Client#site` can take a `String` or `Twitter::User`](sferik/twitter-ruby@e3ad4f2)
* [Update `http_parser.rb` dependency to `~> 0.6.0`](sferik/twitter-ruby@6d2f81b)

5.1.1
-----
* [Custom equalizer for `Twitter::Place`](sferik/twitter-ruby@79c76a9)

5.1.0
-----
* [Use `Addressable::URI` everywhere](sferik/twitter-ruby@97d7c68) ([@matthewrudy](https://twitter.com/matthewrudy))
* [Allow use of `Twitter::Place` instead of `place_id`](sferik/twitter-ruby@c2b31dd)
* [Allow use of `Twitter::Tweet` instead of `in_reply_to_status_id`](sferik/twitter-ruby@6b7d6c2)

5.0.1
-----
* [Fix `buftok` delimiter handling](sferik/twitter-ruby#484)
* [Started handling streaming deletes](sferik/twitter-ruby@8860b97)

5.0.0
-----
* [Remove `Twitter::API::Undocumented#status_activity` and `#statuses_activity`](sferik/twitter-ruby@7f97081)
* [Remove `Twitter::Tweet#favoriters`, `#repliers`, `#repliers_count`, and `#retweeters`](sferik/twitter-ruby@77cc963)
* [Remove identity map](sferik/twitter-ruby@ec7c2df)
* [Remove `Twitter::Cursor#all`](sferik/twitter-ruby@72be414)
* [Remove `Twitter::Cursor#collection`](sferik/twitter-ruby@9ae4621)
* [Remove `Twitter#from_user`](sferik/twitter-ruby@d2ae9f1)
* [Remove `ClientError`, `ServerError`, and `ParserError`](sferik/twitter-ruby@7284394)
* [Remove global configuration](sferik/twitter-ruby@239c5a8)
* [Remove ability to configure client with environment variables](sferik/twitter-ruby@17e9585)
* [Remove Brittish English aliases](sferik/twitter-ruby@572813b)
* [Replace `multi_json` with `json`](sferik/twitter-ruby@e5fc292)
* [Rename `oauth_token` to `access_token`](sferik/twitter-ruby@d360f80)
* [Move `Twitter::Arguments` out of `REST::API` namespace](sferik/twitter-ruby@8faa153)
* [Move `Twitter::Client` into `REST` namespace](sferik/twitter-ruby@5b8c3fd)
* [Add `Twitter::Streaming::Client`](sferik/twitter-ruby@23afe90)
* [Add `Twitter::Error::AlreadyPosted`](sferik/twitter-ruby@e11d2a2)
* [Add `Twitter::REST::Client#reverse_token`](sferik/twitter-ruby@39139c4)
* [Add `#url` methods to `Twitter::List`, `Twitter::Tweet`, and `Twitter::User`](sferik/twitter-ruby@a89ec0f)
* [Add `Twitter::Place#contained_within` and `#contained_within?`](sferik/twitter-ruby@23cc247)
* [Add `Twitter::GeoResults`](sferik/twitter-ruby@be1a0a1)
* [Add `NullObject`](sferik/twitter-ruby@17880f4)
* [Add predicate methods for any possible `NullObject`](sferik/twitter-ruby@eac5522)
* [Always return `URI` instead of `String`](sferik/twitter-ruby@341f68d)
* [Allow `URI` as argument](sferik/twitter-ruby@c207567)
* [Allow `String` in addition to `URI` objects](sferik/twitter-ruby@89a46fb)
* [Collection caching](sferik/twitter-ruby@d484d7d)
* [Implement `Twitter::Cursor#each` without making an extra HTTP request](sferik/twitter-ruby@8eeff57)
* [Make `Twitter::SearchResults` enumerable](sferik/twitter-ruby@d5ce853)
* [Make `Twitter::Base` objects immutable](sferik/twitter-ruby@69b1ef7)
* [Missing key now raises `KeyError`, not `ArgumentError`](sferik/twitter-ruby@f56698c)
* [Use `equalizer` instead of manually overwriting #==](sferik/twitter-ruby@a7ddf71)
* [Give methods more natural names](sferik/twitter-ruby@e593194)
* [Fix `Twitter::SearchResults#rpp` return value](sferik/twitter-ruby@28d7320)

4.8.1
-----
* [Ignore case of profile image extension](sferik/twitter-ruby@7376061)
* [Allow use of Twitter::Token in place of bearer token string](sferik/twitter-ruby@13596bc)
* [Add Twitter::API::Undocumented#tweet_count](sferik/twitter-ruby@795458a)
* [Add missing dependencies](sferik/twitter-ruby@e07e034) ([@tmatilai](https://twitter.com/tmatilai))

4.8.0
-----
* [Add `Twitter::SearchResults#refresh_url`](sferik/twitter-ruby@6bf08c0) ([@mustafaturan](https://twitter.com/mustafaturan))
* [Fix issue with wrong signature being generated when multipart data is posted](sferik/twitter-ruby@65ab90a) ([@mustafaturan](https://twitter.com/mustafaturan))
* [Restore compatibility with Ruby 1.8.7](sferik/twitter-ruby@fb63970)
* [Remove undocumented methods, retired in the APIpocalypse](sferik/twitter-ruby@cf6a91f)

4.7.0
-----
* [Add support for application-only authentication](sferik/twitter-ruby#387) ([@paracycle](https://twitter.com/paracycle))
* [Add support for `Twitter::Entity::Symbol` entities](sferik/twitter-ruby@a14a0cd) ([@anno](https://twitter.com/anno))
* [Add `Twitter::API::OAuth#invalidate_token`](sferik/twitter-ruby#372) ([@terenceponce](https://twitter.com/terenceponce))
* [Add `Twitter::API::Lists#lists_owned` method](sferik/twitter-ruby@9e97b51)
* [Add `Twitter::API::Tweets#retweeters_ids` method](sferik/twitter-ruby@8cf5b2d)
* [Add `Twitter::SearchResults#next_results`](sferik/twitter-ruby#365) ([@KentonWhite](https://twitter.com/KentonWhite))
* [Make consumer_key readable](sferik/twitter-ruby@a318869)
* [Loosen required_rubygems_version for compatibility with Ubuntu 10.04](sferik/twitter-ruby@41bd565)
* [Remove default SSL configuration options and override](sferik/twitter-ruby@113b14b)
jsonn pushed a commit to jsonn/pkgsrc that referenced this pull request Oct 11, 2014
Changelog (from CHANGELOG.md)

5.5.1
-----
* [Fix bug where `Twitter::Error::AlreadyFavorited` would never be raised](sferik/twitter-ruby#512) ([@polestarw](https://twitter.com/polestarw))
* [Fix bug where `Twitter::Error::AlreadyPosted` would never be raised](sferik/twitter-ruby@e6b37b9)
* [Restore `Twitter::Entities#entities?` as a public method](sferik/twitter-ruby@234a9e3)

5.5.0
-----
* [Add entities to `Twitter::DirectMessage`](sferik/twitter-ruby@d911deb)
* [Add conversion methods to `Twitter::NullObject`](sferik/twitter-ruby@4900fee)

5.4.1
-----
* [Default to maximum number of tweets per request](sferik/twitter-ruby@1e41b5d)

5.4.0
-----
* [Fix enumerable search interface](sferik/twitter-ruby@e14cc33)

5.3.1
-----
* [Add `Twitter::Utils` module](sferik/twitter-ruby@a1f47fb) ([@charliesome](https://twitter.com/charliesome))
* [Remove `Enumerable` monkey patch](sferik/twitter-ruby@818b28d) ([@charliesome](https://twitter.com/charliesome))
* [Don't spawning a new thread if there's only one element](sferik/twitter-ruby@c01ea83)
* [Introduce meaningful constant names](sferik/twitter-ruby@215c808) ([@futuresanta](https://twitter.com/futuresanta))
* [Automatically flatten `Twitter::Arguments`](sferik/twitter-ruby@a556028)

5.3.0
-----
* [Add `UNABLE_TO_VERIFY_CREDENTIALS` error code](sferik/twitter-ruby@6a47e71)
* [Don't suppress `Twitter::Error::Forbidden` in #follow and #follow!](sferik/twitter-ruby@b949c04)
* [Update memoizable dependency to ~> 0.3.1](sferik/twitter-ruby#501)

5.2.0
-----
* [Replace `URI` with `adressable`](sferik/twitter-ruby@7ea2f53)
* [Make `Twitter::Streaming::FriendList` an array](sferik/twitter-ruby@1a38e5e)
* [Add `Twitter::Streaming::DeletedTweet`](sferik/twitter-ruby@084025b)
* [Add `Twitter::Streaming::StallWarning`](sferik/twitter-ruby@b07ac50)
* [Add error code for "User is over daily status update limit"](sferik/twitter-ruby@76c088d)
* [`Twitter::Streaming::Client#site` can take a `String` or `Twitter::User`](sferik/twitter-ruby@e3ad4f2)
* [Update `http_parser.rb` dependency to `~> 0.6.0`](sferik/twitter-ruby@6d2f81b)

5.1.1
-----
* [Custom equalizer for `Twitter::Place`](sferik/twitter-ruby@79c76a9)

5.1.0
-----
* [Use `Addressable::URI` everywhere](sferik/twitter-ruby@97d7c68) ([@matthewrudy](https://twitter.com/matthewrudy))
* [Allow use of `Twitter::Place` instead of `place_id`](sferik/twitter-ruby@c2b31dd)
* [Allow use of `Twitter::Tweet` instead of `in_reply_to_status_id`](sferik/twitter-ruby@6b7d6c2)

5.0.1
-----
* [Fix `buftok` delimiter handling](sferik/twitter-ruby#484)
* [Started handling streaming deletes](sferik/twitter-ruby@8860b97)

5.0.0
-----
* [Remove `Twitter::API::Undocumented#status_activity` and `#statuses_activity`](sferik/twitter-ruby@7f97081)
* [Remove `Twitter::Tweet#favoriters`, `#repliers`, `#repliers_count`, and `#retweeters`](sferik/twitter-ruby@77cc963)
* [Remove identity map](sferik/twitter-ruby@ec7c2df)
* [Remove `Twitter::Cursor#all`](sferik/twitter-ruby@72be414)
* [Remove `Twitter::Cursor#collection`](sferik/twitter-ruby@9ae4621)
* [Remove `Twitter#from_user`](sferik/twitter-ruby@d2ae9f1)
* [Remove `ClientError`, `ServerError`, and `ParserError`](sferik/twitter-ruby@7284394)
* [Remove global configuration](sferik/twitter-ruby@239c5a8)
* [Remove ability to configure client with environment variables](sferik/twitter-ruby@17e9585)
* [Remove Brittish English aliases](sferik/twitter-ruby@572813b)
* [Replace `multi_json` with `json`](sferik/twitter-ruby@e5fc292)
* [Rename `oauth_token` to `access_token`](sferik/twitter-ruby@d360f80)
* [Move `Twitter::Arguments` out of `REST::API` namespace](sferik/twitter-ruby@8faa153)
* [Move `Twitter::Client` into `REST` namespace](sferik/twitter-ruby@5b8c3fd)
* [Add `Twitter::Streaming::Client`](sferik/twitter-ruby@23afe90)
* [Add `Twitter::Error::AlreadyPosted`](sferik/twitter-ruby@e11d2a2)
* [Add `Twitter::REST::Client#reverse_token`](sferik/twitter-ruby@39139c4)
* [Add `#url` methods to `Twitter::List`, `Twitter::Tweet`, and `Twitter::User`](sferik/twitter-ruby@a89ec0f)
* [Add `Twitter::Place#contained_within` and `#contained_within?`](sferik/twitter-ruby@23cc247)
* [Add `Twitter::GeoResults`](sferik/twitter-ruby@be1a0a1)
* [Add `NullObject`](sferik/twitter-ruby@17880f4)
* [Add predicate methods for any possible `NullObject`](sferik/twitter-ruby@eac5522)
* [Always return `URI` instead of `String`](sferik/twitter-ruby@341f68d)
* [Allow `URI` as argument](sferik/twitter-ruby@c207567)
* [Allow `String` in addition to `URI` objects](sferik/twitter-ruby@89a46fb)
* [Collection caching](sferik/twitter-ruby@d484d7d)
* [Implement `Twitter::Cursor#each` without making an extra HTTP request](sferik/twitter-ruby@8eeff57)
* [Make `Twitter::SearchResults` enumerable](sferik/twitter-ruby@d5ce853)
* [Make `Twitter::Base` objects immutable](sferik/twitter-ruby@69b1ef7)
* [Missing key now raises `KeyError`, not `ArgumentError`](sferik/twitter-ruby@f56698c)
* [Use `equalizer` instead of manually overwriting #==](sferik/twitter-ruby@a7ddf71)
* [Give methods more natural names](sferik/twitter-ruby@e593194)
* [Fix `Twitter::SearchResults#rpp` return value](sferik/twitter-ruby@28d7320)

4.8.1
-----
* [Ignore case of profile image extension](sferik/twitter-ruby@7376061)
* [Allow use of Twitter::Token in place of bearer token string](sferik/twitter-ruby@13596bc)
* [Add Twitter::API::Undocumented#tweet_count](sferik/twitter-ruby@795458a)
* [Add missing dependencies](sferik/twitter-ruby@e07e034) ([@tmatilai](https://twitter.com/tmatilai))

4.8.0
-----
* [Add `Twitter::SearchResults#refresh_url`](sferik/twitter-ruby@6bf08c0) ([@mustafaturan](https://twitter.com/mustafaturan))
* [Fix issue with wrong signature being generated when multipart data is posted](sferik/twitter-ruby@65ab90a) ([@mustafaturan](https://twitter.com/mustafaturan))
* [Restore compatibility with Ruby 1.8.7](sferik/twitter-ruby@fb63970)
* [Remove undocumented methods, retired in the APIpocalypse](sferik/twitter-ruby@cf6a91f)

4.7.0
-----
* [Add support for application-only authentication](sferik/twitter-ruby#387) ([@paracycle](https://twitter.com/paracycle))
* [Add support for `Twitter::Entity::Symbol` entities](sferik/twitter-ruby@a14a0cd) ([@anno](https://twitter.com/anno))
* [Add `Twitter::API::OAuth#invalidate_token`](sferik/twitter-ruby#372) ([@terenceponce](https://twitter.com/terenceponce))
* [Add `Twitter::API::Lists#lists_owned` method](sferik/twitter-ruby@9e97b51)
* [Add `Twitter::API::Tweets#retweeters_ids` method](sferik/twitter-ruby@8cf5b2d)
* [Add `Twitter::SearchResults#next_results`](sferik/twitter-ruby#365) ([@KentonWhite](https://twitter.com/KentonWhite))
* [Make consumer_key readable](sferik/twitter-ruby@a318869)
* [Loosen required_rubygems_version for compatibility with Ubuntu 10.04](sferik/twitter-ruby@41bd565)
* [Remove default SSL configuration options and override](sferik/twitter-ruby@113b14b)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants