mingle 0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (95) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/Rakefile +28 -0
  4. data/app/assets/javascripts/mingle/application.js +13 -0
  5. data/app/assets/stylesheets/mingle/application.css +15 -0
  6. data/app/controllers/mingle/application_controller.rb +4 -0
  7. data/app/helpers/mingle/application_helper.rb +4 -0
  8. data/app/jobs/mingle/facebook/fetch.rb +9 -0
  9. data/app/jobs/mingle/instagram/fetch.rb +10 -0
  10. data/app/jobs/mingle/twitter/fetch.rb +10 -0
  11. data/app/models/mingle.rb +5 -0
  12. data/app/models/mingle/facebook.rb +82 -0
  13. data/app/models/mingle/facebook/configuration.rb +8 -0
  14. data/app/models/mingle/facebook/post.rb +28 -0
  15. data/app/models/mingle/hashtag.rb +31 -0
  16. data/app/models/mingle/hashtagging.rb +4 -0
  17. data/app/models/mingle/instagram.rb +36 -0
  18. data/app/models/mingle/instagram/photo.rb +20 -0
  19. data/app/models/mingle/twitter.rb +48 -0
  20. data/app/models/mingle/twitter/tweet.rb +18 -0
  21. data/app/views/layouts/mingle/application.html.erb +14 -0
  22. data/config/initializers/facebook.rb +3 -0
  23. data/config/initializers/instagram.rb +3 -0
  24. data/config/routes.rb +2 -0
  25. data/db/migrate/20140222105907_create_mingle_hashtags.rb +9 -0
  26. data/db/migrate/20140222105956_create_mingle_hashtaggings.rb +13 -0
  27. data/db/migrate/20140222110925_create_mingle_twitter_tweets.rb +15 -0
  28. data/db/migrate/20140222112623_create_mingle_facebook_posts.rb +19 -0
  29. data/db/migrate/20140222112741_create_mingle_instagram_photos.rb +15 -0
  30. data/db/migrate/20140222125715_create_mingle_feed_items.rb +11 -0
  31. data/db/migrate/20140224155358_drop_mingle_feed_items.rb +5 -0
  32. data/lib/mingle.rb +8 -0
  33. data/lib/mingle/engine.rb +21 -0
  34. data/lib/mingle/version.rb +3 -0
  35. data/lib/tasks/mingle_tasks.rake +33 -0
  36. data/spec/dummy/README.rdoc +28 -0
  37. data/spec/dummy/Rakefile +6 -0
  38. data/spec/dummy/app/assets/javascripts/application.js +13 -0
  39. data/spec/dummy/app/assets/stylesheets/application.css +15 -0
  40. data/spec/dummy/app/controllers/application_controller.rb +5 -0
  41. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  42. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  43. data/spec/dummy/bin/bundle +3 -0
  44. data/spec/dummy/bin/rails +4 -0
  45. data/spec/dummy/bin/rake +4 -0
  46. data/spec/dummy/config.ru +4 -0
  47. data/spec/dummy/config/application.rb +23 -0
  48. data/spec/dummy/config/boot.rb +5 -0
  49. data/spec/dummy/config/database.yml +30 -0
  50. data/spec/dummy/config/environment.rb +5 -0
  51. data/spec/dummy/config/environments/development.rb +37 -0
  52. data/spec/dummy/config/environments/production.rb +83 -0
  53. data/spec/dummy/config/environments/test.rb +39 -0
  54. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  55. data/spec/dummy/config/initializers/cookies_serializer.rb +3 -0
  56. data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  57. data/spec/dummy/config/initializers/inflections.rb +16 -0
  58. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  59. data/spec/dummy/config/initializers/session_store.rb +3 -0
  60. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  61. data/spec/dummy/config/locales/en.yml +23 -0
  62. data/spec/dummy/config/routes.rb +4 -0
  63. data/spec/dummy/config/secrets.yml +22 -0
  64. data/spec/dummy/db/development.sqlite3 +0 -0
  65. data/spec/dummy/db/schema.rb +75 -0
  66. data/spec/dummy/db/test.sqlite3 +0 -0
  67. data/spec/dummy/log/development.log +12964 -0
  68. data/spec/dummy/log/test.log +12630 -0
  69. data/spec/dummy/public/404.html +67 -0
  70. data/spec/dummy/public/422.html +67 -0
  71. data/spec/dummy/public/500.html +66 -0
  72. data/spec/dummy/public/favicon.ico +0 -0
  73. data/spec/factories/mingle/facebook/posts.rb +15 -0
  74. data/spec/factories/mingle/hashtaggings.rb +8 -0
  75. data/spec/factories/mingle/hashtags.rb +7 -0
  76. data/spec/factories/mingle/instagram/photos.rb +12 -0
  77. data/spec/factories/mingle/twitter/tweets.rb +12 -0
  78. data/spec/fixtures/mingle/facebook/page_posts.json +133 -0
  79. data/spec/fixtures/mingle/facebook/search_posts.json +119 -0
  80. data/spec/fixtures/mingle/instagram/photos.json +155 -0
  81. data/spec/fixtures/mingle/twitter/tweets.json +253 -0
  82. data/spec/jobs/mingle/facebook/fetch_spec.rb +9 -0
  83. data/spec/jobs/mingle/instagram/fetch_spec.rb +9 -0
  84. data/spec/jobs/mingle/twitter/fetch_spec.rb +9 -0
  85. data/spec/models/mingle/facebook/post_spec.rb +43 -0
  86. data/spec/models/mingle/facebook_spec.rb +105 -0
  87. data/spec/models/mingle/hashtag_spec.rb +41 -0
  88. data/spec/models/mingle/hashtagging_spec.rb +4 -0
  89. data/spec/models/mingle/instagram/photo_spec.rb +4 -0
  90. data/spec/models/mingle/instagram_spec.rb +58 -0
  91. data/spec/models/mingle/twitter/tweet_spec.rb +4 -0
  92. data/spec/models/mingle/twitter_spec.rb +69 -0
  93. data/spec/spec_helper.rb +21 -0
  94. data/spec/support/fixture.rb +8 -0
  95. metadata +340 -0
