Skip to content

Commit

Permalink
Add Metadata class
Browse files Browse the repository at this point in the history
  • Loading branch information
sferik committed Oct 14, 2011
1 parent 19bebb8 commit c939a9f
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 17 deletions.
25 changes: 13 additions & 12 deletions README.md
Expand Up @@ -32,24 +32,25 @@ wiki][apps]!
[ci]: http://travis-ci.org/jnunemaker/twitter

## <a name="2.0"></a>What new in version 2?
This version introduces 16 new classes:
This version introduces 17 new classes:

1. `Twitter::Configuration`
2. `Twitter::Cursor`
3. `Twitter::DirectMessage`
4. `Twitter::Language`
5. `Twitter::List`
6. `Twitter::Photo`
7. `Twitter::Place`
8. `Twitter::Point`
9. `Twitter::Polygon`
10. `Twitter::RateLimitStatus`
11. `Twitter::Relationship`
12. `Twitter::SavedSearch`
13. `Twitter::Settings`
14. `Twitter::Size`
15. `Twitter::Status`
16. `Twitter::User`
6. `Twitter::Metadata`
7. `Twitter::Photo`
8. `Twitter::Place`
9. `Twitter::Point`
10. `Twitter::Polygon`
11. `Twitter::RateLimitStatus`
12. `Twitter::Relationship`
13. `Twitter::SavedSearch`
14. `Twitter::Settings`
15. `Twitter::Size`
16. `Twitter::Status`
17. `Twitter::User`

These classes (plus Ruby primitives) have replaced all instances of
`Hashie::Mash`. This allows us to remove the gem's dependency on [hashie][] and
Expand Down
1 change: 1 addition & 0 deletions lib/twitter.rb
Expand Up @@ -5,6 +5,7 @@
require 'twitter/direct_message'
require 'twitter/language'
require 'twitter/list'
require 'twitter/metadata'
require 'twitter/photo'
require 'twitter/place'
require 'twitter/point'
Expand Down
7 changes: 7 additions & 0 deletions lib/twitter/metadata.rb
@@ -0,0 +1,7 @@
require 'twitter/base'

module Twitter
class Metadata < Twitter::Base
attr_reader :result_type
end
end
19 changes: 14 additions & 5 deletions lib/twitter/status.rb
Expand Up @@ -2,39 +2,48 @@
require 'twitter/creatable'
require 'twitter/geo_factory'
require 'twitter/media_factory'
require 'twitter/metadata'
require 'twitter/place'
require 'twitter/user'
require 'twitter-text'

module Twitter
class Status < Twitter::Base
include Twitter::Creatable
attr_reader :geo, :hashtags, :id, :in_reply_to_screen_name,
:in_reply_to_status_id, :in_reply_to_user_id, :favorited, :media, :place,
:retweet_count, :retweeted, :source, :text, :truncated, :urls, :user,
:user_mentions
attr_reader :favorited, :from_user, :from_user_id, :geo, :hashtags, :id,
:in_reply_to_screen_name, :in_reply_to_status_id, :in_reply_to_user_id,
:iso_language_code, :metadata, :profile_image_url, :media, :place,
:retweet_count, :retweeted, :source, :text, :to_user, :to_user_id,
:truncated, :urls, :user, :user_mentions
alias :favorited? :favorited
alias :mentions :user_mentions
alias :retweeted? :retweeted
alias :truncated? :truncated

def initialize(status={})
@created_at = status['created_at']
@favorited = status['favorited']
@from_user = status['from_user']
@from_user_id = status['from_user_id']
@geo = Twitter::GeoFactory.new(status['geo']) unless status['geo'].nil?
@hashtags = Twitter::Extractor.extract_hashtags(status['text']) unless status['text'].nil?
@id = status['id']
@in_reply_to_screen_name = status['in_reply_to_screen_name']
@in_reply_to_status_id = status['in_reply_to_status_id']
@in_reply_to_user_id = status['in_reply_to_user_id']
@favorited = status['favorited']
@iso_language_code = status['iso_language_code']
@media = status['entities']['media'].map do |media|
MediaFactory.new(media)
end unless status['entities'].nil? || status['entities']['media'].nil?
@metadata = Twitter::Metadata.new(status['metadata']) unless status['metadata'].nil?
@place = Twitter::Place.new(status['place']) unless status['place'].nil?
@profile_image_url = status['profile_image_url']
@retweet_count = status['retweet_count']
@retweeted = status['retweeted']
@source = status['source']
@text = status['text']
@to_user = status['to_user']
@to_user_id = status['to_user_id']
@truncated = status['truncated']
@urls = Twitter::Extractor.extract_urls(status['text']) unless status['text'].nil?
@user = Twitter::User.new(status['user'].merge('status' => self.to_hash.delete('user'))) unless status['user'].nil?
Expand Down

0 comments on commit c939a9f

Please sign in to comment.