lentil 0.4.2 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +6 -0
- data/app/assets/javascripts/lentil/addfancybox.js +1 -0
- data/app/models/lentil/image.rb +6 -2
- data/app/views/admin/lentil_images/_moderation_form_body.html.erb +3 -1
- data/db/migrate/20150311004606_add_suppressed_to_images.rb +5 -0
- data/db/migrate/20150422123522_add_indexes_to_images.rb +15 -0
- data/lib/lentil/admin/images.rb +5 -1
- data/lib/lentil/instagram_harvester.rb +1 -27
- data/lib/lentil/version.rb +1 -1
- data/lib/tasks/image_services.rake +19 -23
- data/test/dummy/db/schema.rb +13 -1
- data/test/unit/lentil/image_test.rb +9 -0
- data/test/vcr_cassettes/battle_images.yml +149 -178
- data/test/vcr_cassettes/instagram_oembed.yml +39 -21
- metadata +52 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 97465eeca8fbdaaa274f0202ff41703550717f74
|
4
|
+
data.tar.gz: 1bf43a3507e0ea9be6d0d97873019b3afe1905c2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e3527f957cf817df95f4a50d87177f83ff28a15690ba31b5960360563a6c908e867747b240b30f4fdcb7c2657f7431518e272669a1fd5d5dd5b7fef557caa25a
|
7
|
+
data.tar.gz: 1fcc672f9e3b5b5d323bb75d484a9cb52005ae07f45113baacafb1d55d97c02ebf905c2f12185ef9d5a57b10ce94108136269325b3ab0e2507a424a57120e916
|
data/README.md
CHANGED
@@ -47,6 +47,10 @@ bundle exec rails server
|
|
47
47
|
|
48
48
|
Visit <http://localhost:3000>
|
49
49
|
|
50
|
+
## Upgrading
|
51
|
+
|
52
|
+
You may need to run `bundle exec rake lentil:install:migrations` to incorporate any new database migration files.
|
53
|
+
|
50
54
|
## Harvest Images
|
51
55
|
|
52
56
|
- You will need to define your `instagram_client_id` and `instagram_client_secret` in `config/lentil_config.yml`. You can generate these strings by creating an [Instagram API](http://instagram.com/developer) client for your application.
|
@@ -223,8 +227,10 @@ Submit a GitHub issue or contact lentil@lists.ncsu.edu.
|
|
223
227
|
|
224
228
|
* Jason Casden
|
225
229
|
* Bret Davidson
|
230
|
+
* Aniket Lawande
|
226
231
|
* Cory Lown
|
227
232
|
* Jason Ronallo
|
233
|
+
* Heidi Tebbe
|
228
234
|
|
229
235
|
## Additional project team members
|
230
236
|
|
data/app/models/lentil/image.rb
CHANGED
@@ -35,8 +35,8 @@
|
|
35
35
|
class Lentil::Image < ActiveRecord::Base
|
36
36
|
attr_accessible :description, :title, :user_id, :state, :staff_like, :url, :long_url, :external_identifier,
|
37
37
|
:original_datetime, :popular_score, :taggings, :tag_id, :moderator, :moderated_at, :second_moderation,
|
38
|
-
:do_not_request_donation, :donor_agreement_rejected, :media_type, :video_url
|
39
|
-
|
38
|
+
:do_not_request_donation, :donor_agreement_rejected, :media_type, :video_url, :suppressed
|
39
|
+
|
40
40
|
attr_protected :original_metadata
|
41
41
|
|
42
42
|
has_many :won_battles, :class_name => "Battle"
|
@@ -84,6 +84,10 @@ class Lentil::Image < ActiveRecord::Base
|
|
84
84
|
end
|
85
85
|
|
86
86
|
def self.approved
|
87
|
+
where(state: self::States[:approved]).where(:suppressed => false)
|
88
|
+
end
|
89
|
+
|
90
|
+
def self.approved_all
|
87
91
|
where(state: self::States[:approved])
|
88
92
|
end
|
89
93
|
|
@@ -12,6 +12,7 @@
|
|
12
12
|
<% if action?("moderate_passed")%>
|
13
13
|
<th>Moderator</th>
|
14
14
|
<% end %>
|
15
|
+
<th>Suppressed</th>
|
15
16
|
<th>Status</th>
|
16
17
|
</tr>
|
17
18
|
</thead>
|
@@ -38,6 +39,7 @@
|
|
38
39
|
<% if action?("moderate_passed")%>
|
39
40
|
<td><%= image.moderator.email %></td>
|
40
41
|
<% end %>
|
42
|
+
<td><%= f.input :suppressed, :label => "Suppressed", :wrapper_html => { :class => "moderation_checkbox" } %></td>
|
41
43
|
<td><%= f.input :state, :label => false, :as => :radio, :collection => Lentil::Image::States, :wrapper_html => { :class => "moderation_radio" } %></td>
|
42
44
|
<% end -%>
|
43
45
|
</tr>
|
@@ -50,4 +52,4 @@
|
|
50
52
|
<% if params[:action] != "update_image" %>
|
51
53
|
<div class="pagination"><%= paginate @images %></div>
|
52
54
|
<% end %>
|
53
|
-
</div>
|
55
|
+
</div>
|
@@ -0,0 +1,15 @@
|
|
1
|
+
class AddIndexesToImages < ActiveRecord::Migration
|
2
|
+
def change
|
3
|
+
add_index :lentil_images, :user_id
|
4
|
+
add_index :lentil_images, :state
|
5
|
+
add_index :lentil_images, :created_at
|
6
|
+
add_index :lentil_images, :updated_at
|
7
|
+
add_index :lentil_images, :staff_like
|
8
|
+
add_index :lentil_images, :original_datetime
|
9
|
+
add_index :lentil_images, :file_last_checked
|
10
|
+
add_index :lentil_images, :failed_file_checks
|
11
|
+
add_index :lentil_images, :do_not_request_donation
|
12
|
+
add_index :lentil_images, :last_donor_agreement_failure_date
|
13
|
+
add_index :lentil_images, :suppressed
|
14
|
+
end
|
15
|
+
end
|
data/lib/lentil/admin/images.rb
CHANGED
@@ -6,6 +6,7 @@ if defined?(ActiveAdmin)
|
|
6
6
|
config.per_page = 10
|
7
7
|
|
8
8
|
filter :state, :as => :select, :collection => proc { Lentil::Image::States }
|
9
|
+
filter :suppressed
|
9
10
|
filter :media_type, :as => :select
|
10
11
|
filter :user_user_name, :as => :string, :label => "Username"
|
11
12
|
filter :user_full_name, :as => :string, :label => "Full Name"
|
@@ -60,6 +61,7 @@ if defined?(ActiveAdmin)
|
|
60
61
|
end
|
61
62
|
end
|
62
63
|
column "Score", :popular_score
|
64
|
+
column :suppressed
|
63
65
|
column :state do |image|
|
64
66
|
image.state_name
|
65
67
|
end
|
@@ -92,6 +94,7 @@ if defined?(ActiveAdmin)
|
|
92
94
|
row :do_not_request_donation
|
93
95
|
row :donor_agreement_submitted_date
|
94
96
|
row :file_harvested_date
|
97
|
+
row :suppressed
|
95
98
|
row :state do
|
96
99
|
image.state_name
|
97
100
|
end
|
@@ -134,7 +137,8 @@ if defined?(ActiveAdmin)
|
|
134
137
|
taggings = new_taggings + taggings_to_keep
|
135
138
|
|
136
139
|
image.update_attributes!(:state => image_params['state'], :taggings => taggings, :staff_like => image_params['staff_like'],
|
137
|
-
:moderator => current_admin_user, :moderated_at => DateTime.now, :second_moderation => second_moderation,
|
140
|
+
:moderator => current_admin_user, :moderated_at => DateTime.now, :second_moderation => second_moderation,
|
141
|
+
:do_not_request_donation => image_params['do_not_request_donation'], :suppressed => image_params['suppressed'])
|
138
142
|
end
|
139
143
|
end
|
140
144
|
end
|
@@ -54,30 +54,6 @@ module Lentil
|
|
54
54
|
Instagram.tag_recent_media(tag, :count=>100)
|
55
55
|
end
|
56
56
|
|
57
|
-
def fetch_recent_images_by_tag_with_args(tag = nil, args = {:count=>100})
|
58
|
-
configure_connection
|
59
|
-
tag ||= Lentil::Engine::APP_CONFIG["default_image_search_tag"]
|
60
|
-
Instagram.tag_recent_media(tag, args)
|
61
|
-
end
|
62
|
-
|
63
|
-
def recursive_fetch(tag=nil, max_tag_id=nil, total=0)
|
64
|
-
case max_tag_id
|
65
|
-
when nil
|
66
|
-
instagram_metadata = fetch_recent_images_by_tag_with_args(tag)
|
67
|
-
else
|
68
|
-
instagram_metadata = fetch_recent_images_by_tag_with_args(tag, {:max_tag_id=>max_tag_id})
|
69
|
-
end
|
70
|
-
total += save_instagram_load(instagram_metadata).size
|
71
|
-
next_max_id = instagram_metadata.pagination.next_max_id
|
72
|
-
case next_max_id
|
73
|
-
when nil
|
74
|
-
puts "nil next_max_id. Previous next_max_id: " + max_tag_id.to_s
|
75
|
-
else
|
76
|
-
subtotal = recursive_fetch(tag, next_max_id, total)
|
77
|
-
total += subtotal.nil? ? 0 : subtotal
|
78
|
-
end
|
79
|
-
total
|
80
|
-
end
|
81
57
|
|
82
58
|
# Queries the Instagram API for the image metadata associated with a given ID.
|
83
59
|
#
|
@@ -159,9 +135,7 @@ module Lentil
|
|
159
135
|
:media_type => image_data[:media_type]
|
160
136
|
})
|
161
137
|
|
162
|
-
|
163
|
-
# It's fixed in master and should be in the next release (>1.2.0).
|
164
|
-
image_record.original_metadata = JSON.parse(image_data[:original_metadata].to_json)
|
138
|
+
image_record.original_metadata = image_data[:original_metadata].to_hash
|
165
139
|
|
166
140
|
# Default to "All Rights Reserved" until we find out more about licenses
|
167
141
|
# FIXME: Set the default license in the app config
|
data/lib/lentil/version.rb
CHANGED
@@ -60,7 +60,7 @@ namespace :lentil do
|
|
60
60
|
raise "Image file already exists, will not overwrite: #{image_file_path}" if File.exist?(image_file_path)
|
61
61
|
|
62
62
|
image_data = harvester.harvest_image_data(image)
|
63
|
-
|
63
|
+
|
64
64
|
File.open(image_file_path, "wb") do |f|
|
65
65
|
f.write image_data
|
66
66
|
end
|
@@ -72,7 +72,7 @@ namespace :lentil do
|
|
72
72
|
f.write video_data
|
73
73
|
end
|
74
74
|
end
|
75
|
-
|
75
|
+
|
76
76
|
image.file_harvested_date = DateTime.now
|
77
77
|
image.save
|
78
78
|
puts "Harvested image #{image.id}, #{image_file_path}"
|
@@ -144,7 +144,7 @@ namespace :lentil do
|
|
144
144
|
end
|
145
145
|
end
|
146
146
|
end
|
147
|
-
|
147
|
+
|
148
148
|
desc "Get video urls from videos previously harvested"
|
149
149
|
task :restore_videos, [:image_service] => :environment do |t, args|
|
150
150
|
args.with_defaults(:image_service => 'Instagram')
|
@@ -153,10 +153,10 @@ namespace :lentil do
|
|
153
153
|
|
154
154
|
lentilService = Lentil::Service.unscoped.where(:name => args[:image_service]).first
|
155
155
|
numUpdated = 0;
|
156
|
-
lentilService.images.unscoped.
|
156
|
+
lentilService.images.unscoped.find_each do |image|
|
157
157
|
#Skip if media type already known i.e. was properly harvested
|
158
158
|
next if !image.media_type.blank?
|
159
|
-
|
159
|
+
|
160
160
|
meta = image.original_metadata
|
161
161
|
obj = YAML.load(meta)
|
162
162
|
type = obj["type"]
|
@@ -175,7 +175,7 @@ namespace :lentil do
|
|
175
175
|
end
|
176
176
|
puts numUpdated.to_s + " record(s) updated"
|
177
177
|
end
|
178
|
-
|
178
|
+
|
179
179
|
desc "Dump image metadata for archiving"
|
180
180
|
task :dump_metadata, [:image_service, :base_directory] => :environment do |t, args|
|
181
181
|
args.with_defaults(:image_service => 'Instagram')
|
@@ -184,7 +184,7 @@ namespace :lentil do
|
|
184
184
|
|
185
185
|
lentilService = Lentil::Service.unscoped.where(:name => args[:image_service]).first
|
186
186
|
numArchived = 0;
|
187
|
-
lentilService.images.unscoped.
|
187
|
+
lentilService.images.unscoped.find_each do |image|
|
188
188
|
begin
|
189
189
|
raise "Destination directory does not exist or is not a directory: #{base_dir}" unless File.directory?(base_dir)
|
190
190
|
|
@@ -199,24 +199,20 @@ namespace :lentil do
|
|
199
199
|
Rails.logger.error e.message
|
200
200
|
raise e
|
201
201
|
end
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
@jsonobj["service"] = JSON.parse(image.service.to_json).except("id")
|
215
|
-
@jsonobj["user"] = JSON.parse(image.user.to_json).except("id", "service_id")
|
216
|
-
|
202
|
+
|
203
|
+
jsonobj = image.serializable_hash
|
204
|
+
jsonobj["tags"] = image.tags.all
|
205
|
+
jsonobj["licenses"] = image.licenses.all
|
206
|
+
|
207
|
+
jsonobj["like_votes"] = image.like_votes.all
|
208
|
+
jsonobj["flags"] = image.flags.all
|
209
|
+
|
210
|
+
jsonobj["service"] = image.service
|
211
|
+
jsonobj["user"] = image.user
|
212
|
+
|
217
213
|
image_file_path += "/#{image.external_identifier}.json"
|
218
214
|
File.open(image_file_path, "w") do |f|
|
219
|
-
f.write
|
215
|
+
f.write jsonobj.to_json
|
220
216
|
numArchived += 1
|
221
217
|
end
|
222
218
|
end
|
data/test/dummy/db/schema.rb
CHANGED
@@ -11,7 +11,7 @@
|
|
11
11
|
#
|
12
12
|
# It's strongly recommended to check this file into your version control system.
|
13
13
|
|
14
|
-
ActiveRecord::Schema.define(:version =>
|
14
|
+
ActiveRecord::Schema.define(:version => 20150422123522) do
|
15
15
|
|
16
16
|
create_table "active_admin_comments", :force => true do |t|
|
17
17
|
t.string "resource_id", :null => false
|
@@ -92,10 +92,22 @@ ActiveRecord::Schema.define(:version => 20141106172834) do
|
|
92
92
|
t.datetime "last_donor_agreement_failure_date"
|
93
93
|
t.string "media_type"
|
94
94
|
t.string "video_url"
|
95
|
+
t.boolean "suppressed", :default => false
|
95
96
|
end
|
96
97
|
|
98
|
+
add_index "lentil_images", ["created_at"], :name => "index_lentil_images_on_created_at"
|
99
|
+
add_index "lentil_images", ["do_not_request_donation"], :name => "index_lentil_images_on_do_not_request_donation"
|
97
100
|
add_index "lentil_images", ["external_identifier"], :name => "index_images_on_external_identifier"
|
101
|
+
add_index "lentil_images", ["failed_file_checks"], :name => "index_lentil_images_on_failed_file_checks"
|
102
|
+
add_index "lentil_images", ["file_last_checked"], :name => "index_lentil_images_on_file_last_checked"
|
103
|
+
add_index "lentil_images", ["last_donor_agreement_failure_date"], :name => "index_lentil_images_on_last_donor_agreement_failure_date"
|
98
104
|
add_index "lentil_images", ["moderator_id"], :name => "index_images_on_moderator_id"
|
105
|
+
add_index "lentil_images", ["original_datetime"], :name => "index_lentil_images_on_original_datetime"
|
106
|
+
add_index "lentil_images", ["staff_like"], :name => "index_lentil_images_on_staff_like"
|
107
|
+
add_index "lentil_images", ["state"], :name => "index_lentil_images_on_state"
|
108
|
+
add_index "lentil_images", ["suppressed"], :name => "index_lentil_images_on_suppressed"
|
109
|
+
add_index "lentil_images", ["updated_at"], :name => "index_lentil_images_on_updated_at"
|
110
|
+
add_index "lentil_images", ["user_id"], :name => "index_lentil_images_on_user_id"
|
99
111
|
|
100
112
|
create_table "lentil_licenses", :force => true do |t|
|
101
113
|
t.string "name"
|
@@ -91,4 +91,13 @@ class ImageTest < ActiveSupport::TestCase
|
|
91
91
|
assert_equal image.valid?, true
|
92
92
|
end
|
93
93
|
end
|
94
|
+
|
95
|
+
test 'Suppressed images should not be returned with approved images' do
|
96
|
+
assert_difference 'Lentil::Image.approved.count', -1,
|
97
|
+
'A suppressed image should not be treated as approved' do
|
98
|
+
img = Lentil::Image.approved.first
|
99
|
+
img.suppressed = true
|
100
|
+
img.save
|
101
|
+
end
|
102
|
+
end
|
94
103
|
end
|
@@ -2,7 +2,7 @@
|
|
2
2
|
http_interactions:
|
3
3
|
- request:
|
4
4
|
method: get
|
5
|
-
uri:
|
5
|
+
uri: https://api.instagram.com/oembed?format=json&url=http://instagram.com/p/R82ycNoNfn/
|
6
6
|
body:
|
7
7
|
encoding: US-ASCII
|
8
8
|
string: ''
|
@@ -10,98 +10,66 @@ http_interactions:
|
|
10
10
|
Accept-Encoding:
|
11
11
|
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
12
12
|
Accept:
|
13
|
-
-
|
13
|
+
- "*/*"
|
14
14
|
User-Agent:
|
15
|
-
-
|
15
|
+
- Mozilla/5.0 (compatible; ruby-oembed/0.8.13)
|
16
16
|
response:
|
17
17
|
status:
|
18
18
|
code: 200
|
19
19
|
message: OK
|
20
20
|
headers:
|
21
|
-
Cache-Control:
|
22
|
-
- private, no-cache, no-store, must-revalidate
|
23
|
-
Content-Language:
|
24
|
-
- en
|
25
|
-
Content-Type:
|
26
|
-
- application/json
|
27
|
-
Date:
|
28
|
-
- Thu, 27 Feb 2014 19:42:54 GMT
|
29
|
-
Expires:
|
30
|
-
- Sat, 01 Jan 2000 00:00:00 GMT
|
31
|
-
Pragma:
|
32
|
-
- no-cache
|
33
21
|
Server:
|
34
22
|
- nginx
|
35
|
-
|
36
|
-
-
|
37
|
-
-
|
38
|
-
|
39
|
-
- mid=Uw-VPgAEAAFy8J-uIsSZp_EdCnnn; expires=Wed, 22-Feb-2034 19:42:54 GMT; Max-Age=630720000;
|
40
|
-
Path=/
|
41
|
-
Vary:
|
42
|
-
- Cookie, Accept-Language, Accept-Encoding
|
43
|
-
Content-Length:
|
44
|
-
- '249'
|
45
|
-
Connection:
|
46
|
-
- keep-alive
|
47
|
-
body:
|
48
|
-
encoding: UTF-8
|
49
|
-
string: '{"provider_url":"http:\/\/instagram.com\/","media_id":"323374234042685415_31727100","title":"Bubble
|
50
|
-
bubble...","url":"http:\/\/distilleryimage3.ak.instagram.com\/644f52a02d2f11e2b55e22000a9f09fb_7.jpg","author_name":"cazzerson","height":612,"width":612,"version":"1.0","author_url":"http:\/\/instagram.com\/cazzerson","author_id":31727100,"type":"photo","provider_name":"Instagram"}'
|
51
|
-
http_version:
|
52
|
-
recorded_at: Thu, 27 Feb 2014 19:42:54 GMT
|
53
|
-
- request:
|
54
|
-
method: get
|
55
|
-
uri: http://api.instagram.com/oembed?format=json&url=http://instagram.com/p/ZA1L0nINXi/
|
56
|
-
body:
|
57
|
-
encoding: US-ASCII
|
58
|
-
string: ''
|
59
|
-
headers:
|
60
|
-
Accept-Encoding:
|
61
|
-
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
62
|
-
Accept:
|
63
|
-
- '*/*'
|
64
|
-
User-Agent:
|
65
|
-
- Ruby
|
66
|
-
response:
|
67
|
-
status:
|
68
|
-
code: 404
|
69
|
-
message: NOT FOUND
|
70
|
-
headers:
|
71
|
-
Cache-Control:
|
72
|
-
- private, no-cache, no-store, must-revalidate
|
23
|
+
Date:
|
24
|
+
- Fri, 24 Apr 2015 14:06:25 GMT
|
25
|
+
Content-Type:
|
26
|
+
- application/json
|
73
27
|
Content-Language:
|
74
28
|
- en
|
75
|
-
Content-Type:
|
76
|
-
- text/html; charset=utf-8
|
77
|
-
Date:
|
78
|
-
- Thu, 27 Feb 2014 19:42:54 GMT
|
79
29
|
Expires:
|
80
30
|
- Sat, 01 Jan 2000 00:00:00 GMT
|
31
|
+
Vary:
|
32
|
+
- Cookie, Accept-Language, Accept-Encoding
|
81
33
|
Pragma:
|
82
34
|
- no-cache
|
83
|
-
|
84
|
-
-
|
35
|
+
Cache-Control:
|
36
|
+
- private, no-cache, no-store, must-revalidate
|
85
37
|
Set-Cookie:
|
86
|
-
-
|
87
|
-
- csrftoken=c9d44bf3281ffa60168cf219fece1006; expires=Thu, 26-Feb-2015 19:42:54
|
38
|
+
- csrftoken=90bcd97d51e11c0c4cfee1df6eaea696; expires=Fri, 22-Apr-2016 14:06:25
|
88
39
|
GMT; Max-Age=31449600; Path=/
|
89
|
-
- mid=
|
40
|
+
- mid=VTpN4QAEAAHAmPRsIL3gjnyQqmLw; expires=Thu, 19-Apr-2035 14:06:25 GMT; Max-Age=630720000;
|
90
41
|
Path=/
|
91
|
-
Vary:
|
92
|
-
- Cookie, Accept-Language
|
93
|
-
Content-Length:
|
94
|
-
- '34'
|
95
42
|
Connection:
|
96
43
|
- keep-alive
|
44
|
+
Content-Length:
|
45
|
+
- '1393'
|
97
46
|
body:
|
98
47
|
encoding: UTF-8
|
99
|
-
string:
|
48
|
+
string: '{"provider_url":"https:\/\/instagram.com\/","media_id":"323374234042685415_31727100","author_name":"cazzerson","height":null,"thumbnail_url":"https:\/\/igcdn-photos-c-a.akamaihd.net\/hphotos-ak-xaf1\/outbound-distilleryimage3\/t0.0-17\/OBPTH\/644f52a02d2f11e2b55e22000a9f09fb_7.jpg","thumbnail_width":612,"thumbnail_height":612,"provider_name":"Instagram","title":"Bubble
|
49
|
+
bubble...","html":"\u003cblockquote class=\"instagram-media\" data-instgrm-captioned
|
50
|
+
data-instgrm-version=\"4\" style=\" background:#FFF; border:0; border-radius:3px;
|
51
|
+
box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin:
|
52
|
+
1px; max-width:658px; padding:0; width:99.375%; width:-webkit-calc(100% -
|
53
|
+
2px); width:calc(100% - 2px);\"\u003e\u003cdiv style=\"padding:8px;\"\u003e
|
54
|
+
\u003cdiv style=\" background:#F8F8F8; line-height:0; margin-top:40px; padding:50%
|
55
|
+
0; text-align:center; width:100%;\"\u003e \u003cdiv style=\" background:url(data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAMAAAApWqozAAAAGFBMVEUiIiI9PT0eHh4gIB4hIBkcHBwcHBwcHBydr+JQAAAACHRSTlMABA4YHyQsM5jtaMwAAADfSURBVDjL7ZVBEgMhCAQBAf\/\/42xcNbpAqakcM0ftUmFAAIBE81IqBJdS3lS6zs3bIpB9WED3YYXFPmHRfT8sgyrCP1x8uEUxLMzNWElFOYCV6mHWWwMzdPEKHlhLw7NWJqkHc4uIZphavDzA2JPzUDsBZziNae2S6owH8xPmX8G7zzgKEOPUoYHvGz1TBCxMkd3kwNVbU0gKHkx+iZILf77IofhrY1nYFnB\/lQPb79drWOyJVa\/DAvg9B\/rLB4cC+Nqgdz\/TvBbBnr6GBReqn\/nRmDgaQEej7WhonozjF+Y2I\/fZou\/qAAAAAElFTkSuQmCC);
|
56
|
+
display:block; height:44px; margin:0 auto -44px; position:relative; top:-22px;
|
57
|
+
width:44px;\"\u003e\u003c\/div\u003e\u003c\/div\u003e \u003cp style=\" margin:8px
|
58
|
+
0 0 0; padding:0 4px;\"\u003e \u003ca href=\"https:\/\/instagram.com\/p\/R82ycNoNfn\/\"
|
59
|
+
style=\" color:#000; font-family:Arial,sans-serif; font-size:14px; font-style:normal;
|
60
|
+
font-weight:normal; line-height:17px; text-decoration:none; word-wrap:break-word;\"
|
61
|
+
target=\"_top\"\u003eBubble bubble...\u003c\/a\u003e\u003c\/p\u003e \u003cp
|
62
|
+
style=\" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px;
|
63
|
+
margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center;
|
64
|
+
text-overflow:ellipsis; white-space:nowrap;\"\u003eA photo posted by @cazzerson
|
65
|
+
on \u003ctime style=\" font-family:Arial,sans-serif; font-size:14px; line-height:17px;\"
|
66
|
+
datetime=\"2012-11-13T01:13:54+00:00\"\u003eNov 12, 2012 at 5:13pm PST\u003c\/time\u003e\u003c\/p\u003e\u003c\/div\u003e\u003c\/blockquote\u003e\n\u003cscript
|
67
|
+
async defer src=\"\/\/platform.instagram.com\/en_US\/embeds.js\"\u003e\u003c\/script\u003e","width":658,"version":"1.0","author_url":"https:\/\/instagram.com\/cazzerson","author_id":31727100,"type":"rich"}'
|
100
68
|
http_version:
|
101
|
-
recorded_at:
|
69
|
+
recorded_at: Fri, 24 Apr 2015 14:06:25 GMT
|
102
70
|
- request:
|
103
71
|
method: get
|
104
|
-
uri:
|
72
|
+
uri: https://api.instagram.com/oembed?format=json&url=http://instagram.com/p/R0NyCsK_xf/
|
105
73
|
body:
|
106
74
|
encoding: US-ASCII
|
107
75
|
string: ''
|
@@ -109,49 +77,66 @@ http_interactions:
|
|
109
77
|
Accept-Encoding:
|
110
78
|
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
111
79
|
Accept:
|
112
|
-
-
|
80
|
+
- "*/*"
|
113
81
|
User-Agent:
|
114
|
-
-
|
82
|
+
- Mozilla/5.0 (compatible; ruby-oembed/0.8.13)
|
115
83
|
response:
|
116
84
|
status:
|
117
85
|
code: 200
|
118
86
|
message: OK
|
119
87
|
headers:
|
120
|
-
|
121
|
-
-
|
122
|
-
|
123
|
-
-
|
88
|
+
Server:
|
89
|
+
- nginx
|
90
|
+
Date:
|
91
|
+
- Fri, 24 Apr 2015 14:06:25 GMT
|
124
92
|
Content-Type:
|
125
93
|
- application/json
|
126
|
-
|
127
|
-
-
|
94
|
+
Content-Language:
|
95
|
+
- en
|
128
96
|
Expires:
|
129
97
|
- Sat, 01 Jan 2000 00:00:00 GMT
|
98
|
+
Vary:
|
99
|
+
- Cookie, Accept-Language, Accept-Encoding
|
130
100
|
Pragma:
|
131
101
|
- no-cache
|
132
|
-
|
133
|
-
-
|
102
|
+
Cache-Control:
|
103
|
+
- private, no-cache, no-store, must-revalidate
|
134
104
|
Set-Cookie:
|
135
|
-
-
|
136
|
-
- csrftoken=0433d840e863edb10666afa87b2a068b; expires=Thu, 26-Feb-2015 19:42:54
|
105
|
+
- csrftoken=77fceb42170f31889c0d18c1b719de25; expires=Fri, 22-Apr-2016 14:06:25
|
137
106
|
GMT; Max-Age=31449600; Path=/
|
138
|
-
- mid=
|
107
|
+
- mid=VTpN4QAEAAHu4KvWNVG6zftRYgfJ; expires=Thu, 19-Apr-2035 14:06:25 GMT; Max-Age=630720000;
|
139
108
|
Path=/
|
140
|
-
Vary:
|
141
|
-
- Cookie, Accept-Language, Accept-Encoding
|
142
|
-
Content-Length:
|
143
|
-
- '245'
|
144
109
|
Connection:
|
145
110
|
- keep-alive
|
111
|
+
Content-Length:
|
112
|
+
- '1351'
|
146
113
|
body:
|
147
114
|
encoding: UTF-8
|
148
|
-
string: '{"provider_url":"
|
149
|
-
|
115
|
+
string: '{"provider_url":"https:\/\/instagram.com\/","media_id":"320942086917192799_244467814","author_name":"corylown","height":null,"thumbnail_url":"https:\/\/distilleryimage7-a.akamaihd.net\/55dcf0ba2a8c11e29cc822000a1f96e3_7.jpg","thumbnail_width":612,"thumbnail_height":612,"provider_name":"Instagram","title":"Tethered","html":"\u003cblockquote
|
116
|
+
class=\"instagram-media\" data-instgrm-captioned data-instgrm-version=\"4\"
|
117
|
+
style=\" background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px
|
118
|
+
0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:658px;
|
119
|
+
padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100%
|
120
|
+
- 2px);\"\u003e\u003cdiv style=\"padding:8px;\"\u003e \u003cdiv style=\" background:#F8F8F8;
|
121
|
+
line-height:0; margin-top:40px; padding:50% 0; text-align:center; width:100%;\"\u003e
|
122
|
+
\u003cdiv style=\" background:url(data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAMAAAApWqozAAAAGFBMVEUiIiI9PT0eHh4gIB4hIBkcHBwcHBwcHBydr+JQAAAACHRSTlMABA4YHyQsM5jtaMwAAADfSURBVDjL7ZVBEgMhCAQBAf\/\/42xcNbpAqakcM0ftUmFAAIBE81IqBJdS3lS6zs3bIpB9WED3YYXFPmHRfT8sgyrCP1x8uEUxLMzNWElFOYCV6mHWWwMzdPEKHlhLw7NWJqkHc4uIZphavDzA2JPzUDsBZziNae2S6owH8xPmX8G7zzgKEOPUoYHvGz1TBCxMkd3kwNVbU0gKHkx+iZILf77IofhrY1nYFnB\/lQPb79drWOyJVa\/DAvg9B\/rLB4cC+Nqgdz\/TvBbBnr6GBReqn\/nRmDgaQEej7WhonozjF+Y2I\/fZou\/qAAAAAElFTkSuQmCC);
|
123
|
+
display:block; height:44px; margin:0 auto -44px; position:relative; top:-22px;
|
124
|
+
width:44px;\"\u003e\u003c\/div\u003e\u003c\/div\u003e \u003cp style=\" margin:8px
|
125
|
+
0 0 0; padding:0 4px;\"\u003e \u003ca href=\"https:\/\/instagram.com\/p\/R0NyCsK_xf\/\"
|
126
|
+
style=\" color:#000; font-family:Arial,sans-serif; font-size:14px; font-style:normal;
|
127
|
+
font-weight:normal; line-height:17px; text-decoration:none; word-wrap:break-word;\"
|
128
|
+
target=\"_top\"\u003eTethered\u003c\/a\u003e\u003c\/p\u003e \u003cp style=\"
|
129
|
+
color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px;
|
130
|
+
margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center;
|
131
|
+
text-overflow:ellipsis; white-space:nowrap;\"\u003eA photo posted by @corylown
|
132
|
+
on \u003ctime style=\" font-family:Arial,sans-serif; font-size:14px; line-height:17px;\"
|
133
|
+
datetime=\"2012-11-09T16:41:39+00:00\"\u003eNov 9, 2012 at 8:41am PST\u003c\/time\u003e\u003c\/p\u003e\u003c\/div\u003e\u003c\/blockquote\u003e\n\u003cscript
|
134
|
+
async defer src=\"\/\/platform.instagram.com\/en_US\/embeds.js\"\u003e\u003c\/script\u003e","width":658,"version":"1.0","author_url":"https:\/\/instagram.com\/corylown","author_id":244467814,"type":"rich"}'
|
150
135
|
http_version:
|
151
|
-
recorded_at:
|
136
|
+
recorded_at: Fri, 24 Apr 2015 14:06:25 GMT
|
152
137
|
- request:
|
153
138
|
method: get
|
154
|
-
uri:
|
139
|
+
uri: https://api.instagram.com/oembed?format=json&url=http://instagram.com/p/R82ycNoNfn/
|
155
140
|
body:
|
156
141
|
encoding: US-ASCII
|
157
142
|
string: ''
|
@@ -159,98 +144,66 @@ http_interactions:
|
|
159
144
|
Accept-Encoding:
|
160
145
|
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
161
146
|
Accept:
|
162
|
-
-
|
147
|
+
- "*/*"
|
163
148
|
User-Agent:
|
164
|
-
-
|
149
|
+
- Mozilla/5.0 (compatible; ruby-oembed/0.8.13)
|
165
150
|
response:
|
166
151
|
status:
|
167
152
|
code: 200
|
168
153
|
message: OK
|
169
154
|
headers:
|
170
|
-
Cache-Control:
|
171
|
-
- private, no-cache, no-store, must-revalidate
|
172
|
-
Content-Language:
|
173
|
-
- en
|
174
|
-
Content-Type:
|
175
|
-
- application/json
|
176
|
-
Date:
|
177
|
-
- Thu, 27 Feb 2014 19:42:54 GMT
|
178
|
-
Expires:
|
179
|
-
- Sat, 01 Jan 2000 00:00:00 GMT
|
180
|
-
Pragma:
|
181
|
-
- no-cache
|
182
155
|
Server:
|
183
156
|
- nginx
|
184
|
-
|
185
|
-
-
|
186
|
-
-
|
187
|
-
|
188
|
-
- mid=Uw-VPgAEAAEij81IRus_AlKNWNP7; expires=Wed, 22-Feb-2034 19:42:54 GMT; Max-Age=630720000;
|
189
|
-
Path=/
|
190
|
-
Vary:
|
191
|
-
- Cookie, Accept-Language, Accept-Encoding
|
192
|
-
Content-Length:
|
193
|
-
- '249'
|
194
|
-
Connection:
|
195
|
-
- keep-alive
|
196
|
-
body:
|
197
|
-
encoding: UTF-8
|
198
|
-
string: '{"provider_url":"http:\/\/instagram.com\/","media_id":"323374234042685415_31727100","title":"Bubble
|
199
|
-
bubble...","url":"http:\/\/distilleryimage3.ak.instagram.com\/644f52a02d2f11e2b55e22000a9f09fb_7.jpg","author_name":"cazzerson","height":612,"width":612,"version":"1.0","author_url":"http:\/\/instagram.com\/cazzerson","author_id":31727100,"type":"photo","provider_name":"Instagram"}'
|
200
|
-
http_version:
|
201
|
-
recorded_at: Thu, 27 Feb 2014 19:42:54 GMT
|
202
|
-
- request:
|
203
|
-
method: get
|
204
|
-
uri: http://api.instagram.com/oembed?format=json&url=http://instagram.com/p/ZA1L0nINXi/
|
205
|
-
body:
|
206
|
-
encoding: US-ASCII
|
207
|
-
string: ''
|
208
|
-
headers:
|
209
|
-
Accept-Encoding:
|
210
|
-
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
211
|
-
Accept:
|
212
|
-
- '*/*'
|
213
|
-
User-Agent:
|
214
|
-
- Ruby
|
215
|
-
response:
|
216
|
-
status:
|
217
|
-
code: 404
|
218
|
-
message: NOT FOUND
|
219
|
-
headers:
|
220
|
-
Cache-Control:
|
221
|
-
- private, no-cache, no-store, must-revalidate
|
157
|
+
Date:
|
158
|
+
- Fri, 24 Apr 2015 14:06:25 GMT
|
159
|
+
Content-Type:
|
160
|
+
- application/json
|
222
161
|
Content-Language:
|
223
162
|
- en
|
224
|
-
Content-Type:
|
225
|
-
- text/html; charset=utf-8
|
226
|
-
Date:
|
227
|
-
- Thu, 27 Feb 2014 19:42:54 GMT
|
228
163
|
Expires:
|
229
164
|
- Sat, 01 Jan 2000 00:00:00 GMT
|
165
|
+
Vary:
|
166
|
+
- Cookie, Accept-Language, Accept-Encoding
|
230
167
|
Pragma:
|
231
168
|
- no-cache
|
232
|
-
|
233
|
-
-
|
169
|
+
Cache-Control:
|
170
|
+
- private, no-cache, no-store, must-revalidate
|
234
171
|
Set-Cookie:
|
235
|
-
-
|
236
|
-
- csrftoken=d6266caf663f9909c87673d4d8f895a8; expires=Thu, 26-Feb-2015 19:42:54
|
172
|
+
- csrftoken=a357ae75d73113c0ea09f6a5920acacc; expires=Fri, 22-Apr-2016 14:06:25
|
237
173
|
GMT; Max-Age=31449600; Path=/
|
238
|
-
- mid=
|
174
|
+
- mid=VTpN4QAEAAGkXM9mXRPGp1GE9UtC; expires=Thu, 19-Apr-2035 14:06:25 GMT; Max-Age=630720000;
|
239
175
|
Path=/
|
240
|
-
Vary:
|
241
|
-
- Cookie, Accept-Language
|
242
|
-
Content-Length:
|
243
|
-
- '34'
|
244
176
|
Connection:
|
245
177
|
- keep-alive
|
178
|
+
Content-Length:
|
179
|
+
- '1393'
|
246
180
|
body:
|
247
181
|
encoding: UTF-8
|
248
|
-
string:
|
182
|
+
string: '{"provider_url":"https:\/\/instagram.com\/","media_id":"323374234042685415_31727100","author_name":"cazzerson","height":null,"thumbnail_url":"https:\/\/igcdn-photos-c-a.akamaihd.net\/hphotos-ak-xaf1\/outbound-distilleryimage3\/t0.0-17\/OBPTH\/644f52a02d2f11e2b55e22000a9f09fb_7.jpg","thumbnail_width":612,"thumbnail_height":612,"provider_name":"Instagram","title":"Bubble
|
183
|
+
bubble...","html":"\u003cblockquote class=\"instagram-media\" data-instgrm-captioned
|
184
|
+
data-instgrm-version=\"4\" style=\" background:#FFF; border:0; border-radius:3px;
|
185
|
+
box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin:
|
186
|
+
1px; max-width:658px; padding:0; width:99.375%; width:-webkit-calc(100% -
|
187
|
+
2px); width:calc(100% - 2px);\"\u003e\u003cdiv style=\"padding:8px;\"\u003e
|
188
|
+
\u003cdiv style=\" background:#F8F8F8; line-height:0; margin-top:40px; padding:50%
|
189
|
+
0; text-align:center; width:100%;\"\u003e \u003cdiv style=\" background:url(data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAMAAAApWqozAAAAGFBMVEUiIiI9PT0eHh4gIB4hIBkcHBwcHBwcHBydr+JQAAAACHRSTlMABA4YHyQsM5jtaMwAAADfSURBVDjL7ZVBEgMhCAQBAf\/\/42xcNbpAqakcM0ftUmFAAIBE81IqBJdS3lS6zs3bIpB9WED3YYXFPmHRfT8sgyrCP1x8uEUxLMzNWElFOYCV6mHWWwMzdPEKHlhLw7NWJqkHc4uIZphavDzA2JPzUDsBZziNae2S6owH8xPmX8G7zzgKEOPUoYHvGz1TBCxMkd3kwNVbU0gKHkx+iZILf77IofhrY1nYFnB\/lQPb79drWOyJVa\/DAvg9B\/rLB4cC+Nqgdz\/TvBbBnr6GBReqn\/nRmDgaQEej7WhonozjF+Y2I\/fZou\/qAAAAAElFTkSuQmCC);
|
190
|
+
display:block; height:44px; margin:0 auto -44px; position:relative; top:-22px;
|
191
|
+
width:44px;\"\u003e\u003c\/div\u003e\u003c\/div\u003e \u003cp style=\" margin:8px
|
192
|
+
0 0 0; padding:0 4px;\"\u003e \u003ca href=\"https:\/\/instagram.com\/p\/R82ycNoNfn\/\"
|
193
|
+
style=\" color:#000; font-family:Arial,sans-serif; font-size:14px; font-style:normal;
|
194
|
+
font-weight:normal; line-height:17px; text-decoration:none; word-wrap:break-word;\"
|
195
|
+
target=\"_top\"\u003eBubble bubble...\u003c\/a\u003e\u003c\/p\u003e \u003cp
|
196
|
+
style=\" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px;
|
197
|
+
margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center;
|
198
|
+
text-overflow:ellipsis; white-space:nowrap;\"\u003eA photo posted by @cazzerson
|
199
|
+
on \u003ctime style=\" font-family:Arial,sans-serif; font-size:14px; line-height:17px;\"
|
200
|
+
datetime=\"2012-11-13T01:13:54+00:00\"\u003eNov 12, 2012 at 5:13pm PST\u003c\/time\u003e\u003c\/p\u003e\u003c\/div\u003e\u003c\/blockquote\u003e\n\u003cscript
|
201
|
+
async defer src=\"\/\/platform.instagram.com\/en_US\/embeds.js\"\u003e\u003c\/script\u003e","width":658,"version":"1.0","author_url":"https:\/\/instagram.com\/cazzerson","author_id":31727100,"type":"rich"}'
|
249
202
|
http_version:
|
250
|
-
recorded_at:
|
203
|
+
recorded_at: Fri, 24 Apr 2015 14:06:25 GMT
|
251
204
|
- request:
|
252
205
|
method: get
|
253
|
-
uri:
|
206
|
+
uri: https://api.instagram.com/oembed?format=json&url=http://instagram.com/p/k5LhuktiSC/
|
254
207
|
body:
|
255
208
|
encoding: US-ASCII
|
256
209
|
string: ''
|
@@ -258,43 +211,61 @@ http_interactions:
|
|
258
211
|
Accept-Encoding:
|
259
212
|
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
260
213
|
Accept:
|
261
|
-
-
|
214
|
+
- "*/*"
|
262
215
|
User-Agent:
|
263
|
-
-
|
216
|
+
- Mozilla/5.0 (compatible; ruby-oembed/0.8.13)
|
264
217
|
response:
|
265
218
|
status:
|
266
219
|
code: 200
|
267
220
|
message: OK
|
268
221
|
headers:
|
269
|
-
|
270
|
-
-
|
271
|
-
|
272
|
-
-
|
222
|
+
Server:
|
223
|
+
- nginx
|
224
|
+
Date:
|
225
|
+
- Fri, 24 Apr 2015 14:06:26 GMT
|
273
226
|
Content-Type:
|
274
227
|
- application/json
|
275
|
-
|
276
|
-
-
|
228
|
+
Content-Language:
|
229
|
+
- en
|
277
230
|
Expires:
|
278
231
|
- Sat, 01 Jan 2000 00:00:00 GMT
|
232
|
+
Vary:
|
233
|
+
- Cookie, Accept-Language, Accept-Encoding
|
279
234
|
Pragma:
|
280
235
|
- no-cache
|
281
|
-
|
282
|
-
-
|
236
|
+
Cache-Control:
|
237
|
+
- private, no-cache, no-store, must-revalidate
|
283
238
|
Set-Cookie:
|
284
|
-
-
|
285
|
-
- csrftoken=65113997a68a232330752b7f4ecfc78e; expires=Thu, 26-Feb-2015 19:42:54
|
239
|
+
- csrftoken=06d3bb3b1f7a4ba826522411e4285e54; expires=Fri, 22-Apr-2016 14:06:26
|
286
240
|
GMT; Max-Age=31449600; Path=/
|
287
|
-
- mid=
|
241
|
+
- mid=VTpN4gAEAAFyrp01nR8WxGLcwi82; expires=Thu, 19-Apr-2035 14:06:26 GMT; Max-Age=630720000;
|
288
242
|
Path=/
|
289
|
-
Vary:
|
290
|
-
- Cookie, Accept-Language, Accept-Encoding
|
291
|
-
Content-Length:
|
292
|
-
- '243'
|
293
243
|
Connection:
|
294
244
|
- keep-alive
|
245
|
+
Content-Length:
|
246
|
+
- '1368'
|
295
247
|
body:
|
296
248
|
encoding: UTF-8
|
297
|
-
string: '{"provider_url":"
|
249
|
+
string: '{"provider_url":"https:\/\/instagram.com\/","media_id":"664613116276253826_1128023464","author_name":"bddnc","height":null,"thumbnail_url":"https:\/\/scontent.cdninstagram.com\/hphotos-xfp1\/t51.2885-15\/1725673_1407639456161936_589510248_n.jpg","thumbnail_width":640,"thumbnail_height":640,"provider_name":"Instagram","title":"six
|
250
|
+
#hunttesting","html":"\u003cblockquote class=\"instagram-media\" data-instgrm-captioned
|
251
|
+
data-instgrm-version=\"4\" style=\" background:#FFF; border:0; border-radius:3px;
|
252
|
+
box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin:
|
253
|
+
1px; max-width:658px; padding:0; width:99.375%; width:-webkit-calc(100% -
|
254
|
+
2px); width:calc(100% - 2px);\"\u003e\u003cdiv style=\"padding:8px;\"\u003e
|
255
|
+
\u003cdiv style=\" background:#F8F8F8; line-height:0; margin-top:40px; padding:50%
|
256
|
+
0; text-align:center; width:100%;\"\u003e \u003cdiv style=\" background:url(data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAMAAAApWqozAAAAGFBMVEUiIiI9PT0eHh4gIB4hIBkcHBwcHBwcHBydr+JQAAAACHRSTlMABA4YHyQsM5jtaMwAAADfSURBVDjL7ZVBEgMhCAQBAf\/\/42xcNbpAqakcM0ftUmFAAIBE81IqBJdS3lS6zs3bIpB9WED3YYXFPmHRfT8sgyrCP1x8uEUxLMzNWElFOYCV6mHWWwMzdPEKHlhLw7NWJqkHc4uIZphavDzA2JPzUDsBZziNae2S6owH8xPmX8G7zzgKEOPUoYHvGz1TBCxMkd3kwNVbU0gKHkx+iZILf77IofhrY1nYFnB\/lQPb79drWOyJVa\/DAvg9B\/rLB4cC+Nqgdz\/TvBbBnr6GBReqn\/nRmDgaQEej7WhonozjF+Y2I\/fZou\/qAAAAAElFTkSuQmCC);
|
257
|
+
display:block; height:44px; margin:0 auto -44px; position:relative; top:-22px;
|
258
|
+
width:44px;\"\u003e\u003c\/div\u003e\u003c\/div\u003e \u003cp style=\" margin:8px
|
259
|
+
0 0 0; padding:0 4px;\"\u003e \u003ca href=\"https:\/\/instagram.com\/p\/k5LhuktiSC\/\"
|
260
|
+
style=\" color:#000; font-family:Arial,sans-serif; font-size:14px; font-style:normal;
|
261
|
+
font-weight:normal; line-height:17px; text-decoration:none; word-wrap:break-word;\"
|
262
|
+
target=\"_top\"\u003esix #hunttesting\u003c\/a\u003e\u003c\/p\u003e \u003cp
|
263
|
+
style=\" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px;
|
264
|
+
margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center;
|
265
|
+
text-overflow:ellipsis; white-space:nowrap;\"\u003eA photo posted by @bddnc
|
266
|
+
on \u003ctime style=\" font-family:Arial,sans-serif; font-size:14px; line-height:17px;\"
|
267
|
+
datetime=\"2014-02-26T20:54:39+00:00\"\u003eFeb 26, 2014 at 12:54pm PST\u003c\/time\u003e\u003c\/p\u003e\u003c\/div\u003e\u003c\/blockquote\u003e\n\u003cscript
|
268
|
+
async defer src=\"\/\/platform.instagram.com\/en_US\/embeds.js\"\u003e\u003c\/script\u003e","width":658,"version":"1.0","author_url":"https:\/\/instagram.com\/bddnc","author_id":1128023464,"type":"rich"}'
|
298
269
|
http_version:
|
299
|
-
recorded_at:
|
300
|
-
recorded_with: VCR 2.
|
270
|
+
recorded_at: Fri, 24 Apr 2015 14:06:26 GMT
|
271
|
+
recorded_with: VCR 2.9.3
|
@@ -2,7 +2,7 @@
|
|
2
2
|
http_interactions:
|
3
3
|
- request:
|
4
4
|
method: get
|
5
|
-
uri:
|
5
|
+
uri: https://api.instagram.com/oembed?format=json&url=http://instagram.com/p/R0NyCsK_xf/
|
6
6
|
body:
|
7
7
|
encoding: US-ASCII
|
8
8
|
string: ''
|
@@ -10,43 +10,61 @@ http_interactions:
|
|
10
10
|
Accept-Encoding:
|
11
11
|
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
12
12
|
Accept:
|
13
|
-
-
|
13
|
+
- "*/*"
|
14
14
|
User-Agent:
|
15
|
-
-
|
15
|
+
- Mozilla/5.0 (compatible; ruby-oembed/0.8.13)
|
16
16
|
response:
|
17
17
|
status:
|
18
18
|
code: 200
|
19
19
|
message: OK
|
20
20
|
headers:
|
21
|
-
|
22
|
-
-
|
23
|
-
|
24
|
-
-
|
21
|
+
Server:
|
22
|
+
- nginx
|
23
|
+
Date:
|
24
|
+
- Fri, 24 Apr 2015 14:02:19 GMT
|
25
25
|
Content-Type:
|
26
26
|
- application/json
|
27
|
-
|
28
|
-
-
|
27
|
+
Content-Language:
|
28
|
+
- en
|
29
29
|
Expires:
|
30
30
|
- Sat, 01 Jan 2000 00:00:00 GMT
|
31
|
+
Vary:
|
32
|
+
- Cookie, Accept-Language, Accept-Encoding
|
31
33
|
Pragma:
|
32
34
|
- no-cache
|
33
|
-
|
34
|
-
-
|
35
|
+
Cache-Control:
|
36
|
+
- private, no-cache, no-store, must-revalidate
|
35
37
|
Set-Cookie:
|
36
|
-
-
|
37
|
-
- csrftoken=e2b7546b8f6205ce3b63f01ddd5ed9e8; expires=Wed, 25-Feb-2015 21:56:54
|
38
|
+
- csrftoken=38177ebb04cbab402bd6873db2c70d5c; expires=Fri, 22-Apr-2016 14:02:19
|
38
39
|
GMT; Max-Age=31449600; Path=/
|
39
|
-
- mid=
|
40
|
+
- mid=VTpM6wAEAAFkIMLVGldYscBUFcuc; expires=Thu, 19-Apr-2035 14:02:19 GMT; Max-Age=630720000;
|
40
41
|
Path=/
|
41
|
-
Vary:
|
42
|
-
- Cookie, Accept-Language, Accept-Encoding
|
43
|
-
Content-Length:
|
44
|
-
- '243'
|
45
42
|
Connection:
|
46
43
|
- keep-alive
|
44
|
+
Content-Length:
|
45
|
+
- '1351'
|
47
46
|
body:
|
48
47
|
encoding: UTF-8
|
49
|
-
string: '{"provider_url":"
|
48
|
+
string: '{"provider_url":"https:\/\/instagram.com\/","media_id":"320942086917192799_244467814","author_name":"corylown","height":null,"thumbnail_url":"https:\/\/distilleryimage7-a.akamaihd.net\/55dcf0ba2a8c11e29cc822000a1f96e3_7.jpg","thumbnail_width":612,"thumbnail_height":612,"provider_name":"Instagram","title":"Tethered","html":"\u003cblockquote
|
49
|
+
class=\"instagram-media\" data-instgrm-captioned data-instgrm-version=\"4\"
|
50
|
+
style=\" background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px
|
51
|
+
0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:658px;
|
52
|
+
padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100%
|
53
|
+
- 2px);\"\u003e\u003cdiv style=\"padding:8px;\"\u003e \u003cdiv style=\" background:#F8F8F8;
|
54
|
+
line-height:0; margin-top:40px; padding:50% 0; text-align:center; width:100%;\"\u003e
|
55
|
+
\u003cdiv style=\" background:url(data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAMAAAApWqozAAAAGFBMVEUiIiI9PT0eHh4gIB4hIBkcHBwcHBwcHBydr+JQAAAACHRSTlMABA4YHyQsM5jtaMwAAADfSURBVDjL7ZVBEgMhCAQBAf\/\/42xcNbpAqakcM0ftUmFAAIBE81IqBJdS3lS6zs3bIpB9WED3YYXFPmHRfT8sgyrCP1x8uEUxLMzNWElFOYCV6mHWWwMzdPEKHlhLw7NWJqkHc4uIZphavDzA2JPzUDsBZziNae2S6owH8xPmX8G7zzgKEOPUoYHvGz1TBCxMkd3kwNVbU0gKHkx+iZILf77IofhrY1nYFnB\/lQPb79drWOyJVa\/DAvg9B\/rLB4cC+Nqgdz\/TvBbBnr6GBReqn\/nRmDgaQEej7WhonozjF+Y2I\/fZou\/qAAAAAElFTkSuQmCC);
|
56
|
+
display:block; height:44px; margin:0 auto -44px; position:relative; top:-22px;
|
57
|
+
width:44px;\"\u003e\u003c\/div\u003e\u003c\/div\u003e \u003cp style=\" margin:8px
|
58
|
+
0 0 0; padding:0 4px;\"\u003e \u003ca href=\"https:\/\/instagram.com\/p\/R0NyCsK_xf\/\"
|
59
|
+
style=\" color:#000; font-family:Arial,sans-serif; font-size:14px; font-style:normal;
|
60
|
+
font-weight:normal; line-height:17px; text-decoration:none; word-wrap:break-word;\"
|
61
|
+
target=\"_top\"\u003eTethered\u003c\/a\u003e\u003c\/p\u003e \u003cp style=\"
|
62
|
+
color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px;
|
63
|
+
margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center;
|
64
|
+
text-overflow:ellipsis; white-space:nowrap;\"\u003eA photo posted by @corylown
|
65
|
+
on \u003ctime style=\" font-family:Arial,sans-serif; font-size:14px; line-height:17px;\"
|
66
|
+
datetime=\"2012-11-09T16:41:39+00:00\"\u003eNov 9, 2012 at 8:41am PST\u003c\/time\u003e\u003c\/p\u003e\u003c\/div\u003e\u003c\/blockquote\u003e\n\u003cscript
|
67
|
+
async defer src=\"\/\/platform.instagram.com\/en_US\/embeds.js\"\u003e\u003c\/script\u003e","width":658,"version":"1.0","author_url":"https:\/\/instagram.com\/corylown","author_id":244467814,"type":"rich"}'
|
50
68
|
http_version:
|
51
|
-
recorded_at:
|
52
|
-
recorded_with: VCR 2.
|
69
|
+
recorded_at: Fri, 24 Apr 2015 14:02:19 GMT
|
70
|
+
recorded_with: VCR 2.9.3
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lentil
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jason Casden
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2015-
|
14
|
+
date: 2015-04-24 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: rails
|
@@ -111,6 +111,20 @@ dependencies:
|
|
111
111
|
- - "~>"
|
112
112
|
- !ruby/object:Gem::Version
|
113
113
|
version: 1.1.2
|
114
|
+
- !ruby/object:Gem::Dependency
|
115
|
+
name: hashie
|
116
|
+
requirement: !ruby/object:Gem::Requirement
|
117
|
+
requirements:
|
118
|
+
- - "~>"
|
119
|
+
- !ruby/object:Gem::Version
|
120
|
+
version: 3.4.1
|
121
|
+
type: :runtime
|
122
|
+
prerelease: false
|
123
|
+
version_requirements: !ruby/object:Gem::Requirement
|
124
|
+
requirements:
|
125
|
+
- - "~>"
|
126
|
+
- !ruby/object:Gem::Version
|
127
|
+
version: 3.4.1
|
114
128
|
- !ruby/object:Gem::Dependency
|
115
129
|
name: modernizr-rails
|
116
130
|
requirement: !ruby/object:Gem::Requirement
|
@@ -285,14 +299,14 @@ dependencies:
|
|
285
299
|
requirements:
|
286
300
|
- - "~>"
|
287
301
|
- !ruby/object:Gem::Version
|
288
|
-
version: 0.
|
302
|
+
version: 0.7.1
|
289
303
|
type: :runtime
|
290
304
|
prerelease: false
|
291
305
|
version_requirements: !ruby/object:Gem::Requirement
|
292
306
|
requirements:
|
293
307
|
- - "~>"
|
294
308
|
- !ruby/object:Gem::Version
|
295
|
-
version: 0.
|
309
|
+
version: 0.7.1
|
296
310
|
- !ruby/object:Gem::Dependency
|
297
311
|
name: kaminari
|
298
312
|
requirement: !ruby/object:Gem::Requirement
|
@@ -307,6 +321,34 @@ dependencies:
|
|
307
321
|
- - "~>"
|
308
322
|
- !ruby/object:Gem::Version
|
309
323
|
version: 0.16.1
|
324
|
+
- !ruby/object:Gem::Dependency
|
325
|
+
name: oj
|
326
|
+
requirement: !ruby/object:Gem::Requirement
|
327
|
+
requirements:
|
328
|
+
- - "~>"
|
329
|
+
- !ruby/object:Gem::Version
|
330
|
+
version: 2.12.4
|
331
|
+
type: :runtime
|
332
|
+
prerelease: false
|
333
|
+
version_requirements: !ruby/object:Gem::Requirement
|
334
|
+
requirements:
|
335
|
+
- - "~>"
|
336
|
+
- !ruby/object:Gem::Version
|
337
|
+
version: 2.12.4
|
338
|
+
- !ruby/object:Gem::Dependency
|
339
|
+
name: oj_mimic_json
|
340
|
+
requirement: !ruby/object:Gem::Requirement
|
341
|
+
requirements:
|
342
|
+
- - "~>"
|
343
|
+
- !ruby/object:Gem::Version
|
344
|
+
version: 1.0.1
|
345
|
+
type: :runtime
|
346
|
+
prerelease: false
|
347
|
+
version_requirements: !ruby/object:Gem::Requirement
|
348
|
+
requirements:
|
349
|
+
- - "~>"
|
350
|
+
- !ruby/object:Gem::Version
|
351
|
+
version: 1.0.1
|
310
352
|
- !ruby/object:Gem::Dependency
|
311
353
|
name: sqlite3
|
312
354
|
requirement: !ruby/object:Gem::Requirement
|
@@ -397,14 +439,14 @@ dependencies:
|
|
397
439
|
requirements:
|
398
440
|
- - "~>"
|
399
441
|
- !ruby/object:Gem::Version
|
400
|
-
version: 0.
|
442
|
+
version: 0.10.0
|
401
443
|
type: :development
|
402
444
|
prerelease: false
|
403
445
|
version_requirements: !ruby/object:Gem::Requirement
|
404
446
|
requirements:
|
405
447
|
- - "~>"
|
406
448
|
- !ruby/object:Gem::Version
|
407
|
-
version: 0.
|
449
|
+
version: 0.10.0
|
408
450
|
- !ruby/object:Gem::Dependency
|
409
451
|
name: pry-rails
|
410
452
|
requirement: !ruby/object:Gem::Requirement
|
@@ -467,14 +509,14 @@ dependencies:
|
|
467
509
|
requirements:
|
468
510
|
- - "~>"
|
469
511
|
- !ruby/object:Gem::Version
|
470
|
-
version: 1.
|
512
|
+
version: 1.5.1
|
471
513
|
type: :development
|
472
514
|
prerelease: false
|
473
515
|
version_requirements: !ruby/object:Gem::Requirement
|
474
516
|
requirements:
|
475
517
|
- - "~>"
|
476
518
|
- !ruby/object:Gem::Version
|
477
|
-
version: 1.
|
519
|
+
version: 1.5.1
|
478
520
|
- !ruby/object:Gem::Dependency
|
479
521
|
name: yard
|
480
522
|
requirement: !ruby/object:Gem::Requirement
|
@@ -647,6 +689,8 @@ files:
|
|
647
689
|
- db/migrate/20130506205348_add_do_not_request_donation_to_lentil_images.rb
|
648
690
|
- db/migrate/20131205181204_add_last_donor_agreement_failure_date_to_lentil_images.rb
|
649
691
|
- db/migrate/20141106172834_add_type_to_images.rb
|
692
|
+
- db/migrate/20150311004606_add_suppressed_to_images.rb
|
693
|
+
- db/migrate/20150422123522_add_indexes_to_images.rb
|
650
694
|
- db/seeds.rb
|
651
695
|
- lib/generators/lentil/USAGE
|
652
696
|
- lib/generators/lentil/install_generator.rb
|