mingle 0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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