geoblacklight_sidecar_images 0.0.2 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +8 -0
- data/README.md +27 -4
- data/Rakefile +2 -0
- data/app/controllers/geoblacklight_sidecar_images/application_controller.rb +2 -0
- data/app/helpers/geoblacklight_sidecar_images/application_helper.rb +2 -0
- data/app/jobs/geoblacklight_sidecar_images/application_job.rb +2 -0
- data/app/mailers/geoblacklight_sidecar_images/application_mailer.rb +2 -0
- data/app/models/geoblacklight_sidecar_images/application_record.rb +2 -0
- data/config/routes.rb +2 -0
- data/lib/generators/geoblacklight_sidecar_images/install_generator.rb +2 -1
- data/lib/generators/geoblacklight_sidecar_images/templates/jobs/store_image_job.rb +2 -0
- data/lib/generators/geoblacklight_sidecar_images/templates/models/concerns/wms_rewrite_concern.rb +2 -0
- data/lib/generators/geoblacklight_sidecar_images/templates/models/solr_document_sidecar.rb +2 -0
- data/lib/generators/geoblacklight_sidecar_images/templates/services/image_service.rb +22 -1
- data/lib/generators/geoblacklight_sidecar_images/templates/services/image_service/dynamic_map_layer.rb +2 -0
- data/lib/generators/geoblacklight_sidecar_images/templates/services/image_service/iiif.rb +2 -0
- data/lib/generators/geoblacklight_sidecar_images/templates/services/image_service/image_map_layer.rb +2 -0
- data/lib/generators/geoblacklight_sidecar_images/templates/services/image_service/tiled_map_layer.rb +2 -0
- data/lib/generators/geoblacklight_sidecar_images/templates/services/image_service/wms.rb +2 -0
- data/lib/generators/geoblacklight_sidecar_images/templates/uploaders/image_uploader.rb +2 -0
- data/lib/generators/geoblacklight_sidecar_images/templates/views/catalog/_index_split_default.html.erb +9 -12
- data/lib/geoblacklight_sidecar_images.rb +2 -0
- data/lib/geoblacklight_sidecar_images/engine.rb +2 -0
- data/lib/geoblacklight_sidecar_images/version.rb +3 -1
- data/screenshot.png +0 -0
- data/spec/fixtures/files/umn_solr_thumb.json +34 -0
- data/spec/models/solr_document_sidecar_spec.rb +2 -0
- data/spec/models/solr_document_spec.rb +2 -0
- data/spec/rails_helper.rb +2 -0
- data/spec/services/image_service_spec.rb +16 -2
- data/spec/spec_helper.rb +1 -0
- data/spec/test_app_templates/lib/generators/test_app_generator.rb +2 -0
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3233e1aaff539c85ba41a37cd3e87b7a8ff083d7
|
4
|
+
data.tar.gz: 330ef9966073b81e5fdc539287e25ef2333b98f8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5a8af424a1f10bec71d607c4997810b054aab5948b662a83cdf2325ed3005cf90d6dc0bd0b5a496a2a0303d454941b38b968e9c81c3fd8b3c56a97fc36ebfcf7
|
7
|
+
data.tar.gz: d3fa62b61a58cbb07edd93ad94b1e93c2e652d9a06947a2011c9a40ffa30afd8949e33e3d68c3d7072f8c085bb3d82f794592c4f2984f6552e9b5711a2272542
|
data/.rubocop.yml
CHANGED
@@ -19,6 +19,14 @@ AllCops:
|
|
19
19
|
- 'template.rb'
|
20
20
|
- Gemfile
|
21
21
|
|
22
|
+
Lint/RescueException:
|
23
|
+
Exclude:
|
24
|
+
- 'lib/generators/geoblacklight_sidecar_images/templates/services/image_service.rb'
|
25
|
+
|
26
|
+
Metrics/BlockLength:
|
27
|
+
Exclude:
|
28
|
+
- 'spec/**/*'
|
29
|
+
|
22
30
|
Metrics/LineLength:
|
23
31
|
Max: 100
|
24
32
|
Exclude:
|
data/README.md
CHANGED
@@ -3,12 +3,16 @@
|
|
3
3
|
[![Build Status](https://travis-ci.org/ewlarson/geoblacklight_sidecar_images.svg?branch=master)](https://travis-ci.org/ewlarson/geoblacklight_sidecar_images)
|
4
4
|
[![Maintainability](https://api.codeclimate.com/v1/badges/88c14165af5459963011/maintainability)](https://codeclimate.com/github/ewlarson/geoblacklight_sidecar_images/maintainability)
|
5
5
|
[![Coverage Status](https://coveralls.io/repos/github/ewlarson/geoblacklight_sidecar_images/badge.svg?branch=master)](https://coveralls.io/github/ewlarson/geoblacklight_sidecar_images?branch=master)
|
6
|
+
[![Gem Version](https://badge.fury.io/rb/geoblacklight_sidecar_images.svg)](https://badge.fury.io/rb/geoblacklight_sidecar_images)
|
6
7
|
|
7
8
|
Store local copies of remote imagery in GeoBlacklight.
|
8
9
|
|
9
10
|
## Description
|
10
11
|
This GeoBlacklight plugin helps capture remote images from geo web services and save them locally. It borrows the concept of a [SolrDocumentSidecar](https://github.com/projectblacklight/spotlight/blob/master/app/models/spotlight/solr_document_sidecar.rb) from [Spotlight](https://github.com/projectblacklight/spotlight), to have an ActiveRecord-based "sidecar" to match each non-AR SolrDocument. This allows us to use [carrierwave](https://github.com/carrierwaveuploader/carrierwave) to attach images to our documents.
|
11
12
|
|
13
|
+
### Example Screenshot
|
14
|
+
![Screenshot](screenshot.png)
|
15
|
+
|
12
16
|
## Requirements
|
13
17
|
|
14
18
|
* [GeoBlacklight](https://github.com/geoblacklight/geoblacklight)
|
@@ -65,6 +69,25 @@ rake geoblacklight_sidecar_images:images:precache_all
|
|
65
69
|
rake geoblacklight_sidecar_images:images:precache_id['minnesota-iiif-jpg-83f4648a-125c-4000-a12f-aba2b432e7cd']
|
66
70
|
```
|
67
71
|
|
72
|
+
## Prioritize Solr Thumbnail Field URIs
|
73
|
+
|
74
|
+
If you add a thumbnail uri to your geoblacklight solr documents...
|
75
|
+
|
76
|
+
### Example Doc
|
77
|
+
|
78
|
+
```json
|
79
|
+
{
|
80
|
+
...
|
81
|
+
"dc_format_s":"TIFF",
|
82
|
+
"dc_creator_sm":["Minnesota. Department of Highways."],
|
83
|
+
"thumbnail_path_ss":"https://umedia.lib.umn.edu/sites/default/files/imagecache/square300/reference/562/image/jpeg/1089695.jpg",
|
84
|
+
"dc_type_s":"Still image",
|
85
|
+
...
|
86
|
+
}
|
87
|
+
```
|
88
|
+
|
89
|
+
Then you can edit your GeoBlacklight settings.yml file to point at that solr field (Settings.GBLSI_THUMBNAIL_FIELD). Any docs in your index that have a value for that field will harvest the image at that URI instead of trying to retrieve an image via IIIF or the other web services.
|
90
|
+
|
68
91
|
## Development
|
69
92
|
|
70
93
|
```bash
|
@@ -77,8 +100,8 @@ Now you'll have an instance of GBLSI running. Follow the rake tasks above to ing
|
|
77
100
|
|
78
101
|
## TODOs
|
79
102
|
|
80
|
-
* 0.0.1 - Initial gem
|
81
|
-
* 0.1.0 -
|
82
|
-
* 0.2.0 -
|
103
|
+
* ~~0.0.1 - Initial gem~~
|
104
|
+
* ~~0.1.0 - Prioritize local thumbnail solr field~~
|
105
|
+
* 0.2.0 - Forgo attaching placeholder imagery
|
83
106
|
* 0.3.0 - Add Statesman (state machine library)
|
84
|
-
*
|
107
|
+
* 1.0.0 - Rails 5.2 branch / Switch to ActionStorage
|
data/Rakefile
CHANGED
data/config/routes.rb
CHANGED
@@ -11,7 +11,8 @@ module GeoblacklightSidecarImages
|
|
11
11
|
"INSTITUTION_LOCAL_NAME: 'Princeton'
|
12
12
|
INSTITUTION_GEOSERVER_URL: 'https://geoserver.princeton.edu'
|
13
13
|
PROXY_GEOSERVER_URL: 'http://localhost:3000'
|
14
|
-
PROXY_GEOSERVER_AUTH: 'Basic base64encodedusername:password'
|
14
|
+
PROXY_GEOSERVER_AUTH: 'Basic base64encodedusername:password'
|
15
|
+
GBLSI_THUMBNAIL_FIELD: 'thumbnail_path_ss'"
|
15
16
|
end
|
16
17
|
end
|
17
18
|
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'rack/mime'
|
2
4
|
|
3
5
|
class ImageService
|
@@ -65,6 +67,19 @@ class ImageService
|
|
65
67
|
Settings.PROXY_GEOSERVER_AUTH != 'Basic base64encodedusername:password'
|
66
68
|
end
|
67
69
|
|
70
|
+
# Tests if local thumbnail method is configured
|
71
|
+
def gblsi_thumbnail_field?
|
72
|
+
Settings.GBLSI_THUMBNAIL_FIELD
|
73
|
+
end
|
74
|
+
|
75
|
+
def gblsi_thumbnail_uri
|
76
|
+
if gblsi_thumbnail_field? && @document[Settings.GBLSI_THUMBNAIL_FIELD]
|
77
|
+
@document[Settings.GBLSI_THUMBNAIL_FIELD]
|
78
|
+
else
|
79
|
+
false
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
68
83
|
def placeholder_base_path
|
69
84
|
Rails.root.join('app', 'assets', 'images')
|
70
85
|
end
|
@@ -111,6 +126,10 @@ class ImageService
|
|
111
126
|
placeholder_data[:type]
|
112
127
|
rescue Faraday::Error::TimeoutError
|
113
128
|
placeholder_data[:type]
|
129
|
+
|
130
|
+
# Rescuing Exception intentionally
|
131
|
+
rescue Exception
|
132
|
+
placeholder_data[:type]
|
114
133
|
end
|
115
134
|
|
116
135
|
# Gets thumbnail image from URL. On error, returns document's placeholder image.
|
@@ -134,7 +153,9 @@ class ImageService
|
|
134
153
|
# dct references is used instead.
|
135
154
|
def image_url
|
136
155
|
@image_url ||= begin
|
137
|
-
if
|
156
|
+
if gblsi_thumbnail_uri
|
157
|
+
gblsi_thumbnail_uri
|
158
|
+
elsif restricted_scanned_map?
|
138
159
|
image_reference
|
139
160
|
elsif restricted_wms_layer? && !geoserver_credentials_valid?
|
140
161
|
image_reference
|
@@ -1,13 +1,5 @@
|
|
1
1
|
<% # header bar for doc items in index view -%>
|
2
2
|
<%= content_tag :div, class: 'documentHeader row', data: { layer_id: document.id, bbox: document.bounding_box_as_wsen } do %>
|
3
|
-
<div class='more-info-area-split'>
|
4
|
-
<div class='status-icons'>
|
5
|
-
<%= render partial: 'header_icons', locals: { document: document } %>
|
6
|
-
</div>
|
7
|
-
<div class="thumbnail">
|
8
|
-
<img src="<%=document.sidecar.image_url%>"/>
|
9
|
-
</div>
|
10
|
-
</div>
|
11
3
|
<div class="document-wrapper">
|
12
4
|
<h3 class="index_title col-sm-9s cosl-lg-10 text-span">
|
13
5
|
<% counter = document_counter_with_offset(document_counter) %>
|
@@ -17,10 +9,15 @@
|
|
17
9
|
<%= link_to_document document, document_show_link_field(document), counter: counter, title: document[blacklight_config.index.title_field] %>
|
18
10
|
</h3>
|
19
11
|
<div class='col-xs-12'>
|
20
|
-
<div>
|
21
|
-
<
|
22
|
-
<%=
|
23
|
-
</
|
12
|
+
<div class='media'>
|
13
|
+
<div class='media-left'>
|
14
|
+
<img class='media-object' src="<%=document.sidecar.image_url(:square)%>"/>
|
15
|
+
</div>
|
16
|
+
<div class='media-body'>
|
17
|
+
<small>
|
18
|
+
<%= geoblacklight_present(:index_fields_display, document) %>
|
19
|
+
</small>
|
20
|
+
</div>
|
24
21
|
</div>
|
25
22
|
</div>
|
26
23
|
</div>
|
data/screenshot.png
ADDED
Binary file
|
@@ -0,0 +1,34 @@
|
|
1
|
+
{
|
2
|
+
"dc_description_s":"Cartographic Details: Scale approximately 1:1,530,000. Description based on: 1932 sheet. Each sheet lists the Commissioner of highways and the Chief Engineer. On verso: Distance tables for various cities in Minnesota.",
|
3
|
+
"layer_modified_dt":"2017-06-12T13:36:50Z",
|
4
|
+
"solr_geom":"ENVELOPE(-97.2509765625, -90.9228515625, 49.3787965644, 43.4648808289)",
|
5
|
+
"dct_references_s":"{\"http://schema.org/url\":\"http://purl.umn.edu/231125\",\"http://schema.org/downloadUrl\":\"https://umedia.lib.umn.edu/sites/default/files/archive/562/image/tiff/1089695.tif\",\"http://iiif.io/api/image\":\"https://umedia.lib.umn.edu/fcgi-bin/iipsrv.fcgi?IIIF=sites/default/files/reference/562/image/jp2/1089695.jp2/info.json\"}",
|
6
|
+
"dc_rights_s":"Public",
|
7
|
+
"uuid":"aaf63e35-3d5f-4e62-b59d-377f008e9aad",
|
8
|
+
"dct_provenance_s":"Minnesota",
|
9
|
+
"dc_subject_sm":["Roads -- Minnesota -- Maps",
|
10
|
+
"Minnesota -- Distances -- Tables",
|
11
|
+
"Minnesota -- Maps",
|
12
|
+
"Maps"],
|
13
|
+
"dct_temporal_sm":["1925"],
|
14
|
+
"layer_slug_s":"aaf63e35-3d5f-4e62-b59d-377f008e9aad",
|
15
|
+
"dc_format_s":"TIFF",
|
16
|
+
"dc_creator_sm":["Minnesota. Department of Highways."],
|
17
|
+
"thumbnail_path_ss":"https://umedia.lib.umn.edu/sites/default/files/imagecache/square300/reference/562/image/jpeg/1089695.jpg",
|
18
|
+
"dc_type_s":"Still image",
|
19
|
+
"dc_identifier_s":"aaf63e35-3d5f-4e62-b59d-377f008e9aad",
|
20
|
+
"dc_relation_sm":["http://sws.geonames.org/5037779/about/rdf"],
|
21
|
+
"dct_isPartOf_sm":["John R. Borchert Map Library"],
|
22
|
+
"solr_year_i":1925,
|
23
|
+
"dct_spatial_sm":["Minnesota, United States"],
|
24
|
+
"dc_publisher_sm":["The Department"],
|
25
|
+
"layer_id_s":"urn:aaf63e35-3d5f-4e62-b59d-377f008e9aad",
|
26
|
+
"georss_box_s":"43.4648808289 -97.2509765625 49.3787965644 -90.9228515625",
|
27
|
+
"dc_title_s":"Condition map of Minnesota Trunk Highways : a 7,000 mile primary system showing national and state markings",
|
28
|
+
"dct_issued_s":"1925",
|
29
|
+
"georss_polygon_s":"43.4648808289 -97.2509765625 49.3787965644 -97.2509765625 49.3787965644 -90.9228515625 43.4648808289 -90.9228515625 43.4648808289 -97.2509765625",
|
30
|
+
"layer_geom_type_s":"Paper Map",
|
31
|
+
"dc_language_s":"eng",
|
32
|
+
"timestamp":"2017-06-12T22:01:27.649Z",
|
33
|
+
"centroid_s":"46.42183869665,-94.0869140625"
|
34
|
+
}
|
data/spec/rails_helper.rb
CHANGED
@@ -1,15 +1,29 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'rails_helper'
|
2
4
|
|
3
5
|
describe ImageService do
|
4
|
-
let(:iiif_document) { SolrDocument.new(json_data('
|
6
|
+
let(:iiif_document) { SolrDocument.new(json_data('umich_iiif_jpg')) }
|
5
7
|
let(:iiif_imgsvc) { ImageService.new(iiif_document) }
|
6
8
|
let(:wms_document) { SolrDocument.new(json_data('public_polygon_mit')) }
|
7
|
-
let(:wms_imgsvc) { ImageService.new(
|
9
|
+
let(:wms_imgsvc) { ImageService.new(wms_document) }
|
10
|
+
let(:thumb_document) { SolrDocument.new(json_data('umn_solr_thumb')) }
|
11
|
+
let(:thumb_imgsvc) { ImageService.new(thumb_document) }
|
8
12
|
|
9
13
|
describe '#store' do
|
10
14
|
it 'should respond to store' do
|
11
15
|
expect(iiif_imgsvc).to respond_to(:store)
|
12
16
|
end
|
17
|
+
|
18
|
+
it 'should prioritize settings thumbnail field' do
|
19
|
+
expect(thumb_imgsvc.send(:gblsi_thumbnail_field?)).to be_truthy
|
20
|
+
expect(thumb_imgsvc.send(:image_url)).to eq 'https://umedia.lib.umn.edu/sites/default/files/imagecache/square300/reference/562/image/jpeg/1089695.jpg'
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'should choose references if no settings thumbnail field value' do
|
24
|
+
expect(wms_imgsvc.send(:gblsi_thumbnail_field?)).to be_truthy
|
25
|
+
expect(wms_imgsvc.send(:image_url)).to include 'wms'
|
26
|
+
end
|
13
27
|
end
|
14
28
|
|
15
29
|
context '#iiif' do
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: geoblacklight_sidecar_images
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eric Larson
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2018-03-
|
12
|
+
date: 2018-03-14 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: carrierwave
|
@@ -275,6 +275,7 @@ files:
|
|
275
275
|
- lib/geoblacklight_sidecar_images/engine.rb
|
276
276
|
- lib/geoblacklight_sidecar_images/version.rb
|
277
277
|
- lib/tasks/geoblacklight_sidecar_images_tasks.rake
|
278
|
+
- screenshot.png
|
278
279
|
- solr/conf/_rest_managed.json
|
279
280
|
- solr/conf/admin-extra.html
|
280
281
|
- solr/conf/elevate.xml
|
@@ -314,6 +315,7 @@ files:
|
|
314
315
|
- spec/fixtures/files/umn_iiif_jpg.json
|
315
316
|
- spec/fixtures/files/umn_metro_result1.json
|
316
317
|
- spec/fixtures/files/umn_metro_result2.json
|
318
|
+
- spec/fixtures/files/umn_solr_thumb.json
|
317
319
|
- spec/fixtures/files/umn_state_result1.json
|
318
320
|
- spec/fixtures/files/umn_state_result2.json
|
319
321
|
- spec/models/solr_document_sidecar_spec.rb
|
@@ -371,6 +373,7 @@ test_files:
|
|
371
373
|
- spec/fixtures/files/umn_iiif_jpg.json
|
372
374
|
- spec/fixtures/files/umn_metro_result1.json
|
373
375
|
- spec/fixtures/files/umn_metro_result2.json
|
376
|
+
- spec/fixtures/files/umn_solr_thumb.json
|
374
377
|
- spec/fixtures/files/umn_state_result1.json
|
375
378
|
- spec/fixtures/files/umn_state_result2.json
|
376
379
|
- spec/models/solr_document_sidecar_spec.rb
|