@@ -0,0 +1,105 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Mingle::Facebook do
6
+
7
+ let(:klhd_hashtag) { create :mingle_hashtag }
8
+ let(:thousand_hashtag) { create :mingle_hashtag, tag_name: "#1000colours" }
9
+
10
+ it 'should prefix the database table name of namespaced models' do
11
+ expect(Mingle::Facebook.table_name_prefix).to eq 'mingle_facebook_'
12
+ end
13
+
14
+ before do
15
+ stub_request(:get, /graph.facebook.com\/133713366690788\/posts/)
16
+ .to_return body: fixture('mingle/facebook/page_posts.json')
17
+ stub_request(:get, /graph.facebook.com\/search/)
18
+ .to_return body: fixture('mingle/facebook/search_posts.json')
19
+ end
20
+
21
+ describe '#fetch' do
22
+ it 'can fetch posts since the beginning of time' do
23
+ Mingle::Facebook.should_receive(:posts_through_search).once
24
+ .with(klhd_hashtag, nil)
25
+ .and_call_original
26
+
27
+ Mingle::Facebook.fetch klhd_hashtag
28
+ end
29
+
30
+ it 'accepts multiple hashtags' do
31
+ Mingle::Facebook.should_receive(:posts_through_search).once
32
+ .with(klhd_hashtag, nil)
33
+ .and_call_original
34
+
35
+ Mingle::Facebook.should_receive(:posts_through_search).once
36
+ .with(thousand_hashtag, nil)
37
+ .and_call_original
38
+
39
+ Mingle::Facebook.fetch [klhd_hashtag, thousand_hashtag]
40
+ end
41
+
42
+ it 'can fetch posts since date/timestamp' do
43
+ since = 2.weeks.ago
44
+
45
+ Mingle::Facebook.should_receive(:posts_through_search).once
46
+ .with(klhd_hashtag, since)
47
+ .and_call_original
48
+
49
+ Mingle::Facebook.fetch klhd_hashtag, since
50
+ end
51
+
52
+ it 'will create model instances for fetched posts' do
53
+ posts = Mingle::Facebook.fetch klhd_hashtag
54
+
55
+ post = posts.first
56
+
57
+ expect(post.message).to eq '#KLHD'
58
+ expect(post.type).to eq 'status'
59
+ expect(post.user_id).to eq '577910407'
60
+ expect(post.user_name).to eq 'John-John Myhrvold'
61
+ expect(post.created_at).to eq DateTime.parse('2013-10-29T09:21:59+0000')
62
+
63
+ post = posts.second
64
+
65
+ expect(post.message).to eq '#klhd Rema skolen :D'
66
+ expect(post.type).to eq 'status'
67
+ expect(post.user_id).to eq '880440296'
68
+ expect(post.user_name).to eq 'Chris-Stian Tjorven Selstad'
69
+ expect(post.created_at).to eq DateTime.parse('2013-10-29T09:00:42+0000')
70
+
71
+ expect(Mingle::Facebook::Post.count).to eq 2
72
+ end
73
+
74
+ it 'is idempotent' do
75
+ Mingle::Facebook.fetch klhd_hashtag
76
+
77
+ expect do
78
+ Mingle::Facebook.fetch klhd_hashtag
79
+ end.not_to change { Mingle::Facebook::Post.count }
80
+ end
81
+ end
82
+
83
+ describe '#config' do
84
+ it 'creates a new configuration if none exist' do
85
+ Mingle::Facebook.config = nil
86
+ expect(Mingle::Facebook.config).to be_a Mingle::Facebook::Configuration
87
+ end
88
+
89
+ it 'returns the existing configuration if it exists' do
90
+ config = Mingle::Facebook::Configuration.new
91
+ Mingle::Facebook.config = config
92
+ expect(Mingle::Facebook.config).to eq config
93
+ end
94
+ end
95
+
96
+ describe '#configure' do
97
+ it 'sets the access token correctly' do
98
+ Mingle::Facebook.config = nil
99
+ Mingle::Facebook.configure do |config|
100
+ config.access_token = 'LZRpP4jsLpx7Q8q5sF5z'
101
+ end
102
+ end
103
+ end
104
+
105
+ end
@@ -0,0 +1,41 @@
1
+ require 'spec_helper'
2
+
3
+ describe Mingle::Hashtag do
4
+
5
+ describe '#tag_name_with_hash' do
6
+ context 'when the tag name already is prepended with a hash' do
7
+ subject { build_stubbed :mingle_hashtag, tag_name: '#klhd' }
8
+
9
+ it 'returns the tag name' do
10
+ expect(subject.tag_name_with_hash).to eq "#klhd"
11
+ end
12
+ end
13
+
14
+ context 'when the tag name is not prepended with a hash' do
15
+ subject { build_stubbed :mingle_hashtag, tag_name: 'klhd' }
16
+
17
+ it 'returns the tag name prepepded with a hash' do
18
+ expect(subject.tag_name_with_hash).to eq "#klhd"
19
+ end
20
+ end
21
+ end
22
+
23
+ describe '#tag_name_without_hash' do
24
+ context 'when the tag name already is prepended with a hash' do
25
+ subject { build_stubbed :mingle_hashtag, tag_name: '#klhd' }
26
+
27
+ it 'returns the tag name without the prefixed hash' do
28
+ expect(subject.tag_name_without_hash).to eq "klhd"
29
+ end
30
+ end
31
+
32
+ context 'when the tag name is not prepended with a hash' do
33
+ subject { build_stubbed :mingle_hashtag, tag_name: 'klhd' }
34
+
35
+ it 'returns the tag name' do
36
+ expect(subject.tag_name_without_hash).to eq "klhd"
37
+ end
38
+ end
39
+ end
40
+
41
+ end
@@ -0,0 +1,4 @@
1
+ require 'spec_helper'
2
+
3
+ describe Mingle::Hashtagging do
4
+ end
@@ -0,0 +1,4 @@
1
+ require 'spec_helper'
2
+
3
+ describe Mingle::Instagram::Photo do
4
+ end
@@ -0,0 +1,58 @@
1
+ require 'spec_helper'
2
+
3
+ describe Mingle::Instagram do
4
+
5
+ let(:hashtag) { create :mingle_hashtag, tag_name: 'klhd' }
6
+
7
+ it 'should prefix the database table name of namespaced models' do
8
+ expect(Mingle::Instagram.table_name_prefix).to eq 'mingle_instagram_'
9
+ end
10
+
11
+ it 'can fetch recent photos' do
12
+ Instagram.should_receive(:tag_recent_media).once
13
+ .with('klhd').and_return []
14
+
15
+ Mingle::Instagram.fetch hashtag
16
+ end
17
+
18
+ it 'will create model instances for fetched photos' do
19
+ stub_request(:get, /api\.instagram\.com\/v1\/tags\/klhd\/media\/recent\.json/).to_return body: fixture('mingle/instagram/photos.json')
20
+
21
+ photos = Mingle::Instagram.fetch hashtag
22
+
23
+ photo = photos.first
24
+
25
+ expect(photo.created_at).to eq Time.at(1369985275)
26
+ expect(photo.link).to eq 'https://instagram.com/p/Z97x-zEBXL/'
27
+ expect(photo.photo_id).to eq '467792855743600075_272366028'
28
+ expect(photo.message).to eq 'foo'
29
+ expect(photo.url).to eq 'https://distilleryimage7.s3.amazonaws.com/9c90802cc9c311e2868a22000a9f18a6_7.jpg'
30
+ expect(photo.user_handle).to eq 'eivindhilling'
31
+ expect(photo.user_id).to eq '272366028'
32
+ expect(photo.user_image_url).to eq 'https://distillery.s3.amazonaws.com/profiles/profile_272366028_75sq_1365676035.jpg'
33
+
34
+ photo = photos.last
35
+
36
+ expect(photo.created_at).to eq Time.at(1366202692)
37
+ expect(photo.link).to eq 'https://instagram.com/p/YNNE4ckBfI/'
38
+ expect(photo.photo_id).to eq '436062249016104904_272366028'
39
+ expect(photo.message).to eq nil
40
+ expect(photo.url).to eq 'https://distilleryimage4.s3.amazonaws.com/995b39c6a75c11e2918122000a9f4d8a_7.jpg'
41
+ expect(photo.user_handle).to eq 'eivindhilling'
42
+ expect(photo.user_id).to eq '272366028'
43
+ expect(photo.user_image_url).to eq 'https://distillery.s3.amazonaws.com/profiles/profile_272366028_75sq_1365676035.jpg'
44
+
45
+ expect(Mingle::Instagram::Photo.count).to be 2
46
+ end
47
+
48
+ it 'associates hashtags to photos' do
49
+ stub_request(:get, /api\.instagram\.com\/v1\/tags\/klhd\/media\/recent\.json/).to_return body: fixture('mingle/instagram/photos.json')
50
+
51
+ photos = Mingle::Instagram.fetch hashtag
52
+
53
+ photo = photos.first
54
+
55
+ expect(photo.hashtags).to eq [ hashtag ]
56
+ end
57
+
58
+ end
@@ -0,0 +1,4 @@
1
+ require 'spec_helper'
2
+
3
+ describe Mingle::Twitter::Tweet do
4
+ end
@@ -0,0 +1,69 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Mingle::Twitter do
6
+ let(:hashtag) { create :mingle_hashtag, tag_name: '#klhd' }
7
+
8
+ before do
9
+ ENV['TWITTER_API_KEY'] = '...'
10
+ ENV['TWITTER_API_SECRET'] = '...'
11
+ ENV['TWITTER_ACCESS_TOKEN'] = '...'
12
+ ENV['TWITTER_ACCESS_TOKEN_SECRET'] = '...'
13
+ end
14
+
15
+ it 'should prefix the database table name of namespaced models' do
16
+ expect(Mingle::Twitter.table_name_prefix).to eq 'mingle_twitter_'
17
+ end
18
+
19
+ it 'can fetch tweets since the beginning of time' do
20
+ Twitter::REST::Client.any_instance.should_receive(:search).with("#klhd", since_id: nil)
21
+ .and_return double(collect: [])
22
+
23
+ Mingle::Twitter.fetch hashtag
24
+ end
25
+
26
+ it 'can fetch tweets since last tweet by id' do
27
+ Twitter::REST::Client.any_instance.should_receive(:search).with("#klhd", since_id: 12391)
28
+ .and_return double(collect: [])
29
+
30
+ Mingle::Twitter.fetch hashtag, 12391
31
+ end
32
+
33
+ it 'will create model instances for fetched tweets' do
34
+ stub_request(:get, /api.twitter.com\/1\.1\/search\/tweets\.json/).to_return body: fixture('mingle/twitter/tweets.json')
35
+
36
+ tweets = Mingle::Twitter.fetch hashtag
37
+
38
+ tweet = tweets.first
39
+
40
+ expect(tweet.created_at).to eq DateTime.parse('Sat Jun 01 07:45:37 +0000 2013')
41
+ expect(tweet.text).to match /^Klar for dagens plikter! Ha en fin lørdag/
42
+ expect(tweet.user_id).to eq '280615050'
43
+ expect(tweet.user_handle).to eq 'anitairenLFC'
44
+ expect(tweet.user_image_url).to eq 'https://si0.twimg.com/profile_images/3521212093/20a837ff967f5f1685f00506df7550e5_normal.jpeg'
45
+ expect(tweet.user_name).to eq 'Anita Iren Vassli'
46
+
47
+ tweet = tweets.last
48
+
49
+ expect(tweet.created_at).to eq DateTime.parse('Sat Jun 01 07:33:40 +0000 2013')
50
+ expect(tweet.text).to match /^Av erfaring er det en ting som er sikkert/
51
+ expect(tweet.user_id).to eq '87887606'
52
+ expect(tweet.user_handle).to eq 'Hbjorg'
53
+ expect(tweet.user_image_url).to eq 'https://si0.twimg.com/profile_images/1364414120/Profil_twitter_normal.jpg'
54
+ expect(tweet.user_name).to eq 'Hans Fredrik'
55
+
56
+ expect(Mingle::Twitter::Tweet.count).to be 2
57
+ end
58
+
59
+ it 'associates hashtag models to the returned tweets' do
60
+ stub_request(:get, /api.twitter.com\/1\.1\/search\/tweets\.json/).to_return body: fixture('mingle/twitter/tweets.json')
61
+
62
+ tweets = Mingle::Twitter.fetch hashtag
63
+
64
+ tweet = tweets.first
65
+
66
+ expect(tweet.hashtags).to eq [ hashtag ]
67
+ end
68
+
69
+ end
@@ -0,0 +1,21 @@
1
+ ENV['RAILS_ENV'] ||= 'test'
2
+
3
+ require File.expand_path("../dummy/config/environment.rb", __FILE__)
4
+ require 'rspec/rails'
5
+ require 'rspec/autorun'
6
+ require 'factory_girl_rails'
7
+ require 'webmock/rspec'
8
+
9
+ Rails.backtrace_cleaner.remove_silencers!
10
+
11
+ # Load support files
12
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
13
+
14
+ RSpec.configure do |config|
15
+ config.mock_with :rspec
16
+ config.use_transactional_fixtures = true
17
+ config.infer_base_class_for_anonymous_controllers = false
18
+ config.order = "random"
19
+
20
+ config.include FactoryGirl::Syntax::Methods
21
+ end
@@ -0,0 +1,8 @@
1
+ # Read a fixture.
2
+ #
3
+ # file - A String describing a filename.
4
+ #
5
+ # Returns a String.
6
+ def fixture(file)
7
+ File.read "spec/fixtures/#{file}"
8
+ end
metadata ADDED
@@ -0,0 +1,340 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mingle
3
+ version: !ruby/object:Gem::Version
4
+ version: '0.1'
5
+ platform: ruby
6
+ authors:
7
+ - Johannes Gorset
8
+ - Tim Kurvers
9
+ - Sindre Moen
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2014-02-24 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: rails
17
+ requirement: !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: 4.1.beta
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - ~>
27
+ - !ruby/object:Gem::Version
28
+ version: 4.1.beta
29
+ - !ruby/object:Gem::Dependency
30
+ name: twitter
31
+ requirement: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - ~>
34
+ - !ruby/object:Gem::Version
35
+ version: '5.5'
36
+ type: :runtime
37
+ prerelease: false
38
+ version_requirements: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - ~>
41
+ - !ruby/object:Gem::Version
42
+ version: '5.5'
43
+ - !ruby/object:Gem::Dependency
44
+ name: fb_graph
45
+ requirement: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ~>
48
+ - !ruby/object:Gem::Version
49
+ version: '2.7'
50
+ type: :runtime
51
+ prerelease: false
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - ~>
55
+ - !ruby/object:Gem::Version
56
+ version: '2.7'
57
+ - !ruby/object:Gem::Dependency
58
+ name: instagram
59
+ requirement: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - ~>
62
+ - !ruby/object:Gem::Version
63
+ version: '0.10'
64
+ type: :runtime
65
+ prerelease: false
66
+ version_requirements: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - ~>
69
+ - !ruby/object:Gem::Version
70
+ version: '0.10'
71
+ - !ruby/object:Gem::Dependency
72
+ name: faraday
73
+ requirement: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: 0.8.9
78
+ type: :runtime
79
+ prerelease: false
80
+ version_requirements: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - ~>
83
+ - !ruby/object:Gem::Version
84
+ version: 0.8.9
85
+ - !ruby/object:Gem::Dependency
86
+ name: sqlite3
87
+ requirement: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - '>='
90
+ - !ruby/object:Gem::Version
91
+ version: '0'
92
+ type: :development
93
+ prerelease: false
94
+ version_requirements: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - '>='
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
99
+ - !ruby/object:Gem::Dependency
100
+ name: rspec-rails
101
+ requirement: !ruby/object:Gem::Requirement
102
+ requirements:
103
+ - - '>='
104
+ - !ruby/object:Gem::Version
105
+ version: '0'
106
+ type: :development
107
+ prerelease: false
108
+ version_requirements: !ruby/object:Gem::Requirement
109
+ requirements:
110
+ - - '>='
111
+ - !ruby/object:Gem::Version
112
+ version: '0'
113
+ - !ruby/object:Gem::Dependency
114
+ name: webmock
115
+ requirement: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - '>='
118
+ - !ruby/object:Gem::Version
119
+ version: '0'
120
+ type: :development
121
+ prerelease: false
122
+ version_requirements: !ruby/object:Gem::Requirement
123
+ requirements:
124
+ - - '>='
125
+ - !ruby/object:Gem::Version
126
+ version: '0'
127
+ - !ruby/object:Gem::Dependency
128
+ name: factory_girl_rails
129
+ requirement: !ruby/object:Gem::Requirement
130
+ requirements:
131
+ - - '>='
132
+ - !ruby/object:Gem::Version
133
+ version: '0'
134
+ type: :development
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ requirements:
138
+ - - '>='
139
+ - !ruby/object:Gem::Version
140
+ version: '0'
141
+ - !ruby/object:Gem::Dependency
142
+ name: sidekiq
143
+ requirement: !ruby/object:Gem::Requirement
144
+ requirements:
145
+ - - '>='
146
+ - !ruby/object:Gem::Version
147
+ version: '0'
148
+ type: :development
149
+ prerelease: false
150
+ version_requirements: !ruby/object:Gem::Requirement
151
+ requirements:
152
+ - - '>='
153
+ - !ruby/object:Gem::Version
154
+ version: '0'
155
+ description: Facebook, Twitter and Instagram integration for Ruby on Rails
156
+ email:
157
+ - johannes@hyper.no
158
+ - tim@hyper.no
159
+ - sindre@hyper.no
160
+ executables: []
161
+ extensions: []
162
+ extra_rdoc_files: []
163
+ files:
164
+ - MIT-LICENSE
165
+ - Rakefile
166
+ - app/assets/javascripts/mingle/application.js
167
+ - app/assets/stylesheets/mingle/application.css
168
+ - app/controllers/mingle/application_controller.rb
169
+ - app/helpers/mingle/application_helper.rb
170
+ - app/jobs/mingle/facebook/fetch.rb
171
+ - app/jobs/mingle/instagram/fetch.rb
172
+ - app/jobs/mingle/twitter/fetch.rb
173
+ - app/models/mingle.rb
174
+ - app/models/mingle/facebook.rb
175
+ - app/models/mingle/facebook/configuration.rb
176
+ - app/models/mingle/facebook/post.rb
177
+ - app/models/mingle/hashtag.rb
178
+ - app/models/mingle/hashtagging.rb
179
+ - app/models/mingle/instagram.rb
180
+ - app/models/mingle/instagram/photo.rb
181
+ - app/models/mingle/twitter.rb
182
+ - app/models/mingle/twitter/tweet.rb
183
+ - app/views/layouts/mingle/application.html.erb
184
+ - config/initializers/facebook.rb
185
+ - config/initializers/instagram.rb
186
+ - config/routes.rb
187
+ - db/migrate/20140222105907_create_mingle_hashtags.rb
188
+ - db/migrate/20140222105956_create_mingle_hashtaggings.rb
189
+ - db/migrate/20140222110925_create_mingle_twitter_tweets.rb
190
+ - db/migrate/20140222112623_create_mingle_facebook_posts.rb
191
+ - db/migrate/20140222112741_create_mingle_instagram_photos.rb
192
+ - db/migrate/20140222125715_create_mingle_feed_items.rb
193
+ - db/migrate/20140224155358_drop_mingle_feed_items.rb
194
+ - lib/mingle.rb
195
+ - lib/mingle/engine.rb
196
+ - lib/mingle/version.rb
197
+ - lib/tasks/mingle_tasks.rake
198
+ - spec/dummy/README.rdoc
199
+ - spec/dummy/Rakefile
200
+ - spec/dummy/app/assets/javascripts/application.js
201
+ - spec/dummy/app/assets/stylesheets/application.css
202
+ - spec/dummy/app/controllers/application_controller.rb
203
+ - spec/dummy/app/helpers/application_helper.rb
204
+ - spec/dummy/app/views/layouts/application.html.erb
205
+ - spec/dummy/bin/bundle
206
+ - spec/dummy/bin/rails
207
+ - spec/dummy/bin/rake
208
+ - spec/dummy/config.ru
209
+ - spec/dummy/config/application.rb
210
+ - spec/dummy/config/boot.rb
211
+ - spec/dummy/config/database.yml
212
+ - spec/dummy/config/environment.rb
213
+ - spec/dummy/config/environments/development.rb
214
+ - spec/dummy/config/environments/production.rb
215
+ - spec/dummy/config/environments/test.rb
216
+ - spec/dummy/config/initializers/backtrace_silencers.rb
217
+ - spec/dummy/config/initializers/cookies_serializer.rb
218
+ - spec/dummy/config/initializers/filter_parameter_logging.rb
219
+ - spec/dummy/config/initializers/inflections.rb
220
+ - spec/dummy/config/initializers/mime_types.rb
221
+ - spec/dummy/config/initializers/session_store.rb
222
+ - spec/dummy/config/initializers/wrap_parameters.rb
223
+ - spec/dummy/config/locales/en.yml
224
+ - spec/dummy/config/routes.rb
225
+ - spec/dummy/config/secrets.yml
226
+ - spec/dummy/db/development.sqlite3
227
+ - spec/dummy/db/schema.rb
228
+ - spec/dummy/db/test.sqlite3
229
+ - spec/dummy/log/development.log
230
+ - spec/dummy/log/test.log
231
+ - spec/dummy/public/404.html
232
+ - spec/dummy/public/422.html
233
+ - spec/dummy/public/500.html
234
+ - spec/dummy/public/favicon.ico
235
+ - spec/factories/mingle/facebook/posts.rb
236
+ - spec/factories/mingle/hashtaggings.rb
237
+ - spec/factories/mingle/hashtags.rb
238
+ - spec/factories/mingle/instagram/photos.rb
239
+ - spec/factories/mingle/twitter/tweets.rb
240
+ - spec/fixtures/mingle/facebook/page_posts.json
241
+ - spec/fixtures/mingle/facebook/search_posts.json
242
+ - spec/fixtures/mingle/instagram/photos.json
243
+ - spec/fixtures/mingle/twitter/tweets.json
244
+ - spec/jobs/mingle/facebook/fetch_spec.rb
245
+ - spec/jobs/mingle/instagram/fetch_spec.rb
246
+ - spec/jobs/mingle/twitter/fetch_spec.rb
247
+ - spec/models/mingle/facebook/post_spec.rb
248
+ - spec/models/mingle/facebook_spec.rb
249
+ - spec/models/mingle/hashtag_spec.rb
250
+ - spec/models/mingle/hashtagging_spec.rb
251
+ - spec/models/mingle/instagram/photo_spec.rb
252
+ - spec/models/mingle/instagram_spec.rb
253
+ - spec/models/mingle/twitter/tweet_spec.rb
254
+ - spec/models/mingle/twitter_spec.rb
255
+ - spec/spec_helper.rb
256
+ - spec/support/fixture.rb
257
+ homepage: https://github.com/hyperoslo/mingle
258
+ licenses:
259
+ - MIT
260
+ metadata: {}
261
+ post_install_message:
262
+ rdoc_options: []
263
+ require_paths:
264
+ - lib
265
+ required_ruby_version: !ruby/object:Gem::Requirement
266
+ requirements:
267
+ - - '>='
268
+ - !ruby/object:Gem::Version
269
+ version: '0'
270
+ required_rubygems_version: !ruby/object:Gem::Requirement
271
+ requirements:
272
+ - - '>='
273
+ - !ruby/object:Gem::Version
274
+ version: '0'
275
+ requirements: []
276
+ rubyforge_project:
277
+ rubygems_version: 2.2.2
278
+ signing_key:
279
+ specification_version: 4
280
+ summary: Social media integration for Ruby on Rails
281
+ test_files:
282
+ - spec/dummy/app/assets/javascripts/application.js
283
+ - spec/dummy/app/assets/stylesheets/application.css
284
+ - spec/dummy/app/controllers/application_controller.rb
285
+ - spec/dummy/app/helpers/application_helper.rb
286
+ - spec/dummy/app/views/layouts/application.html.erb
287
+ - spec/dummy/bin/bundle
288
+ - spec/dummy/bin/rails
289
+ - spec/dummy/bin/rake
290
+ - spec/dummy/config/application.rb
291
+ - spec/dummy/config/boot.rb
292
+ - spec/dummy/config/database.yml
293
+ - spec/dummy/config/environment.rb
294
+ - spec/dummy/config/environments/development.rb
295
+ - spec/dummy/config/environments/production.rb
296
+ - spec/dummy/config/environments/test.rb
297
+ - spec/dummy/config/initializers/backtrace_silencers.rb
298
+ - spec/dummy/config/initializers/cookies_serializer.rb
299
+ - spec/dummy/config/initializers/filter_parameter_logging.rb
300
+ - spec/dummy/config/initializers/inflections.rb
301
+ - spec/dummy/config/initializers/mime_types.rb
302
+ - spec/dummy/config/initializers/session_store.rb
303
+ - spec/dummy/config/initializers/wrap_parameters.rb
304
+ - spec/dummy/config/locales/en.yml
305
+ - spec/dummy/config/routes.rb
306
+ - spec/dummy/config/secrets.yml
307
+ - spec/dummy/config.ru
308
+ - spec/dummy/db/development.sqlite3
309
+ - spec/dummy/db/schema.rb
310
+ - spec/dummy/db/test.sqlite3
311
+ - spec/dummy/log/development.log
312
+ - spec/dummy/log/test.log
313
+ - spec/dummy/public/404.html
314
+ - spec/dummy/public/422.html
315
+ - spec/dummy/public/500.html
316
+ - spec/dummy/public/favicon.ico
317
+ - spec/dummy/Rakefile
318
+ - spec/dummy/README.rdoc
319
+ - spec/factories/mingle/facebook/posts.rb
320
+ - spec/factories/mingle/hashtaggings.rb
321
+ - spec/factories/mingle/hashtags.rb
322
+ - spec/factories/mingle/instagram/photos.rb
323
+ - spec/factories/mingle/twitter/tweets.rb
324
+ - spec/fixtures/mingle/facebook/page_posts.json
325
+ - spec/fixtures/mingle/facebook/search_posts.json
326
+ - spec/fixtures/mingle/instagram/photos.json
327
+ - spec/fixtures/mingle/twitter/tweets.json
328
+ - spec/jobs/mingle/facebook/fetch_spec.rb
329
+ - spec/jobs/mingle/instagram/fetch_spec.rb
330
+ - spec/jobs/mingle/twitter/fetch_spec.rb
331
+ - spec/models/mingle/facebook/post_spec.rb
332
+ - spec/models/mingle/facebook_spec.rb
333
+ - spec/models/mingle/hashtag_spec.rb
334
+ - spec/models/mingle/hashtagging_spec.rb
335
+ - spec/models/mingle/instagram/photo_spec.rb
336
+ - spec/models/mingle/instagram_spec.rb
337
+ - spec/models/mingle/twitter/tweet_spec.rb
338
+ - spec/models/mingle/twitter_spec.rb
339
+ - spec/spec_helper.rb
340
+ - spec/support/fixture.rb