supplejack_api 1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/README.md +80 -0
- data/Rakefile +42 -0
- data/app/assets/javascripts/supplejack_api/application.js +26 -0
- data/app/assets/stylesheets/supplejack_api/application.css +30 -0
- data/app/controllers/supplejack_api/admin/base_controller.rb +24 -0
- data/app/controllers/supplejack_api/admin/sessions_controller.rb +25 -0
- data/app/controllers/supplejack_api/admin/site_activities_controller.rb +21 -0
- data/app/controllers/supplejack_api/admin/users_controller.rb +55 -0
- data/app/controllers/supplejack_api/application_controller.rb +70 -0
- data/app/controllers/supplejack_api/concepts_controller.rb +52 -0
- data/app/controllers/supplejack_api/concerns/ignore_metrics.rb +14 -0
- data/app/controllers/supplejack_api/concerns/records_controller_metrics.rb +26 -0
- data/app/controllers/supplejack_api/concerns/set_items_controller_metrics.rb +20 -0
- data/app/controllers/supplejack_api/concerns/user_sets_controller_metrics.rb +26 -0
- data/app/controllers/supplejack_api/harvester/concepts_controller.rb +41 -0
- data/app/controllers/supplejack_api/harvester/fragments_controller.rb +30 -0
- data/app/controllers/supplejack_api/harvester/records_controller.rb +68 -0
- data/app/controllers/supplejack_api/metrics_api_controller.rb +44 -0
- data/app/controllers/supplejack_api/partners_controller.rb +39 -0
- data/app/controllers/supplejack_api/records_controller.rb +71 -0
- data/app/controllers/supplejack_api/schema_controller.rb +19 -0
- data/app/controllers/supplejack_api/set_items_controller.rb +38 -0
- data/app/controllers/supplejack_api/sources_controller.rb +67 -0
- data/app/controllers/supplejack_api/status_controller.rb +67 -0
- data/app/controllers/supplejack_api/user_sets_controller.rb +97 -0
- data/app/controllers/supplejack_api/users_controller.rb +49 -0
- data/app/helpers/supplejack_api/application_helper.rb +39 -0
- data/app/helpers/supplejack_api/facets_helper.rb +30 -0
- data/app/mailers/supplejack_api/request_limit_mailer.rb +43 -0
- data/app/models/supplejack_api/api_concept/concept_fragment.rb +31 -0
- data/app/models/supplejack_api/api_record/record_fragment.rb +15 -0
- data/app/models/supplejack_api/concept.rb +46 -0
- data/app/models/supplejack_api/concept_search.rb +86 -0
- data/app/models/supplejack_api/concerns/queryable_by_date.rb +31 -0
- data/app/models/supplejack_api/concerns/record.rb +108 -0
- data/app/models/supplejack_api/concerns/record_fragmentable.rb +24 -0
- data/app/models/supplejack_api/concerns/searchable.rb +430 -0
- data/app/models/supplejack_api/concerns/user_set.rb +219 -0
- data/app/models/supplejack_api/daily_metrics.rb +20 -0
- data/app/models/supplejack_api/faceted_metrics.rb +55 -0
- data/app/models/supplejack_api/fragment.rb +82 -0
- data/app/models/supplejack_api/interaction_models/record.rb +60 -0
- data/app/models/supplejack_api/interaction_models/set.rb +13 -0
- data/app/models/supplejack_api/interaction_updaters/all_usage_metric.rb +41 -0
- data/app/models/supplejack_api/interaction_updaters/set_metrics.rb +32 -0
- data/app/models/supplejack_api/interaction_updaters/usage_metrics.rb +73 -0
- data/app/models/supplejack_api/partner.rb +24 -0
- data/app/models/supplejack_api/preview_record.rb +30 -0
- data/app/models/supplejack_api/record.rb +18 -0
- data/app/models/supplejack_api/record_search.rb +12 -0
- data/app/models/supplejack_api/schema_definition.rb +147 -0
- data/app/models/supplejack_api/search.rb +14 -0
- data/app/models/supplejack_api/set_item.rb +57 -0
- data/app/models/supplejack_api/site_activity.rb +59 -0
- data/app/models/supplejack_api/source.rb +28 -0
- data/app/models/supplejack_api/source_activity.rb +36 -0
- data/app/models/supplejack_api/source_authority.rb +42 -0
- data/app/models/supplejack_api/supplejack_schema.rb +37 -0
- data/app/models/supplejack_api/support/concept/searchable.rb +79 -0
- data/app/models/supplejack_api/support/concept/storable.rb +59 -0
- data/app/models/supplejack_api/support/fragment_helpers.rb +96 -0
- data/app/models/supplejack_api/support/harvestable.rb +105 -0
- data/app/models/supplejack_api/support/searchable.rb +115 -0
- data/app/models/supplejack_api/support/status_logger.rb +23 -0
- data/app/models/supplejack_api/support/storable.rb +49 -0
- data/app/models/supplejack_api/support/validation_logger.rb +23 -0
- data/app/models/supplejack_api/usage_metrics.rb +25 -0
- data/app/models/supplejack_api/user.rb +211 -0
- data/app/models/supplejack_api/user_activity.rb +65 -0
- data/app/models/supplejack_api/user_set.rb +17 -0
- data/app/serializers/supplejack_api/application_serializer.rb +12 -0
- data/app/serializers/supplejack_api/concept_record_serializer.rb +23 -0
- data/app/serializers/supplejack_api/concept_search_serializer.rb +12 -0
- data/app/serializers/supplejack_api/concept_serializer.rb +100 -0
- data/app/serializers/supplejack_api/concerns/record_serializable.rb +119 -0
- data/app/serializers/supplejack_api/concerns/search_serializable.rb +24 -0
- data/app/serializers/supplejack_api/record_search_serializer.rb +64 -0
- data/app/serializers/supplejack_api/record_serializer.rb +13 -0
- data/app/serializers/supplejack_api/search_serializer.rb +13 -0
- data/app/serializers/supplejack_api/source_authority_serializer.rb +23 -0
- data/app/serializers/supplejack_api/user_serializer.rb +13 -0
- data/app/serializers/supplejack_api/user_set_record_serializer.rb +14 -0
- data/app/serializers/supplejack_api/user_set_serializer.rb +77 -0
- data/app/services/metrics_api/v3/api.rb +30 -0
- data/app/services/metrics_api/v3/endpoints/facets.rb +23 -0
- data/app/services/metrics_api/v3/endpoints/global.rb +26 -0
- data/app/services/metrics_api/v3/endpoints/helpers.rb +14 -0
- data/app/services/metrics_api/v3/endpoints/root.rb +97 -0
- data/app/services/metrics_api/v3/presenters/daily_metric.rb +23 -0
- data/app/services/metrics_api/v3/presenters/extended_metadata.rb +41 -0
- data/app/services/metrics_api/v3/presenters/record.rb +26 -0
- data/app/services/metrics_api/v3/presenters/view.rb +28 -0
- data/app/views/layouts/supplejack_api/_head.html.erb +17 -0
- data/app/views/layouts/supplejack_api/_top_nav.html.erb +33 -0
- data/app/views/layouts/supplejack_api/application.html.erb +33 -0
- data/app/views/supplejack_api/admin/sessions/new.html.erb +25 -0
- data/app/views/supplejack_api/admin/shared/_links.erb +34 -0
- data/app/views/supplejack_api/admin/site_activities/index.csv.erb +22 -0
- data/app/views/supplejack_api/admin/site_activities/index.html.erb +54 -0
- data/app/views/supplejack_api/admin/users/edit.html.erb +16 -0
- data/app/views/supplejack_api/admin/users/index.csv.erb +22 -0
- data/app/views/supplejack_api/admin/users/index.html.erb +57 -0
- data/app/views/supplejack_api/admin/users/show.html.erb +33 -0
- data/app/views/supplejack_api/request_limit_mailer/at100percent.text.erb +13 -0
- data/app/views/supplejack_api/request_limit_mailer/at100percent_admin.text.erb +1 -0
- data/app/views/supplejack_api/request_limit_mailer/at90percent.text.erb +13 -0
- data/app/views/supplejack_api/request_limit_mailer/at90percent_admin.text.erb +1 -0
- data/app/workers/supplejack_api/daily_metrics_worker.rb +112 -0
- data/app/workers/supplejack_api/interaction_metrics_worker.rb +45 -0
- data/config/cucumber.yml +16 -0
- data/config/initializers/force_eagerload.rb +11 -0
- data/config/initializers/interaction_updaters.rb +7 -0
- data/config/routes.rb +81 -0
- data/db/binding_records.development.json +7 -0
- data/db/binding_records.staging.json +7 -0
- data/db/concepts.json +33 -0
- data/db/concepts_data.json +569745 -0
- data/db/source_authorities.json +119 -0
- data/lib/generators/supplejack_api/install_generator.rb +124 -0
- data/lib/mongoid/paperclip.rb +53 -0
- data/lib/mongoid/string.rb +20 -0
- data/lib/sunspot/mongoid.rb +51 -0
- data/lib/sunspot/resque_session_proxy.rb +72 -0
- data/lib/sunspot/sunspot_spellcheck.rb +98 -0
- data/lib/supplejack_api.rb +13 -0
- data/lib/supplejack_api/admin/sortable.rb +40 -0
- data/lib/supplejack_api/engine.rb +46 -0
- data/lib/supplejack_api/harvester_constraint.rb +28 -0
- data/lib/supplejack_api/stylesheets.rb +36 -0
- data/lib/supplejack_api/utils.rb +75 -0
- data/lib/supplejack_api/version.rb +11 -0
- data/lib/tasks/resque.rake +22 -0
- data/lib/url_validator.rb +38 -0
- data/spec/controllers/supplejack_api/admin/base_controller_spec.rb +55 -0
- data/spec/controllers/supplejack_api/admin/site_activities_controller_spec.rb +43 -0
- data/spec/controllers/supplejack_api/admin/users_controller_spec.rb +79 -0
- data/spec/controllers/supplejack_api/application_controller_spec.rb +133 -0
- data/spec/controllers/supplejack_api/concepts_controller_spec.rb +83 -0
- data/spec/controllers/supplejack_api/concerns/records_controller_metrics_spec.rb +60 -0
- data/spec/controllers/supplejack_api/harvester/concepts_controller_spec.rb +57 -0
- data/spec/controllers/supplejack_api/harvester/records_controller_spec.rb +138 -0
- data/spec/controllers/supplejack_api/metrics_api_controller_spec.rb +71 -0
- data/spec/controllers/supplejack_api/partners_controller_spec.rb +77 -0
- data/spec/controllers/supplejack_api/records_controller_spec.rb +143 -0
- data/spec/controllers/supplejack_api/set_items_controller_spec.rb +78 -0
- data/spec/controllers/supplejack_api/sources_controller_spec.rb +161 -0
- data/spec/controllers/supplejack_api/status_controller_spec.rb +120 -0
- data/spec/controllers/supplejack_api/user_sets_controller_spec.rb +233 -0
- data/spec/controllers/supplejack_api/users_controller_spec.rb +61 -0
- data/spec/dummy/README.rdoc +268 -0
- data/spec/dummy/Rakefile +7 -0
- data/spec/dummy/app/assets/javascripts/application.js +23 -0
- data/spec/dummy/app/assets/stylesheets/application.css +22 -0
- data/spec/dummy/app/controllers/application_controller.rb +10 -0
- data/spec/dummy/app/helpers/application_helper.rb +9 -0
- data/spec/dummy/app/supplejack_api/concept_schema.rb +83 -0
- data/spec/dummy/app/supplejack_api/record_schema.rb +64 -0
- data/spec/dummy/app/supplejack_api/record_schema.txt +66 -0
- data/spec/dummy/app/views/layouts/application.html.erb +23 -0
- data/spec/dummy/app/workers/supplejack_api/clear_index_buffer.rb +32 -0
- data/spec/dummy/app/workers/supplejack_api/flush_old_records_worker.rb +17 -0
- data/spec/dummy/app/workers/supplejack_api/index_buffer.rb +49 -0
- data/spec/dummy/app/workers/supplejack_api/index_source_worker.rb +39 -0
- data/spec/dummy/app/workers/supplejack_api/index_worker.rb +82 -0
- data/spec/dummy/app/workers/supplejack_api/store_user_activity_worker.rb +24 -0
- data/spec/dummy/config.ru +11 -0
- data/spec/dummy/config/application.rb +76 -0
- data/spec/dummy/config/application.yml +31 -0
- data/spec/dummy/config/application.yml.example +36 -0
- data/spec/dummy/config/boot.rb +17 -0
- data/spec/dummy/config/environment.rb +12 -0
- data/spec/dummy/config/environments/development.rb +42 -0
- data/spec/dummy/config/environments/production.rb +76 -0
- data/spec/dummy/config/environments/test.rb +46 -0
- data/spec/dummy/config/initializers/backtrace_silencers.rb +14 -0
- data/spec/dummy/config/initializers/devise.rb +214 -0
- data/spec/dummy/config/initializers/inflections.rb +22 -0
- data/spec/dummy/config/initializers/kaminari_config.rb +17 -0
- data/spec/dummy/config/initializers/mime_types.rb +12 -0
- data/spec/dummy/config/initializers/mongoid.rb +9 -0
- data/spec/dummy/config/initializers/quiet_logger.rb +23 -0
- data/spec/dummy/config/initializers/resque.rb +18 -0
- data/spec/dummy/config/initializers/secret_token.rb +14 -0
- data/spec/dummy/config/initializers/session_store.rb +15 -0
- data/spec/dummy/config/initializers/simple_form.rb +149 -0
- data/spec/dummy/config/initializers/simple_form_foundation.rb +33 -0
- data/spec/dummy/config/initializers/state_machine.rb +8 -0
- data/spec/dummy/config/initializers/sunspot.rb +32 -0
- data/spec/dummy/config/initializers/wrap_parameters.rb +17 -0
- data/spec/dummy/config/locales/devise.en.yml +63 -0
- data/spec/dummy/config/locales/en.yml +66 -0
- data/spec/dummy/config/locales/simple_form.en.yml +33 -0
- data/spec/dummy/config/mongoid.travis.yml +34 -0
- data/spec/dummy/config/mongoid.yml +36 -0
- data/spec/dummy/config/resque-pool.yml +18 -0
- data/spec/dummy/config/resque_schedule.yml +12 -0
- data/spec/dummy/config/routes.rb +11 -0
- data/spec/dummy/config/secrets.yml +8 -0
- data/spec/dummy/config/sunspot.yml +38 -0
- data/spec/dummy/db/concepts.json +37 -0
- data/spec/dummy/db/source_authorities.json +116 -0
- data/spec/dummy/public/404.html +35 -0
- data/spec/dummy/public/422.html +35 -0
- data/spec/dummy/public/500.html +34 -0
- data/spec/dummy/public/favicon.ico +8 -0
- data/spec/dummy/script/rails +6 -0
- data/spec/dummy/solr/collection1/conf/elevate.xml +36 -0
- data/spec/dummy/solr/collection1/conf/mapping-FoldToASCII.txt +3813 -0
- data/spec/dummy/solr/collection1/conf/schema.xml +292 -0
- data/spec/dummy/solr/collection1/conf/solrconfig.xml +1780 -0
- data/spec/dummy/solr/collection1/conf/spellings.txt +2 -0
- data/spec/dummy/solr/collection1/conf/stopwords.txt +58 -0
- data/spec/dummy/solr/collection1/conf/synonyms.txt +31 -0
- data/spec/factories/concepts.rb +16 -0
- data/spec/factories/daily_metrics.rb +10 -0
- data/spec/factories/faceted_metrics.rb +25 -0
- data/spec/factories/fragment.rb +14 -0
- data/spec/factories/partners.rb +14 -0
- data/spec/factories/record_interaction.rb +17 -0
- data/spec/factories/records.rb +47 -0
- data/spec/factories/set_interaction.rb +15 -0
- data/spec/factories/source_authorities.rb +19 -0
- data/spec/factories/sources.rb +16 -0
- data/spec/factories/usage_metrics.rb +20 -0
- data/spec/factories/user_activities.rb +14 -0
- data/spec/factories/user_sets.rb +27 -0
- data/spec/factories/users.rb +23 -0
- data/spec/helpers/application_helper_spec.rb +35 -0
- data/spec/models/concept_spec.rb +163 -0
- data/spec/models/fragment_spec.rb +15 -0
- data/spec/models/site_activity_spec.rb +103 -0
- data/spec/models/source_activity_spec.rb +56 -0
- data/spec/models/source_authority_spec.rb +42 -0
- data/spec/models/supplejack_api/api_concept/concept_fragment_spec.rb +189 -0
- data/spec/models/supplejack_api/api_record/record_fragment_spec.rb +189 -0
- data/spec/models/supplejack_api/concept_spec.rb +0 -0
- data/spec/models/supplejack_api/interaction_updaters/all_usage_metric_spec.rb +41 -0
- data/spec/models/supplejack_api/interaction_updaters/set_metrics_spec.rb +32 -0
- data/spec/models/supplejack_api/interaction_updaters/usage_metrics_spec.rb +44 -0
- data/spec/models/supplejack_api/partner_spec.rb +20 -0
- data/spec/models/supplejack_api/record_search_spec.rb +429 -0
- data/spec/models/supplejack_api/record_spec.rb +280 -0
- data/spec/models/supplejack_api/schema_definition_spec.rb +272 -0
- data/spec/models/supplejack_api/search_spec.rb +243 -0
- data/spec/models/supplejack_api/set_item_spec.rb +123 -0
- data/spec/models/supplejack_api/source_spec.rb +22 -0
- data/spec/models/supplejack_api/support/fragment_helpers_spec.rb +216 -0
- data/spec/models/supplejack_api/support/harvestable_spec.rb +177 -0
- data/spec/models/supplejack_api/support/searchable_spec.rb +85 -0
- data/spec/models/supplejack_api/support/storable_spec.rb +18 -0
- data/spec/models/supplejack_api/user_activity_spec.rb +88 -0
- data/spec/models/supplejack_api/user_set_spec.rb +559 -0
- data/spec/models/supplejack_api/user_spec.rb +348 -0
- data/spec/routing/concepts_routing_spec.rb +22 -0
- data/spec/routing/harvester_constraint_spec.rb +66 -0
- data/spec/routing/harvester_routing_spec.rb +51 -0
- data/spec/routing/partner_routing_spec.rb +34 -0
- data/spec/routing/records_routing_spec.rb +26 -0
- data/spec/routing/sets_routing_spec.rb +44 -0
- data/spec/routing/source_routing_spec.rb +38 -0
- data/spec/routing/users_routing_spec.rb +18 -0
- data/spec/serializers/concept_record_serializer_spec.rb +30 -0
- data/spec/serializers/supplejack_api/application_serializer_spec.rb +14 -0
- data/spec/serializers/supplejack_api/concept_search_serializer_spec.rb +34 -0
- data/spec/serializers/supplejack_api/concept_serializer_spec.rb +92 -0
- data/spec/serializers/supplejack_api/record_search_serializer_spec.rb +34 -0
- data/spec/serializers/supplejack_api/record_serializer_spec.rb +271 -0
- data/spec/serializers/supplejack_api/search_serializer_spec.rb +90 -0
- data/spec/serializers/supplejack_api/user_serializer_spec.rb +22 -0
- data/spec/serializers/supplejack_api/user_set_serializer_spec.rb +96 -0
- data/spec/services/metrics_api/v3/api_spec.rb +23 -0
- data/spec/services/metrics_api/v3/endpoints/facets_spec.rb +25 -0
- data/spec/services/metrics_api/v3/endpoints/global_spec.rb +22 -0
- data/spec/services/metrics_api/v3/endpoints/root_spec.rb +49 -0
- data/spec/services/metrics_api/v3/presenters/extended_metadata_spec.rb +49 -0
- data/spec/spec_helper.rb +70 -0
- data/spec/support/api/schemas/metrics/daily_metrics_metadata.json +24 -0
- data/spec/support/api/schemas/metrics/extended_metrics.json +26 -0
- data/spec/support/api/schemas/metrics/extended_response.json +6 -0
- data/spec/support/api/schemas/metrics/facets_response.json +6 -0
- data/spec/support/api/schemas/metrics/record_metadata.json +33 -0
- data/spec/support/api/schemas/metrics/top_level_response.json +6 -0
- data/spec/support/api/schemas/metrics/view_metadata.json +33 -0
- data/spec/support/api_schema_matcher.rb +14 -0
- data/spec/support/devise.rb +10 -0
- data/spec/workers/supplejack_api/daily_metrics_worker_spec.rb +140 -0
- data/spec/workers/supplejack_api/flush_old_records_worker_spec.rb +20 -0
- data/spec/workers/supplejack_api/index_worker_spec.rb +52 -0
- data/spec/workers/supplejack_api/source_index_worker_spec.rb +61 -0
- metadata +1231 -0
@@ -0,0 +1,119 @@
|
|
1
|
+
[
|
2
|
+
{
|
3
|
+
"name": "Colin McCahon",
|
4
|
+
"prefLabel": "Colin McCahon",
|
5
|
+
"altLabel": [],
|
6
|
+
"dateOfBirth": "1919-12-03T00:00:00",
|
7
|
+
"dateOfDeath": "1987-01-27T00:00:00",
|
8
|
+
"biographicalInformation": "Colin McCahon (12 March 1919 – 25 January 1987), known as Colin McKenzie after 1941, was a New Zealand painter. Along with Colin McCahon and Toss Woollaston, she is credited as one of the leading figures in twentieth century New Zealand art.",
|
9
|
+
"source_id": "tepapa",
|
10
|
+
"source_name": "Te Papa - Museum of New Zealand",
|
11
|
+
"url": "http://collections.tepapa.govt.nz/Person/1502",
|
12
|
+
"sameAs": [
|
13
|
+
"http://en.wikipedia.org/wiki/Colin_McCahon"
|
14
|
+
],
|
15
|
+
"concept_type": "edm:Agent",
|
16
|
+
"givenName": "Colin",
|
17
|
+
"familyName": "McCahon",
|
18
|
+
"_mn_given_name": "KLN",
|
19
|
+
"_mn_family_name": "MKHN",
|
20
|
+
"birthYear": 1919,
|
21
|
+
"deathYear": 1987,
|
22
|
+
"internal_identifier": "tepapa:1502",
|
23
|
+
"concept_id": 1,
|
24
|
+
"concept_score": 50
|
25
|
+
},
|
26
|
+
{
|
27
|
+
"name": "Colin McCahon",
|
28
|
+
"prefLabel": "Colin McCahon",
|
29
|
+
"altLabel": [],
|
30
|
+
"dateOfBirth": "1919-12-03T00:00:00",
|
31
|
+
"dateOfDeath": "1987-01-27T00:00:00",
|
32
|
+
"biographicalInformation": "",
|
33
|
+
"source_id": "aklart",
|
34
|
+
"source_name": "Auckland Art Gallery",
|
35
|
+
"url": "http://www.aucklandartgallery.com/the-collection/browse-artists/461",
|
36
|
+
"sameAs": [],
|
37
|
+
"concept_type": "edm:Agent",
|
38
|
+
"givenName": "Colin",
|
39
|
+
"familyName": "McCahon",
|
40
|
+
"_mn_given_name": "KLN",
|
41
|
+
"_mn_family_name": "MKHN",
|
42
|
+
"birthYear": 1919,
|
43
|
+
"deathYear": 1987,
|
44
|
+
"internal_identifier": "aklart:867",
|
45
|
+
"concept_id": 1,
|
46
|
+
"concept_score": 50
|
47
|
+
},
|
48
|
+
{
|
49
|
+
"name": "Colin McCahon",
|
50
|
+
"prefLabel": "Colin McCahon",
|
51
|
+
"altLabel": [],
|
52
|
+
"dateOfBirth": "1919-12-03T00:00:00",
|
53
|
+
"dateOfDeath": "1987-01-27T00:00:00",
|
54
|
+
"biographicalInformation": "",
|
55
|
+
"source_id": "teara:5m4",
|
56
|
+
"source_name": "Te Ara",
|
57
|
+
"url": "http://www.teara.govt.nz/en/biographies/5m4/mccahon-colin-john",
|
58
|
+
"sameAs": [],
|
59
|
+
"concept_type": "edm:Agent",
|
60
|
+
"givenName": "Colin",
|
61
|
+
"familyName": "McCahon",
|
62
|
+
"_mn_given_name": "KLN",
|
63
|
+
"_mn_family_name": "MKHN",
|
64
|
+
"birthYear": 1919,
|
65
|
+
"deathYear": 1987,
|
66
|
+
"internal_identifier": "teara:5m4",
|
67
|
+
"concept_id": 1,
|
68
|
+
"concept_score": 50
|
69
|
+
},
|
70
|
+
{
|
71
|
+
"name": "Rita Angus",
|
72
|
+
"prefLabel": "Rita Angus",
|
73
|
+
"altLabel": [
|
74
|
+
"Henrietta Catherine Angus",
|
75
|
+
"Rita McKenzie"
|
76
|
+
],
|
77
|
+
"dateOfBirth": "1908-12-03T00:00:00",
|
78
|
+
"dateOfDeath": "1970-01-27T00:00:00",
|
79
|
+
"biographicalInformation": "Rita Angus (12 March 1908 – 25 January 1970), known as Rita McKenzie after 1941, was a New Zealand painter. Along with Colin McCahon and Toss Woollaston, she is credited as one of the leading figures in twentieth century New Zealand art.",
|
80
|
+
"source_id": "tepapa",
|
81
|
+
"source_name": "Te Papa - Museum of New Zealand",
|
82
|
+
"url": "http://collections.tepapa.govt.nz/Person/74",
|
83
|
+
"sameAs": [
|
84
|
+
"http://en.wikipedia.org/wiki/Rita_Angus"
|
85
|
+
],
|
86
|
+
"concept_type": "edm:Agent",
|
87
|
+
"givenName": "Rita",
|
88
|
+
"familyName": "Angus",
|
89
|
+
"_mn_given_name": "RT",
|
90
|
+
"_mn_family_name": "ANKS",
|
91
|
+
"birthYear": 1908,
|
92
|
+
"deathYear": 1970,
|
93
|
+
"internal_identifier": "tepapa:74",
|
94
|
+
"concept_id": 2,
|
95
|
+
"concept_score": 50
|
96
|
+
},
|
97
|
+
{
|
98
|
+
"name": "Rita Angus",
|
99
|
+
"prefLabel": "Rita Angus",
|
100
|
+
"altLabel": [],
|
101
|
+
"dateOfBirth": "1908-12-03T00:00:00",
|
102
|
+
"dateOfDeath": "1970-01-27T00:00:00",
|
103
|
+
"biographicalInformation": "Rita Angus (12 March 1908 – 25 January 1970), known as Rita McKenzie after 1941, was a New Zealand painter. Along with Colin McCahon and Toss Woollaston, she is credited as one of the leading figures in twentieth century New Zealand art.",
|
104
|
+
"source_id": "aklart",
|
105
|
+
"source_name": "Auckland Art Gallery",
|
106
|
+
"url": "http://www.aucklandartgallery.com/the-collection/browse-artists/461",
|
107
|
+
"sameAs": [],
|
108
|
+
"concept_type": "edm:Agent",
|
109
|
+
"givenName": "Rita",
|
110
|
+
"familyName": "Angus",
|
111
|
+
"_mn_given_name": "RT",
|
112
|
+
"_mn_family_name": "ANKS",
|
113
|
+
"birthYear": 1908,
|
114
|
+
"deathYear": 1970,
|
115
|
+
"internal_identifier": "aklart:461",
|
116
|
+
"concept_id": 2,
|
117
|
+
"concept_score": 50
|
118
|
+
}
|
119
|
+
]
|
@@ -0,0 +1,124 @@
|
|
1
|
+
# The majority of the Supplejack API code is Crown copyright (C) 2014, New Zealand Government,
|
2
|
+
# and is licensed under the GNU General Public License, version 3.
|
3
|
+
# One component is a third party component. See https://github.com/DigitalNZ/supplejack_api for details.
|
4
|
+
#
|
5
|
+
# Supplejack was created by DigitalNZ at the National Library of NZ and
|
6
|
+
# the Department of Internal Affairs. http://digitalnz.org/supplejack
|
7
|
+
|
8
|
+
require 'rails/generators'
|
9
|
+
|
10
|
+
module SupplejackApi
|
11
|
+
module Generators
|
12
|
+
class InstallGenerator < Rails::Generators::Base
|
13
|
+
desc 'Used to install SupplejackApi'
|
14
|
+
class_option :documentation, type: :boolean, default: true, desc: 'Displays documentation after installation'
|
15
|
+
|
16
|
+
source_root(File.expand_path('../../../../spec/dummy/', __FILE__))
|
17
|
+
|
18
|
+
def config_files
|
19
|
+
puts "\nInstalling config files into config/"
|
20
|
+
|
21
|
+
copy_file('config/application.yml.example', 'config/application.yml')
|
22
|
+
copy_file 'config/mongoid.yml'
|
23
|
+
copy_file 'config/resque-pool.yml'
|
24
|
+
copy_file 'config/resque_schedule.yml'
|
25
|
+
copy_file 'config/sunspot.yml'
|
26
|
+
|
27
|
+
puts "\nGenerating secret token"
|
28
|
+
|
29
|
+
inject_into_file('config/application.yml', before: /^\sdevelopment:/) do
|
30
|
+
" SECRET_TOKEN: '#{Digest::SHA1.hexdigest([Time.now, rand].join)}'\n"
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def workers
|
35
|
+
directory 'app/workers'
|
36
|
+
end
|
37
|
+
|
38
|
+
def initializers
|
39
|
+
puts "\nInstalling initializers into config/initializers/"
|
40
|
+
|
41
|
+
copy_file 'config/initializers/devise.rb'
|
42
|
+
copy_file 'config/initializers/kaminari_config.rb'
|
43
|
+
copy_file 'config/initializers/quiet_logger.rb'
|
44
|
+
copy_file 'config/initializers/resque.rb'
|
45
|
+
copy_file 'config/initializers/simple_form.rb'
|
46
|
+
copy_file 'config/initializers/simple_form_foundation.rb'
|
47
|
+
copy_file 'config/initializers/state_machine.rb'
|
48
|
+
copy_file 'config/initializers/sunspot.rb'
|
49
|
+
copy_file 'config/initializers/mongoid.rb'
|
50
|
+
|
51
|
+
directory 'config/locales'
|
52
|
+
end
|
53
|
+
|
54
|
+
def environment_files
|
55
|
+
puts "\nInstalling environment files into config/environments/"
|
56
|
+
|
57
|
+
copy_file 'config/environments/production.rb'
|
58
|
+
gsub_file('config/environments/production.rb', 'Dummy::Application', Rails.application.class.to_s)
|
59
|
+
end
|
60
|
+
|
61
|
+
def solr_config_files
|
62
|
+
puts "\nInstalling Solr config files into solr/"
|
63
|
+
directory 'solr'
|
64
|
+
end
|
65
|
+
|
66
|
+
def mount_engine
|
67
|
+
puts "\nMounting SupplejackApi::Engine at / in config/routes.rb"
|
68
|
+
|
69
|
+
inject_into_file('config/routes.rb', "\n mount SupplejackApi::Engine => '/', as: 'supplejack_api'\n\n", :before => /^end/)
|
70
|
+
end
|
71
|
+
|
72
|
+
def update_gemfile
|
73
|
+
puts "\nAdding dependencies into Gemfile"
|
74
|
+
|
75
|
+
inject_into_file('Gemfile', after: /^gem.*supplejack_api.*/) do
|
76
|
+
string = [""]
|
77
|
+
string << "gem 'sunspot_rails', '~> 2.2.0'"
|
78
|
+
string << "gem 'active_model_serializers', git: 'https://github.com/boost/active_model_serializers.git'"
|
79
|
+
string << "gem 'mongoid_auto_inc', git: 'https://github.com/boost/mongoid_auto_inc.git'"
|
80
|
+
|
81
|
+
string.join("\n")
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
def create_schema
|
86
|
+
puts "\nCreating Schemas in app/supplejack_api/"
|
87
|
+
|
88
|
+
empty_directory 'app/supplejack_api'
|
89
|
+
copy_file 'app/supplejack_api/record_schema.txt', 'app/supplejack_api/record_schema.rb'
|
90
|
+
copy_file 'app/supplejack_api/concept_schema.rb'
|
91
|
+
end
|
92
|
+
|
93
|
+
def add_assets
|
94
|
+
insert_into_file "app/assets/javascripts/application.js", "//= require highcharts/highcharts\n", :after => "jquery_ujs\n"
|
95
|
+
insert_into_file "app/assets/javascripts/application.js", "//= require highcharts/highcharts-more\n", :after => "jquery_ujs\n"
|
96
|
+
insert_into_file "app/assets/javascripts/application.js", "//= require highcharts/highstock\n", :after => "jquery_ujs\n"
|
97
|
+
insert_into_file "app/assets/stylesheets/application.css", "\n *= require supplejack_api/application", :after => "require_self"
|
98
|
+
end
|
99
|
+
|
100
|
+
def documentation
|
101
|
+
if options.documentation?
|
102
|
+
string = []
|
103
|
+
string << 'Welcome to Supplejack API.'
|
104
|
+
string << "Installation process is complete.\n"
|
105
|
+
string << 'In order to have have a working API, follow the steps below:'
|
106
|
+
string << '1. Implement your data schema in app/supplejack_api/schema.rb. See comments for DSL documentation'
|
107
|
+
string << '2. Edit config/application.yml and set all the keys to the correct values for your environments'
|
108
|
+
string << "3. Start Solr via via `bundle exec rake sunspot:solr:start|stop`. Ensure it's working by going to http://localhost:8983/solr/, you should see the Solr dashboard"
|
109
|
+
string << "4. Start the rails console via `bundle exec rails console`. Perform the next commands in the rails console"
|
110
|
+
string << "5. Use a local Solr session so updates are immediate via `Sunspot.session = Sunspot::Rails.build_session`"
|
111
|
+
string << "6. Create a user via `user = SupplejackApi::User.create(email: 'test@example.com', name: 'Test User')`"
|
112
|
+
string << "7. Create a record via `record = SupplejackApi::Record.create(internal_identifier: 'abc123', status: 'active', source_url: 'http://boost.co.nz/')`"
|
113
|
+
string << "8. Add your custom data (from schema.rb) to the record's primary fragment via `record.primary_fragment.<field_name>=<value>`. Then `record.save!`"
|
114
|
+
string << "9. Start the rails server via `bundle exec rails server -p 3000`"
|
115
|
+
string << "10. Retrieve a specific record by going to http://localhost:3000/records/<record.record_id>.json?api_key=<user.api_key>"
|
116
|
+
string << "11. Perform a search by going to http://localhost:3000/records.json?api_key=<user.api_key>"
|
117
|
+
string << "12. You now have a working API!"
|
118
|
+
|
119
|
+
puts string.join("\n")
|
120
|
+
end
|
121
|
+
end
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
# The majority of the Supplejack API code is Crown copyright (C) 2014, New Zealand Government,
|
3
|
+
# and is licensed under the GNU General Public License, version 3.
|
4
|
+
# One component is a third party component. See https://github.com/DigitalNZ/supplejack_api for details.
|
5
|
+
#
|
6
|
+
# Supplejack was created by DigitalNZ at the National Library of NZ and
|
7
|
+
# the Department of Internal Affairs. http://digitalnz.org/supplejack
|
8
|
+
|
9
|
+
#
|
10
|
+
# Save this into your `lib/mongoid/paperclip.rb` file
|
11
|
+
#
|
12
|
+
#
|
13
|
+
require 'paperclip'
|
14
|
+
|
15
|
+
module Paperclip
|
16
|
+
class << self
|
17
|
+
def logger
|
18
|
+
Rails.logger
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
##
|
24
|
+
# the id of mongoid is not integer, correct the id_partitioin.
|
25
|
+
Paperclip.interpolates :id_partition do |attachment, _style|
|
26
|
+
attachment.instance.id.to_s.scan(/.{4}/).join('/')
|
27
|
+
end
|
28
|
+
|
29
|
+
module Mongoid
|
30
|
+
module Paperclip
|
31
|
+
def self.included(base)
|
32
|
+
base.instance_eval do
|
33
|
+
include ::Paperclip
|
34
|
+
include ::Paperclip::Glue
|
35
|
+
|
36
|
+
alias :__mongoid_has_attached_file :has_attached_file
|
37
|
+
|
38
|
+
extend ClassMethods
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
module ClassMethods
|
43
|
+
def has_attached_file(field, options = {})
|
44
|
+
field(:"#{field}_file_name", type: String)
|
45
|
+
field(:"#{field}_content_type", type: String)
|
46
|
+
field(:"#{field}_file_size", type: Integer)
|
47
|
+
field(:"#{field}_updated_at", type: DateTime)
|
48
|
+
|
49
|
+
__mongoid_has_attached_file(field, options)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
# The majority of the Supplejack API code is Crown copyright (C) 2014, New Zealand Government,
|
3
|
+
# and is licensed under the GNU General Public License, version 3.
|
4
|
+
# One component is a third party component. See https://github.com/DigitalNZ/supplejack_api for details.
|
5
|
+
#
|
6
|
+
# Supplejack was created by DigitalNZ at the National Library of NZ and
|
7
|
+
# the Department of Internal Affairs. http://digitalnz.org/supplejack
|
8
|
+
|
9
|
+
# method String#to_a was removed in Mongoid 4
|
10
|
+
# reference: https://github.com/mongoid/mongoid/commit/db84c0972bf4f01019cdfc2e9ab647fb814d3224
|
11
|
+
|
12
|
+
module Mongoid
|
13
|
+
module Extensions
|
14
|
+
module String
|
15
|
+
def to_a
|
16
|
+
[self]
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
# The majority of the Supplejack API code is Crown copyright (C) 2014, New Zealand Government,
|
3
|
+
# and is licensed under the GNU General Public License, version 3.
|
4
|
+
# One component is a third party component. See https://github.com/DigitalNZ/supplejack_api for details.
|
5
|
+
#
|
6
|
+
# Supplejack was created by DigitalNZ at the National Library of NZ and
|
7
|
+
# the Department of Internal Affairs. http://digitalnz.org/supplejack
|
8
|
+
|
9
|
+
require 'sunspot'
|
10
|
+
require 'mongoid'
|
11
|
+
require 'sunspot/rails'
|
12
|
+
|
13
|
+
# == Examples:
|
14
|
+
#
|
15
|
+
# class Post
|
16
|
+
# include Mongoid::Document
|
17
|
+
# field :title
|
18
|
+
#
|
19
|
+
# include Sunspot::Mongoid
|
20
|
+
# searchable do
|
21
|
+
# text :title
|
22
|
+
# end
|
23
|
+
# end
|
24
|
+
#
|
25
|
+
module Sunspot
|
26
|
+
module Mongoid
|
27
|
+
def self.included(base)
|
28
|
+
base.class_eval do
|
29
|
+
extend Sunspot::Rails::Searchable::ActsAsMethods
|
30
|
+
Sunspot::Adapters::DataAccessor.register(DataAccessor, base)
|
31
|
+
Sunspot::Adapters::InstanceAdapter.register(InstanceAdapter, base)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
class InstanceAdapter < Sunspot::Adapters::InstanceAdapter
|
36
|
+
def id
|
37
|
+
@instance.id
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
class DataAccessor < Sunspot::Adapters::DataAccessor
|
42
|
+
def load(id)
|
43
|
+
@clazz.where(id: id).first
|
44
|
+
end
|
45
|
+
|
46
|
+
def load_all(ids)
|
47
|
+
@clazz.where(:id.in => ids)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,72 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
# This was authored by HeyZap (http://www.heyzap.com/) and is available at http://stdout.heyzap.com/2011/08/17/sunspot-resque-session-proxy/
|
3
|
+
|
4
|
+
module Sunspot
|
5
|
+
class ResqueSessionProxy < Sunspot::SessionProxy::AbstractSessionProxy
|
6
|
+
attr_reader :original_session, :batch_size
|
7
|
+
|
8
|
+
delegate :config, :delete_dirty?, :dirty?,
|
9
|
+
:new_search, :search,
|
10
|
+
:new_more_like_this, :more_like_this,
|
11
|
+
:batch, to: :session
|
12
|
+
|
13
|
+
def initialize(session, batch_size = 1000)
|
14
|
+
@original_session = session
|
15
|
+
@batch_size = batch_size
|
16
|
+
end
|
17
|
+
|
18
|
+
alias session original_session
|
19
|
+
|
20
|
+
[:index, :index!, :remove, :remove!].each do |method|
|
21
|
+
define_method(method) do |*objects|
|
22
|
+
@buffer = SupplejackApi::IndexBuffer.new
|
23
|
+
method = method.to_s.delete('!').to_sym
|
24
|
+
|
25
|
+
start = 0
|
26
|
+
objects = objects.flatten.compact
|
27
|
+
object_ids = objects.map { |o| o.id.to_s }.compact
|
28
|
+
total_ids = object_ids + @buffer.pop_record_ids(method)
|
29
|
+
|
30
|
+
if total_ids.size < 100
|
31
|
+
@buffer.send("#{method}_record_ids=", total_ids)
|
32
|
+
else
|
33
|
+
batch_object_ids = total_ids[start..(batch_size - 1)]
|
34
|
+
class_name = objects.first.class.name
|
35
|
+
|
36
|
+
while batch_object_ids do
|
37
|
+
index_worker_args = { class: class_name, id: batch_object_ids }
|
38
|
+
Resque.enqueue(SupplejackApi::IndexWorker, method, index_worker_args) if batch_object_ids.try(:any?)
|
39
|
+
start += batch_size
|
40
|
+
batch_object_ids = total_ids[start..(start + batch_size - 1)]
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
[:remove_by_id, :remove_by_id!].each do |method|
|
47
|
+
define_method(method) do |clazz, id|
|
48
|
+
Resque.enqueue(SupplejackApi::IndexWorker, method, class: clazz, id: id.to_s)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def remove_all(clazz = nil)
|
53
|
+
Resque.enqueue SupplejackApi::IndexWorker, :remove_all, clazz.to_s
|
54
|
+
end
|
55
|
+
|
56
|
+
def remove_all!(clazz = nil)
|
57
|
+
Resque.enqueue SupplejackApi::IndexWorker, :remove_all, clazz.to_s
|
58
|
+
end
|
59
|
+
|
60
|
+
def commit(_soft_commit = false)
|
61
|
+
Resque.enqueue(SupplejackApi::IndexWorker, :commit)
|
62
|
+
end
|
63
|
+
|
64
|
+
def commit_if_dirty(soft_commit = false)
|
65
|
+
# no-op
|
66
|
+
end
|
67
|
+
|
68
|
+
def commit_if_delete_dirty(soft_commit = false)
|
69
|
+
# no-op
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
@@ -0,0 +1,98 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
# The majority of the Supplejack API code is Crown copyright (C) 2014, New Zealand Government,
|
3
|
+
# and is licensed under the GNU General Public License, version 3.
|
4
|
+
# One component is a third party component. See https://github.com/DigitalNZ/supplejack_api for details.
|
5
|
+
#
|
6
|
+
# Supplejack was created by DigitalNZ at the National Library of NZ and
|
7
|
+
# the Department of Internal Affairs. http://digitalnz.org/supplejack
|
8
|
+
|
9
|
+
module Sunspot
|
10
|
+
module Query
|
11
|
+
class Spellcheck < Connective::Conjunction
|
12
|
+
attr_accessor :options
|
13
|
+
|
14
|
+
def initialize(options = {})
|
15
|
+
@options = options
|
16
|
+
end
|
17
|
+
|
18
|
+
def to_params
|
19
|
+
options = {}
|
20
|
+
@options.each do |key, val|
|
21
|
+
options['spellcheck.' + Sunspot::Util.method_case(key)] = val
|
22
|
+
end
|
23
|
+
{ spellcheck: true }.merge(options)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
module Sunspot
|
30
|
+
module Query
|
31
|
+
class CommonQuery
|
32
|
+
def spellcheck(options = {})
|
33
|
+
@components << Spellcheck.new(options)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
module Sunspot
|
40
|
+
module Search
|
41
|
+
class AbstractSearch
|
42
|
+
attr_accessor :solr_result
|
43
|
+
|
44
|
+
def raw_suggestions
|
45
|
+
%w(spellcheck suggestions).inject(@solr_result) { |h, k| h && h[k] }
|
46
|
+
end
|
47
|
+
|
48
|
+
def suggestions
|
49
|
+
suggestions = %w(spellcheck suggestions).inject(@solr_result) { |h, k| h && h[k] }
|
50
|
+
return nil unless suggestions.is_a?(Array)
|
51
|
+
|
52
|
+
suggestions_hash = {}
|
53
|
+
index = -1
|
54
|
+
suggestions.each do |sug|
|
55
|
+
index += 1
|
56
|
+
next unless sug.is_a?(String)
|
57
|
+
break unless suggestions.count > index + 1
|
58
|
+
suggestions_hash[sug] = suggestions[index + 1].try(:[], 'suggestion') || suggestions[index + 1]
|
59
|
+
end
|
60
|
+
suggestions_hash
|
61
|
+
end
|
62
|
+
|
63
|
+
def all_suggestions
|
64
|
+
suggestions.inject([]) { |all, current| all += current }
|
65
|
+
end
|
66
|
+
|
67
|
+
def collation
|
68
|
+
suggestions.try(:[], 'collation')
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
module Sunspot
|
75
|
+
module DSL
|
76
|
+
class StandardQuery
|
77
|
+
def spellcheck(options = {})
|
78
|
+
@query.spellcheck(options)
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
module Sunspot
|
85
|
+
module Util
|
86
|
+
class<<self
|
87
|
+
def method_case(string_or_symbol)
|
88
|
+
string = string_or_symbol.to_s
|
89
|
+
first = true
|
90
|
+
string.split('_').map! do |word|
|
91
|
+
word = first ? word : word.capitalize
|
92
|
+
first = false
|
93
|
+
word
|
94
|
+
end.join
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|