socialcastr 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,11 @@
1
+ *.gem
2
+ *.rbc
3
+ .DS_Store
4
+ .bundle
5
+ .rvmrc
6
+ .yardoc
7
+ Gemfile.lock
8
+ coverage/*
9
+ doc/*
10
+ log/*
11
+ pkg/*
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ gemspec
4
+
data/LICENSE.markdown ADDED
@@ -0,0 +1,8 @@
1
+ Copyright (c) 2011 Riccardo Cambiassi
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4
+
5
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6
+
7
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
8
+
data/README.markdown ADDED
@@ -0,0 +1,45 @@
1
+ # SocialCast
2
+
3
+ SocialCast gem is a ruby interface to the SocialCast REST API
4
+
5
+ ## INSTALLATION
6
+
7
+ gem install socialcast4r
8
+
9
+ ## Usage
10
+
11
+ Socialcastr.configuration do |socialcast|
12
+ socialcast.username = "user@example.com"
13
+ socialcast.password = "password"
14
+ socialcast.domain = "demo.socialcast.com"
15
+ end
16
+
17
+ api = Socialcastr.api
18
+
19
+ messages = api.messages
20
+
21
+ message_params = { "message[title]" => "hallo world!", "message[body]" => "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." }
22
+ reply = api.add_message(message_params)
23
+ message = Socialcastr::Message.parse(reply)
24
+
25
+
26
+ ## Status
27
+
28
+ This is just the first draft of the wrapper. It can be improved in many, many ways.
29
+ The API is not completely covered either: a lot of interesing stuff, like (un)liking and attachments have been left out.
30
+ Feel free to help (see Contributing below)
31
+
32
+ ## Contributing to the code (a.k.a. submitting a pull request)
33
+
34
+ 1. Fork the project.
35
+ 2. Create a topic branch.
36
+ 3. Implement your feature or bug fix.
37
+ 4. Commit and push your changes.
38
+ 5. Submit a pull request. Please do not include changes to the gemspec, version, or history file. (If you want to create your own version for some reason, please do so in a separate commit.)
39
+
40
+
41
+ ## Copyright
42
+
43
+ Copyright (c) 2011 Riccardo Cambiassi. See LICENSE for details.
44
+
45
+
data/Rakefile ADDED
@@ -0,0 +1,24 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
3
+
4
+ require 'rspec/core/rake_task'
5
+ RSpec::Core::RakeTask.new(:spec)
6
+
7
+ task :test => :spec
8
+ task :default => :spec
9
+
10
+ namespace :doc do
11
+ require 'yard'
12
+ YARD::Rake::YardocTask.new do |task|
13
+ task.files = ['HISTORY.mkd', 'LICENSE.mkd', 'lib/**/*.rb']
14
+ task.options = [
15
+ '--protected',
16
+ '--output-dir', 'doc/yard',
17
+ '--tag', 'format:Supported formats',
18
+ '--tag', 'authenticated:Requires Authentication',
19
+ '--tag', 'rate_limited:Rate Limited',
20
+ '--markup', 'markdown',
21
+ ]
22
+ end
23
+ end
24
+
@@ -0,0 +1,128 @@
1
+ require 'net/http'
2
+ require 'net/https'
3
+ require 'openssl'
4
+ require 'uri'
5
+ require 'digest/md5'
6
+ require 'cgi'
7
+
8
+
9
+
10
+ module Socialcastr
11
+ class API
12
+ attr_accessor :debug
13
+
14
+ def initialize(username, password, domain, format="xml",debug=false)
15
+ @debug = debug
16
+ @username = username
17
+ @password = password
18
+ @format = format
19
+ @endpoint = "https://#{domain}/api/"
20
+ return self
21
+ end
22
+
23
+ def messages(stream=nil, query={})
24
+ method="messages"
25
+ method.insert(0, "streams/#{stream.id}/") if stream
26
+ xml = api_get(method, query)
27
+ return Socialcastr::MessageList.parse(xml).messages
28
+ end
29
+
30
+ def search(query)
31
+ method="messages/search"
32
+ xml = api_get(method, query)
33
+ return Socialcastr::MessageList.parse(xml).messages
34
+ end
35
+
36
+ def groups
37
+ method = "group_memberships"
38
+ xml = api_get(method)
39
+ return Socialcastr::GroupMembershipList.parse(xml).group_memberships
40
+ end
41
+
42
+ def streams
43
+ method = "streams"
44
+ xml = api_get(method)
45
+ return Socialcastr::StreamList.parse(xml).streams
46
+ end
47
+
48
+ def add_message(message)
49
+ xml = api_post("messages", message)
50
+ return xml
51
+ end
52
+
53
+ def add_comment(message_id, comment)
54
+ xml = api_post("messages/#{message_id}/comments", comment)
55
+ return xml
56
+ end
57
+
58
+ def like_comment(message_id,comment_id)
59
+ xml = api_post("messages/#{message_id.to_s}/comments/#{comment_id.to_s}/likes")
60
+ return xml
61
+ end
62
+
63
+ def unlike_comment(message_id,comment_id,like_id)
64
+ xml = api_delete("messages/#{message_id}/comments/#{comment_id}/likes/#{like_id}")
65
+ return xml
66
+ end
67
+
68
+ def https_request(method, path, args)
69
+ https = setup_https
70
+ response = ""
71
+
72
+ # HACK
73
+ # if path == "messages/search"
74
+ # path = "messages"
75
+ # end
76
+ # data = File.read(File.join('/tmp','fixtures','xml', "#{path}.#{@format}"))
77
+ # return data
78
+ # # /HACK
79
+
80
+ case method
81
+ when 'get'
82
+ request_class = Net::HTTP::Get
83
+ query=args
84
+ when 'post'
85
+ request_class = Net::HTTP::Post
86
+ form_data = args
87
+ when 'put'
88
+ request_class = Net::HTTP::Put
89
+ form_data = args
90
+ when 'delete'
91
+ request_class = Net::HTTP::Delete
92
+ end
93
+ https.start do |session|
94
+ query_string = "/api/#{path}.#{@format}"
95
+ query_string += "?" + (query.collect { |k,v| "#{k}=#{CGI::escape(v.to_s)}" }.join('&')) unless query.nil?
96
+ req = request_class.new(query_string)
97
+ req.basic_auth @username, @password
98
+ if form_data
99
+ req.set_form_data(args, ';')
100
+ end
101
+ response = session.request(req).body
102
+ end
103
+
104
+ response
105
+ end
106
+
107
+ def api_get(path, args={})
108
+ https_request('get', path, args)
109
+ end
110
+
111
+
112
+ def api_post(path, args={})
113
+ https_request('post', path, args)
114
+ end
115
+
116
+ def api_delete(path, args={})
117
+ https_request('delete', path, args)
118
+ end
119
+
120
+ def setup_https
121
+ url = URI.parse(@endpoint)
122
+ https = Net::HTTP.new(url.host, url.port)
123
+ https.verify_mode = OpenSSL::SSL::VERIFY_NONE
124
+ https.use_ssl = true
125
+ return https
126
+ end
127
+ end
128
+ end
@@ -0,0 +1,10 @@
1
+ module Socialcastr
2
+ class Attachment < Base
3
+ element :public_filename
4
+ element :content_type
5
+ element :url
6
+ element :file_extension
7
+ element :filename
8
+ element :id
9
+ end
10
+ end
@@ -0,0 +1,5 @@
1
+ module Socialcastr
2
+ class AttachmentList < Base
3
+ elements :attachment, :as => :attachments, :class => Attachment
4
+ end
5
+ end
@@ -0,0 +1,9 @@
1
+ module Socialcastr
2
+ class AvatarList < Base
3
+ element :square16
4
+ element :square30
5
+ element :square45
6
+ element :square70
7
+ element :square140
8
+ end
9
+ end
@@ -0,0 +1,6 @@
1
+ require 'sax-machine'
2
+ module Socialcastr
3
+ class Base
4
+ include SAXMachine
5
+ end
6
+ end
@@ -0,0 +1,29 @@
1
+ module Socialcastr
2
+ class Comment < Base
3
+ element :editable
4
+ element :attachments, :as => :attachment_list, :class => Socialcastr::AttachmentList
5
+ element :likable
6
+ element :deletable
7
+ element :likes, :as => :like_list, :class => Socialcastr::LikeList
8
+ element :permalink_url
9
+ element :text
10
+ element :user, :class => Socialcastr::User
11
+ element :thumbnail_url
12
+ element :url
13
+ element :likes_count
14
+ element :created_at
15
+ element :id
16
+
17
+ def unlikable_by?(api_id)
18
+ self.likes.map{|l| l.unlikable_by?(api_id)}.any?
19
+ end
20
+
21
+ def likable_by?(api_id)
22
+ self.user_id != api_id
23
+ end
24
+
25
+ def like_id(api_id)
26
+ self.likes.select { |like| like.unlikable_by?(api_id) }.first.id
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,5 @@
1
+ module Socialcastr
2
+ class CommentList < Base
3
+ element :comment, :as => :comments, :class => Socialcastr::Comment
4
+ end
5
+ end
@@ -0,0 +1,14 @@
1
+ module Socialcastr
2
+ class ExternalResource < Base
3
+ element :type
4
+ element :tags, :as => :tag_list, :class => Socialcastr::TagList
5
+ element :canonical_hashtag
6
+ element :source, :class => Socialcastr::Source
7
+ element :media_files, :as => :media_file_list, :class => Socialcastr::MediaFileList
8
+ element :url
9
+ element :title
10
+ element :description
11
+ element :id
12
+
13
+ end
14
+ end
@@ -0,0 +1,5 @@
1
+ module Socialcastr
2
+ class ExternalResourceList < Base
3
+ elements :external_resource, :as => :external_resources, :class => ExternalResource
4
+ end
5
+ end
@@ -0,0 +1,9 @@
1
+ module Socialcastr
2
+ class Group < Base
3
+ element :url
4
+ element :id
5
+ element :name
6
+ element :avatars, :class => Socialcastr::AvatarList
7
+
8
+ end
9
+ end
@@ -0,0 +1,5 @@
1
+ module Socialcastr
2
+ class GroupList < Base
3
+ elements :group, :as => :groups, :class => Socialcastr::Group
4
+ end
5
+ end
@@ -0,0 +1,6 @@
1
+ module Socialcastr
2
+ class GroupMembership < Base
3
+ element :group, :class => Socialcastr::Group
4
+ element :role
5
+ end
6
+ end
@@ -0,0 +1,5 @@
1
+ module Socialcastr
2
+ class GroupMembershipList < Base
3
+ elements :group_membership, :as => :group_memberships, :class => Socialcastr::GroupMembership
4
+ end
5
+ end
@@ -0,0 +1,11 @@
1
+ module Socialcastr
2
+ class Like < Base
3
+ element :unlikable
4
+ element :user, :class => Socialcastr::User
5
+ element :created_at
6
+ element :id
7
+ def unlikable_by?(api_id)
8
+ @unlikable && api_id == self.user_id ? true : false
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,5 @@
1
+ module Socialcastr
2
+ class LikeList < Base
3
+ element :like, :as => :likes, :class => Socialcastr::Like
4
+ end
5
+ end
@@ -0,0 +1,12 @@
1
+ module Socialcastr
2
+ class MediaFile < Base
3
+ element :external_resource_id
4
+ element :page_url
5
+ element :attachment_id
6
+ element :content_type
7
+ element :url
8
+ element :thumbnails, :class => Socialcastr::ThumbnailList
9
+ element :title
10
+ element :description
11
+ end
12
+ end
@@ -0,0 +1,5 @@
1
+ module Socialcastr
2
+ class MediaFileList < Base
3
+ elements :media_file, :as => :media_files, :class => Socialcastr::MediaFile
4
+ end
5
+ end
@@ -0,0 +1,52 @@
1
+ module Socialcastr
2
+ class Message < Base
3
+
4
+ element :title
5
+ element :body
6
+ element :url
7
+ element :permalink_url
8
+ element :action
9
+ element :external_url
10
+ element :icon
11
+ element :id
12
+ element :likable
13
+ element :created_at
14
+ element :updated_at
15
+ element :last_interacted_at
16
+ element :player_url
17
+ element :thumbnail_url
18
+ element :player_params
19
+ element :user, :class => Socialcastr::User
20
+ element :group, :class => Socialcastr::Group
21
+ element :groups, :as => :group_list, :class => Socialcastr::GroupList
22
+ element :source, :class => Socialcastr::Source
23
+
24
+ element :editable
25
+ element :rating
26
+ element :category_id
27
+ element :subscribed
28
+ # element :ratings_average
29
+ element :flag
30
+ element :deletable
31
+ element :comments_count
32
+ element :verb
33
+ element :in_reply_to
34
+ element :watchable
35
+ element :contains_url_only
36
+ # element :target_user
37
+ element :ratable
38
+ element :message_type
39
+ element :recipients, :as => :recipient_list, :class => Socialcastr::RecipientList
40
+
41
+ element :attachments, :as => :attachment_list, :class => Socialcastr::AttachmentList
42
+ element :tags, :as => :tag_list, :class => Socialcastr::TagList
43
+ element :likes, :as => :like_list, :class => Socialcastr::LikeList
44
+ element :external_resources, :as => :external_resource_list, :class => Socialcastr::ExternalResourceList
45
+ element :media_files, :as => :media_file_list, :class => Socialcastr::MediaFileList
46
+ element :likes_count
47
+ element :hidden
48
+
49
+ element :comments, :as => :comment_list, :class => Socialcastr::CommentList
50
+
51
+ end
52
+ end
@@ -0,0 +1,5 @@
1
+ module Socialcastr
2
+ class MessageList < Base
3
+ elements :message, :as => :messages, :class => Message
4
+ end
5
+ end
@@ -0,0 +1,11 @@
1
+ module Socialcastr
2
+ class Recipient < Base
3
+ element :type
4
+ element :username
5
+ element :avatars, :class => Socialcastr::AvatarList
6
+ element :url
7
+ element :name
8
+ element :id
9
+ element :private
10
+ end
11
+ end
@@ -0,0 +1,6 @@
1
+ module Socialcastr
2
+ class RecipientList < Base
3
+ elements :recipient, :as => :recipients, :class => Socialcastr::Recipient
4
+ end
5
+ end
6
+
@@ -0,0 +1,8 @@
1
+ module Socialcastr
2
+ class Source < Base
3
+ element :url
4
+ element :formal_name
5
+ element :name
6
+ element :id
7
+ end
8
+ end
@@ -0,0 +1,10 @@
1
+ module Socialcastr
2
+ class Stream < Base
3
+ element :id
4
+ element :name
5
+ element :default
6
+ element :last_interacted_at
7
+ element :custom_stream
8
+ element :group, :class => Socialcastr::Group
9
+ end
10
+ end
@@ -0,0 +1,5 @@
1
+ module Socialcastr
2
+ class StreamList < Base
3
+ elements :stream, :as => :streams, :class => Socialcastr::Stream
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ module Socialcastr
2
+ class Tag < Base
3
+ element :name
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ module Socialcastr
2
+ class TagList < Base
3
+ elements :tag, :as => :tags, :class => Socialcastr::Tag
4
+ end
5
+ end
@@ -0,0 +1,8 @@
1
+ module Socialcastr
2
+ class ThumbnailList < Base
3
+ element :square45
4
+ element :stream_square
5
+ element :scaled480
6
+ element :stream
7
+ end
8
+ end
@@ -0,0 +1,11 @@
1
+ module Socialcastr
2
+ class User < Base
3
+ element :type
4
+ element :terminated
5
+ element :username
6
+ element :avatars, :class => AvatarList
7
+ element :url
8
+ element :name
9
+ element :id
10
+ end
11
+ end
@@ -0,0 +1,3 @@
1
+ module Socialcastr
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,59 @@
1
+ $LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__))) unless $LOAD_PATH.include?(File.expand_path(File.dirname(__FILE__)))
2
+
3
+ require 'socialcastr/base'
4
+ require 'socialcastr/api'
5
+ require 'socialcastr/attachment'
6
+ require 'socialcastr/attachment_list'
7
+ require 'socialcastr/avatar_list'
8
+ require 'socialcastr/user'
9
+ require 'socialcastr/like'
10
+ require 'socialcastr/like_list'
11
+ require 'socialcastr/comment'
12
+ require 'socialcastr/comment_list'
13
+ require 'socialcastr/group'
14
+ require 'socialcastr/group_list'
15
+ require 'socialcastr/group_membership'
16
+ require 'socialcastr/group_membership_list'
17
+ require 'socialcastr/stream'
18
+ require 'socialcastr/stream_list'
19
+ require 'socialcastr/source'
20
+ require 'socialcastr/tag'
21
+ require 'socialcastr/tag_list'
22
+ require 'socialcastr/recipient'
23
+ require 'socialcastr/recipient_list'
24
+ require 'socialcastr/thumbnail_list'
25
+ require 'socialcastr/media_file'
26
+ require 'socialcastr/media_file_list'
27
+ require 'socialcastr/external_resource'
28
+ require 'socialcastr/external_resource_list'
29
+ require 'socialcastr/message'
30
+ require 'socialcastr/message_list'
31
+
32
+ require 'singleton'
33
+
34
+ module Socialcastr
35
+ class Configuration
36
+ include Singleton
37
+ ATTRIBUTES = [:domain, :username, :password, :config_file]
38
+ attr_accessor *ATTRIBUTES
39
+ end
40
+
41
+ def self.configuration
42
+ if block_given?
43
+ yield Configuration.instance
44
+ if Configuration.instance.config_file
45
+ config = YAML::load_file(Configuration.instance.config_file)
46
+ Configuration.instance.domain = config['domain']
47
+ Configuration.instance.username = config['username']
48
+ Configuration.instance.password = config['password']
49
+ end
50
+ end
51
+ Configuration.instance
52
+ end
53
+
54
+ def self.api
55
+ config = Configuration.instance
56
+ API.new(config.username, config.password, config.domain)
57
+ end
58
+
59
+ end
@@ -0,0 +1,33 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require File.expand_path('../lib/socialcastr/version', __FILE__)
3
+
4
+ Gem::Specification.new do |s|
5
+ s.add_development_dependency('rake', '~> 0.8')
6
+ s.add_development_dependency('rspec', '~> 2.5')
7
+ s.add_runtime_dependency('sax-machine')
8
+ s.authors = ["Riccardo Cambiassi"]
9
+ s.description = %q{A Ruby wrapper for the Socialcast REST API}
10
+ s.post_install_message =<<eos
11
+ ********************************************************************************
12
+
13
+ Thank you for installing socialcastr
14
+
15
+ Follow @bru on Twitter for announcements, updates, and news.
16
+ https://twitter.com/bru
17
+
18
+ ********************************************************************************
19
+ eos
20
+ s.email = ['bru@codewitch.org']
21
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
22
+ s.files = `git ls-files`.split("\n")
23
+ s.homepage = 'https://github.com/bru/socialcastr'
24
+ s.name = 'socialcastr'
25
+ s.platform = Gem::Platform::RUBY
26
+ s.require_paths = ['lib']
27
+ s.required_rubygems_version = Gem::Requirement.new('>= 1.3.6') if s.respond_to? :required_rubygems_version=
28
+ s.rubyforge_project = s.name
29
+ s.summary = %q{Ruby wrapper for the Socialcast API}
30
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
31
+ s.version = Socialcastr::VERSION.dup
32
+ end
33
+
metadata ADDED
@@ -0,0 +1,157 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: socialcastr
3
+ version: !ruby/object:Gem::Version
4
+ hash: 29
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 1
10
+ version: 0.0.1
11
+ platform: ruby
12
+ authors:
13
+ - Riccardo Cambiassi
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2011-04-12 00:00:00 +01:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: rake
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ hash: 27
30
+ segments:
31
+ - 0
32
+ - 8
33
+ version: "0.8"
34
+ type: :development
35
+ version_requirements: *id001
36
+ - !ruby/object:Gem::Dependency
37
+ name: rspec
38
+ prerelease: false
39
+ requirement: &id002 !ruby/object:Gem::Requirement
40
+ none: false
41
+ requirements:
42
+ - - ~>
43
+ - !ruby/object:Gem::Version
44
+ hash: 9
45
+ segments:
46
+ - 2
47
+ - 5
48
+ version: "2.5"
49
+ type: :development
50
+ version_requirements: *id002
51
+ - !ruby/object:Gem::Dependency
52
+ name: sax-machine
53
+ prerelease: false
54
+ requirement: &id003 !ruby/object:Gem::Requirement
55
+ none: false
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ hash: 3
60
+ segments:
61
+ - 0
62
+ version: "0"
63
+ type: :runtime
64
+ version_requirements: *id003
65
+ description: A Ruby wrapper for the Socialcast REST API
66
+ email:
67
+ - bru@codewitch.org
68
+ executables: []
69
+
70
+ extensions: []
71
+
72
+ extra_rdoc_files: []
73
+
74
+ files:
75
+ - .gitignore
76
+ - Gemfile
77
+ - LICENSE.markdown
78
+ - README.markdown
79
+ - Rakefile
80
+ - lib/socialcastr.rb
81
+ - lib/socialcastr/api.rb
82
+ - lib/socialcastr/attachment.rb
83
+ - lib/socialcastr/attachment_list.rb
84
+ - lib/socialcastr/avatar_list.rb
85
+ - lib/socialcastr/base.rb
86
+ - lib/socialcastr/comment.rb
87
+ - lib/socialcastr/comment_list.rb
88
+ - lib/socialcastr/external_resource.rb
89
+ - lib/socialcastr/external_resource_list.rb
90
+ - lib/socialcastr/group.rb
91
+ - lib/socialcastr/group_list.rb
92
+ - lib/socialcastr/group_membership.rb
93
+ - lib/socialcastr/group_membership_list.rb
94
+ - lib/socialcastr/like.rb
95
+ - lib/socialcastr/like_list.rb
96
+ - lib/socialcastr/media_file.rb
97
+ - lib/socialcastr/media_file_list.rb
98
+ - lib/socialcastr/message.rb
99
+ - lib/socialcastr/message_list.rb
100
+ - lib/socialcastr/recipient.rb
101
+ - lib/socialcastr/recipient_list.rb
102
+ - lib/socialcastr/source.rb
103
+ - lib/socialcastr/stream.rb
104
+ - lib/socialcastr/stream_list.rb
105
+ - lib/socialcastr/tag.rb
106
+ - lib/socialcastr/tag_list.rb
107
+ - lib/socialcastr/thumbnail_list.rb
108
+ - lib/socialcastr/user.rb
109
+ - lib/socialcastr/version.rb
110
+ - socialcastr.gemspec
111
+ has_rdoc: true
112
+ homepage: https://github.com/bru/socialcastr
113
+ licenses: []
114
+
115
+ post_install_message: |
116
+ ********************************************************************************
117
+
118
+ Thank you for installing socialcastr
119
+
120
+ Follow @bru on Twitter for announcements, updates, and news.
121
+ https://twitter.com/bru
122
+
123
+ ********************************************************************************
124
+
125
+ rdoc_options: []
126
+
127
+ require_paths:
128
+ - lib
129
+ required_ruby_version: !ruby/object:Gem::Requirement
130
+ none: false
131
+ requirements:
132
+ - - ">="
133
+ - !ruby/object:Gem::Version
134
+ hash: 3
135
+ segments:
136
+ - 0
137
+ version: "0"
138
+ required_rubygems_version: !ruby/object:Gem::Requirement
139
+ none: false
140
+ requirements:
141
+ - - ">="
142
+ - !ruby/object:Gem::Version
143
+ hash: 23
144
+ segments:
145
+ - 1
146
+ - 3
147
+ - 6
148
+ version: 1.3.6
149
+ requirements: []
150
+
151
+ rubyforge_project: socialcastr
152
+ rubygems_version: 1.5.3
153
+ signing_key:
154
+ specification_version: 3
155
+ summary: Ruby wrapper for the Socialcast API
156
+ test_files: []
157
+