lentil 0.4.2 → 0.5.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 855952ce24fa3466918cbc10af3fda79a022938d
4
- data.tar.gz: 60cea752bc2402326b4f6b8bc3ce24a781133a9b
3
+ metadata.gz: 97465eeca8fbdaaa274f0202ff41703550717f74
4
+ data.tar.gz: 1bf43a3507e0ea9be6d0d97873019b3afe1905c2
5
5
  SHA512:
6
- metadata.gz: 2aa0c1e76c081f7a569fd3bad3a1eb0f90249da556ddd6f30c7e0aaa6b8811994f4f009672f19af8d203c656bca5b00e89b31177bb14d40b7ef303c3900cf497
7
- data.tar.gz: 945f99687061485de682bc5fdfadb2bc08e7d154892a46d84be10f3ec41d2261c3e62ceb67613b4852463adf408df66e11235a6e674c0e755b6446b46bebf716
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
 
@@ -84,6 +84,7 @@ function addfancybox() {
84
84
  title : { type : 'inside' },
85
85
  overlay : { locked : false }
86
86
  },
87
+ aspectRatio : true,
87
88
  afterLoad: function(current, previous) {
88
89
 
89
90
  // pushing base url so that back/close returns to image gallery
@@ -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,5 @@
1
+ class AddSuppressedToImages < ActiveRecord::Migration
2
+ def change
3
+ add_column :lentil_images, :suppressed, :boolean, :default => false
4
+ end
5
+ end
@@ -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
@@ -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, :do_not_request_donation => image_params['do_not_request_donation'])
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
- # This is a temporary fix for a bug in the Hashie to_hash method.
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
@@ -1,3 +1,3 @@
1
1
  module Lentil
2
- VERSION = "0.4.2"
2
+ VERSION = "0.5.0"
3
3
  end
@@ -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.each do |image|
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.each do |image|
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
- @jsonobj = JSON.parse(image.to_json)
204
- @jsonobj.delete("id")
205
- @jsonobj["tags"] = JSON.parse(image.tags.to_json)
206
- @jsonobj["licenses"] = JSON.parse(image.licenses.to_json)
207
- @jsonobj["licenses"].each do |lic|
208
- lic.delete("id")
209
- end
210
-
211
- @jsonobj["like_votes"] = JSON.parse(image.like_votes.to_json)
212
- @jsonobj["flags"] = JSON.parse(image.flags.to_json)
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 @jsonobj.to_json
215
+ f.write jsonobj.to_json
220
216
  numArchived += 1
221
217
  end
222
218
  end
@@ -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 => 20141106172834) do
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: http://api.instagram.com/oembed?format=json&url=http://instagram.com/p/R82ycNoNfn/
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
- - Ruby
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
- Set-Cookie:
36
- - ccode=US; Path=/
37
- - csrftoken=e081cc0702791acd6a3fa8ff8b1a5513; expires=Thu, 26-Feb-2015 19:42:54
38
- GMT; Max-Age=31449600; Path=/
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
- Server:
84
- - nginx
35
+ Cache-Control:
36
+ - private, no-cache, no-store, must-revalidate
85
37
  Set-Cookie:
86
- - ccode=US; Path=/
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=Uw-VPgAEAAE6MIQcBg24mIuWY8fR; expires=Wed, 22-Feb-2034 19:42:54 GMT; Max-Age=630720000;
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: No Media Match
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: Thu, 27 Feb 2014 19:42:54 GMT
69
+ recorded_at: Fri, 24 Apr 2015 14:06:25 GMT
102
70
  - request:
103
71
  method: get
104
- uri: http://api.instagram.com/oembed?format=json&url=http://instagram.com/p/k5LhuktiSC/
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
- - Ruby
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
- Cache-Control:
121
- - private, no-cache, no-store, must-revalidate
122
- Content-Language:
123
- - en
88
+ Server:
89
+ - nginx
90
+ Date:
91
+ - Fri, 24 Apr 2015 14:06:25 GMT
124
92
  Content-Type:
125
93
  - application/json
126
- Date:
127
- - Thu, 27 Feb 2014 19:42:54 GMT
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
- Server:
133
- - nginx
102
+ Cache-Control:
103
+ - private, no-cache, no-store, must-revalidate
134
104
  Set-Cookie:
135
- - ccode=US; Path=/
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=Uw-VPgAEAAH3fw8MDboIOffN0zE2; expires=Wed, 22-Feb-2034 19:42:54 GMT; Max-Age=630720000;
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":"http:\/\/instagram.com\/","media_id":"664613116276253826_1128023464","title":"six
149
- #hunttesting","url":"http:\/\/distilleryimage8.ak.instagram.com\/28b09b209f2811e38e831293e346cce0_8.jpg","author_name":"bddnc","height":640,"width":640,"version":"1.0","author_url":"http:\/\/instagram.com\/bddnc","author_id":1128023464,"type":"photo","provider_name":"Instagram"}'
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: Thu, 27 Feb 2014 19:42:54 GMT
136
+ recorded_at: Fri, 24 Apr 2015 14:06:25 GMT
152
137
  - request:
153
138
  method: get
154
- uri: http://api.instagram.com/oembed?format=json&url=http://instagram.com/p/R82ycNoNfn/
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
- - Ruby
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
- Set-Cookie:
185
- - ccode=US; Path=/
186
- - csrftoken=55845d2b97bc7fb8c3f8f9d4d3fe9409; expires=Thu, 26-Feb-2015 19:42:54
187
- GMT; Max-Age=31449600; Path=/
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
- Server:
233
- - nginx
169
+ Cache-Control:
170
+ - private, no-cache, no-store, must-revalidate
234
171
  Set-Cookie:
235
- - ccode=US; Path=/
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=Uw-VPgAEAAE-mydLNVv49vMpmJT4; expires=Wed, 22-Feb-2034 19:42:54 GMT; Max-Age=630720000;
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: No Media Match
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: Thu, 27 Feb 2014 19:42:54 GMT
203
+ recorded_at: Fri, 24 Apr 2015 14:06:25 GMT
251
204
  - request:
252
205
  method: get
253
- uri: http://api.instagram.com/oembed?format=json&url=http://instagram.com/p/R0NyCsK_xf/
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
- - Ruby
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
- Cache-Control:
270
- - private, no-cache, no-store, must-revalidate
271
- Content-Language:
272
- - en
222
+ Server:
223
+ - nginx
224
+ Date:
225
+ - Fri, 24 Apr 2015 14:06:26 GMT
273
226
  Content-Type:
274
227
  - application/json
275
- Date:
276
- - Thu, 27 Feb 2014 19:42:54 GMT
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
- Server:
282
- - nginx
236
+ Cache-Control:
237
+ - private, no-cache, no-store, must-revalidate
283
238
  Set-Cookie:
284
- - ccode=US; Path=/
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=Uw-VPgAEAAFdCNfvK9phYZ52i0ao; expires=Wed, 22-Feb-2034 19:42:54 GMT; Max-Age=630720000;
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":"http:\/\/instagram.com\/","media_id":"320942086917192799_244467814","title":"Tethered","url":"http:\/\/distilleryimage7.ak.instagram.com\/55dcf0ba2a8c11e29cc822000a1f96e3_7.jpg","author_name":"corylown","height":612,"width":612,"version":"1.0","author_url":"http:\/\/instagram.com\/corylown","author_id":244467814,"type":"photo","provider_name":"Instagram"}'
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: Thu, 27 Feb 2014 19:42:54 GMT
300
- recorded_with: VCR 2.7.0
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: http://api.instagram.com/oembed?format=json&url=http://instagram.com/p/R0NyCsK_xf/
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
- - Ruby
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
21
+ Server:
22
+ - nginx
23
+ Date:
24
+ - Fri, 24 Apr 2015 14:02:19 GMT
25
25
  Content-Type:
26
26
  - application/json
27
- Date:
28
- - Wed, 26 Feb 2014 21:56:54 GMT
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
- Server:
34
- - nginx
35
+ Cache-Control:
36
+ - private, no-cache, no-store, must-revalidate
35
37
  Set-Cookie:
36
- - ccode=US; Path=/
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=Uw5jJgAEAAGFSpf5tlLPwEjb_CCP; expires=Tue, 21-Feb-2034 21:56:54 GMT; Max-Age=630720000;
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":"http:\/\/instagram.com\/","media_id":"320942086917192799_244467814","title":"Tethered","url":"http:\/\/distilleryimage7.ak.instagram.com\/55dcf0ba2a8c11e29cc822000a1f96e3_7.jpg","author_name":"corylown","height":612,"width":612,"version":"1.0","author_url":"http:\/\/instagram.com\/corylown","author_id":244467814,"type":"photo","provider_name":"Instagram"}'
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: Wed, 26 Feb 2014 21:56:54 GMT
52
- recorded_with: VCR 2.7.0
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.2
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-03-04 00:00:00.000000000 Z
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.6.6
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.6.6
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.9.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.9.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.3.0
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.3.0
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