publish_my_data 0.0.15 → 0.0.16

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.
@@ -51,8 +51,18 @@ module PublishMyData
51
51
  prefix = "dataset_data_#{@dataset.slug}_#{@dataset.modified.strftime("%Y%m%d")}"
52
52
  downloads = s3.buckets[PublishMyData.dataset_downloads_s3_bucket].objects.with_prefix(prefix).to_a
53
53
 
54
- if downloads.any?
55
- latest_download = downloads.last
54
+ # filter the downloads to only include ones with a timestamp equal to or after the dataset modified date.
55
+ # (ones older than this are out of date)
56
+ current_downloads = downloads.select do |d|
57
+ date_portion = d.public_url.to_s.split("_").last.split('.').first #between last underscore and first dot.
58
+ file_timestamp = DateTime.parse(date_portion)
59
+ file_timestamp >= @dataset.modified
60
+ end
61
+
62
+ # if we can't find a current download it's cos we haven't generated it yet since ds was modified
63
+ # ... and we should 404.
64
+ if current_downloads.any?
65
+ latest_download = current_downloads.last
56
66
  redirect_to latest_download.public_url.to_s
57
67
  else
58
68
  raise Tripod::Errors::ResourceNotFound
@@ -1,3 +1,3 @@
1
1
  module PublishMyData
2
- VERSION = "0.0.15"
2
+ VERSION = "0.0.16"
3
3
  end
@@ -204,7 +204,7 @@ module PublishMyData
204
204
 
205
205
  let(:dataset) { FactoryGirl.create(:my_dataset) }
206
206
 
207
- context "when a download exists on s3" do
207
+ context "when a download exists on s3 for today" do
208
208
 
209
209
  before do
210
210
  # make some downloads.
@@ -229,12 +229,33 @@ module PublishMyData
229
229
 
230
230
  end
231
231
 
232
+ context "when a download exists on s3 for today, but before the modified date" do
233
+
234
+ before do
235
+ # make some downloads.
236
+ s3 = AWS::S3.new
237
+ bucket = s3.buckets[PublishMyData.dataset_downloads_s3_bucket]
238
+
239
+ @obj1 = bucket.objects.create("dataset_data_#{dataset.slug}_201007011159.nt.zip", 'data')
240
+
241
+ # make them public readable
242
+ [@obj1].each { |o| o.acl = :public_read }
243
+ end
244
+
245
+ it "should 404" do
246
+ get "dump", :id => dataset.slug, :use_route => :publish_my_data
247
+ response.should be_not_found
248
+ end
249
+
250
+ end
251
+
232
252
  context "when a download doesn't exist on s3" do
233
253
  it "should 404" do
234
254
  get "dump", :id => dataset.slug, :use_route => :publish_my_data
235
255
  response.should be_not_found
236
256
  end
237
257
  end
258
+
238
259
  end
239
260
 
240
261
  context "when a dataset with that slug doesn't exist" do