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,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module SupplejackApi
|
3
|
+
module Concerns
|
4
|
+
module RecordsControllerMetrics
|
5
|
+
extend ActiveSupport::Concern
|
6
|
+
include IgnoreMetrics
|
7
|
+
|
8
|
+
included do
|
9
|
+
after_action :log_search, only: :index
|
10
|
+
after_action :log_record_view, only: :show
|
11
|
+
|
12
|
+
def log_search
|
13
|
+
return unless @search.valid? && log_request_for_metrics?
|
14
|
+
|
15
|
+
SupplejackApi::InteractionModels::Record.create_search(@search)
|
16
|
+
end
|
17
|
+
|
18
|
+
def log_record_view
|
19
|
+
return unless log_request_for_metrics?
|
20
|
+
|
21
|
+
SupplejackApi::InteractionModels::Record.create_find(@record)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module SupplejackApi
|
3
|
+
module Concerns
|
4
|
+
module SetItemsControllerMetrics
|
5
|
+
extend ActiveSupport::Concern
|
6
|
+
include IgnoreMetrics
|
7
|
+
|
8
|
+
included do
|
9
|
+
before_action :create_set_interaction, only: :create
|
10
|
+
|
11
|
+
def create_set_interaction
|
12
|
+
return unless log_request_for_metrics?
|
13
|
+
|
14
|
+
record = SupplejackApi::Record.custom_find(params[:record][:record_id])
|
15
|
+
SupplejackApi::InteractionModels::Set.create(interaction_type: :creation, facet: record.display_collection)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module SupplejackApi
|
3
|
+
module Concerns
|
4
|
+
module UserSetsControllerMetrics
|
5
|
+
extend ActiveSupport::Concern
|
6
|
+
include IgnoreMetrics
|
7
|
+
|
8
|
+
included do
|
9
|
+
after_action :create_set_record_view, only: :show
|
10
|
+
after_action :create_set_interaction, only: :create
|
11
|
+
|
12
|
+
def create_set_record_view
|
13
|
+
return unless @user_set && log_request_for_metrics?
|
14
|
+
|
15
|
+
SupplejackApi::InteractionModels::Record.create_user_set(@user_set)
|
16
|
+
end
|
17
|
+
|
18
|
+
def create_set_interaction
|
19
|
+
return unless @user_set && log_request_for_metrics?
|
20
|
+
record = SupplejackApi::Record.custom_find(@user_set.set_items.first.record_id)
|
21
|
+
SupplejackApi::InteractionModels::Set.create(interaction_type: :creation, facet: record.display_collection)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,41 @@
|
|
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 SupplejackApi
|
10
|
+
module Harvester
|
11
|
+
class ConceptsController < ActionController::Base
|
12
|
+
respond_to :json
|
13
|
+
|
14
|
+
def create
|
15
|
+
if params[:preview]
|
16
|
+
klass = SupplejackApi::PreviewRecord
|
17
|
+
attribute = :record_id
|
18
|
+
else
|
19
|
+
klass = SupplejackApi::Concept
|
20
|
+
attribute = :concept_id
|
21
|
+
end
|
22
|
+
|
23
|
+
@concept = klass.find_or_initialize_by_identifier(params[:concept])
|
24
|
+
@concept.set_status(params[:required_fragments])
|
25
|
+
@concept.create_or_update_fragment(params[:concept])
|
26
|
+
@concept.save
|
27
|
+
@concept.unset_null_fields
|
28
|
+
|
29
|
+
render json: { attribute => @concept.concept_id }
|
30
|
+
end
|
31
|
+
|
32
|
+
def update
|
33
|
+
@concept = Concept.custom_find(params[:id], nil, status: :all)
|
34
|
+
if params[:concept].present? && params[:concept][:status].present?
|
35
|
+
@concept.update_attribute(:status, params[:concept][:status])
|
36
|
+
end
|
37
|
+
respond_with @concept
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,30 @@
|
|
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 SupplejackApi
|
10
|
+
module Harvester
|
11
|
+
class FragmentsController < ActionController::Base
|
12
|
+
respond_to :json
|
13
|
+
|
14
|
+
def create
|
15
|
+
klass = params[:preview] ? PreviewRecord : Record
|
16
|
+
@record = klass.find(params[:record_id])
|
17
|
+
@record.create_or_update_fragment(params[:fragment])
|
18
|
+
@record.set_status(params[:required_fragments])
|
19
|
+
@record.save
|
20
|
+
render json: { record_id: @record.record_id }
|
21
|
+
end
|
22
|
+
|
23
|
+
def destroy
|
24
|
+
SupplejackApi::Record.where("fragments.source_id": params[:id])
|
25
|
+
.update_all('$pull' => { fragments: { source_id: params[:id] } })
|
26
|
+
respond_with
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,68 @@
|
|
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 SupplejackApi
|
10
|
+
module Harvester
|
11
|
+
class RecordsController < ActionController::Base
|
12
|
+
respond_to :json
|
13
|
+
|
14
|
+
def create
|
15
|
+
klass = params[:preview] ? SupplejackApi::PreviewRecord : SupplejackApi::Record
|
16
|
+
@record = klass.find_or_initialize_by_identifier(params[:record])
|
17
|
+
|
18
|
+
# In the long run this condition shouldn't be here.
|
19
|
+
# It's because the data_handler interfaces are using update_from_harvest,
|
20
|
+
# and clear_attributes that I can't factor it back in.
|
21
|
+
if params[:record][:priority] && params[:record][:priority].to_i.nonzero?
|
22
|
+
@record.create_or_update_fragment(params[:record])
|
23
|
+
else
|
24
|
+
@record.clear_attributes
|
25
|
+
@record.update_from_harvest(params[:record])
|
26
|
+
end
|
27
|
+
|
28
|
+
@record.set_status(params[:required_fragments])
|
29
|
+
@record.save
|
30
|
+
@record.unset_null_fields
|
31
|
+
render json: { record_id: @record.record_id }
|
32
|
+
end
|
33
|
+
|
34
|
+
def flush
|
35
|
+
Resque.enqueue(FlushOldRecordsWorker, params[:source_id], params[:job_id])
|
36
|
+
render nothing: true, status: 204
|
37
|
+
end
|
38
|
+
|
39
|
+
def delete
|
40
|
+
@record = Record.where(internal_identifier: params[:id]).first
|
41
|
+
@record.update_attribute(:status, 'deleted') if @record.present?
|
42
|
+
render nothing: true, status: 204
|
43
|
+
end
|
44
|
+
|
45
|
+
def update
|
46
|
+
@record = Record.custom_find(params[:id], nil, status: :all)
|
47
|
+
if params[:record].present? && params[:record][:status].present?
|
48
|
+
@record.update_attribute(:status, params[:record][:status])
|
49
|
+
end
|
50
|
+
respond_with @record
|
51
|
+
end
|
52
|
+
|
53
|
+
def show
|
54
|
+
@record = Record.where(record_id: params[:id]).first
|
55
|
+
|
56
|
+
if @record.present?
|
57
|
+
render json: {
|
58
|
+
record_id: @record.record_id,
|
59
|
+
title: @record.title,
|
60
|
+
status: @record.status
|
61
|
+
}.to_json
|
62
|
+
else
|
63
|
+
render nothing: true, status: 204
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module SupplejackApi
|
3
|
+
class MetricsApiController < ApplicationController
|
4
|
+
skip_before_action :authenticate_user!
|
5
|
+
|
6
|
+
API_VERSIONS = {
|
7
|
+
'v3' => MetricsApi::V3::Api
|
8
|
+
}.freeze
|
9
|
+
|
10
|
+
def root
|
11
|
+
render_response(:root)
|
12
|
+
end
|
13
|
+
|
14
|
+
def facets
|
15
|
+
render_response(:facets)
|
16
|
+
end
|
17
|
+
|
18
|
+
def global
|
19
|
+
render_response(:global)
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
def render_response(endpoint)
|
25
|
+
api_version = params[:version]
|
26
|
+
api = API_VERSIONS[api_version].new(params.dup, endpoint)
|
27
|
+
|
28
|
+
api_response = api.call
|
29
|
+
|
30
|
+
handle_errors(api_response)
|
31
|
+
|
32
|
+
# don't double render if we've already rendered an exception
|
33
|
+
render json: api_response.to_json(include_root: false) unless performed?
|
34
|
+
end
|
35
|
+
|
36
|
+
def handle_errors(api_response)
|
37
|
+
return unless api_response.is_a? Hash
|
38
|
+
|
39
|
+
ex = api_response[:exception]
|
40
|
+
|
41
|
+
render json: { errors: ex[:message] }, status: ex[:status]
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,39 @@
|
|
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 SupplejackApi
|
10
|
+
class PartnersController < ActionController::Base
|
11
|
+
respond_to :json
|
12
|
+
|
13
|
+
def create
|
14
|
+
if params[:partner][:_id].present?
|
15
|
+
@partner = Partner.find_or_initialize_by(_id: params[:partner][:_id])
|
16
|
+
@partner.update_attributes(params[:partner])
|
17
|
+
else
|
18
|
+
@partner = Partner.create(params[:partner])
|
19
|
+
end
|
20
|
+
render json: @partner
|
21
|
+
end
|
22
|
+
|
23
|
+
def show
|
24
|
+
@partner = Partner.find params[:id]
|
25
|
+
render json: @partner
|
26
|
+
end
|
27
|
+
|
28
|
+
def index
|
29
|
+
@partners = Partner.all
|
30
|
+
render json: @partners
|
31
|
+
end
|
32
|
+
|
33
|
+
def update
|
34
|
+
@partner = Partner.find(params[:id])
|
35
|
+
@partner.update_attributes(params[:partner])
|
36
|
+
render json: @partner
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,71 @@
|
|
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 SupplejackApi
|
10
|
+
class RecordsController < ApplicationController
|
11
|
+
include SupplejackApi::Concerns::RecordsControllerMetrics
|
12
|
+
|
13
|
+
skip_before_action :authenticate_user!, only: [:source, :status]
|
14
|
+
before_action :set_concept_param, only: :index
|
15
|
+
respond_to :json, :xml, :rss
|
16
|
+
|
17
|
+
def index
|
18
|
+
@search = SupplejackApi::RecordSearch.new(params)
|
19
|
+
@search.request_url = request.original_url
|
20
|
+
@search.scope = current_user
|
21
|
+
|
22
|
+
begin
|
23
|
+
if @search.valid?
|
24
|
+
respond_with @search, serializer: RecordSearchSerializer
|
25
|
+
else
|
26
|
+
render request.format.to_sym => { errors: @search.errors }, status: :bad_request
|
27
|
+
end
|
28
|
+
rescue RSolr::Error::Http => e
|
29
|
+
render request.format.to_sym => { errors: solr_error_message(e) }, status: :bad_request
|
30
|
+
rescue Sunspot::UnrecognizedFieldError => e
|
31
|
+
render request.format.to_sym => { errors: e.to_s }, status: :bad_request
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def status
|
36
|
+
render nothing: true
|
37
|
+
end
|
38
|
+
|
39
|
+
def show
|
40
|
+
@record = SupplejackApi::Record.custom_find(params[:id], current_user, params[:search])
|
41
|
+
respond_with @record, serializer: RecordSerializer
|
42
|
+
rescue Mongoid::Errors::DocumentNotFound
|
43
|
+
render request.format.to_sym => { errors: "Record with ID #{params[:id]} was not found" }, status: :not_found
|
44
|
+
end
|
45
|
+
|
46
|
+
def multiple
|
47
|
+
@records = Record.find_multiple(params[:record_ids])
|
48
|
+
respond_with @records
|
49
|
+
end
|
50
|
+
|
51
|
+
# This options are merged with the serializer options. Which will allow the serializer
|
52
|
+
# to know which fields to render for a specific request
|
53
|
+
#
|
54
|
+
def default_serializer_options
|
55
|
+
default_options = {}
|
56
|
+
@search ||= SupplejackApi::RecordSearch.new(params)
|
57
|
+
default_options[:fields] = @search.field_list if @search.field_list.present?
|
58
|
+
default_options[:groups] = @search.group_list if @search.group_list.present?
|
59
|
+
default_options
|
60
|
+
end
|
61
|
+
|
62
|
+
private
|
63
|
+
|
64
|
+
def set_concept_param
|
65
|
+
if params[:concept_id].present?
|
66
|
+
params[:and] ||= {}
|
67
|
+
params[:and][:concept_id] = params[:concept_id]
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
@@ -0,0 +1,19 @@
|
|
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 SupplejackApi
|
10
|
+
class SchemaController < ApplicationController
|
11
|
+
skip_before_filter :authenticate_user!
|
12
|
+
respond_to :json, :xml
|
13
|
+
|
14
|
+
def show
|
15
|
+
@schema_fields = Concept.build_context(ConceptSchema.model_fields.keys)
|
16
|
+
respond_with @schema_fields
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,38 @@
|
|
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 SupplejackApi
|
10
|
+
class SetItemsController < ApplicationController
|
11
|
+
include SupplejackApi::Concerns::SetItemsControllerMetrics
|
12
|
+
|
13
|
+
before_filter :find_user_set
|
14
|
+
|
15
|
+
respond_to :json
|
16
|
+
|
17
|
+
def create
|
18
|
+
@set_item = @user_set.set_items.build(record_params)
|
19
|
+
@user_set.save
|
20
|
+
respond_with @user_set, @set_item
|
21
|
+
end
|
22
|
+
|
23
|
+
def destroy
|
24
|
+
@set_item = @user_set.set_items.find_by_record_id(params[:id])
|
25
|
+
if @set_item
|
26
|
+
@set_item.destroy
|
27
|
+
@user_set.save
|
28
|
+
respond_with @user_set, @set_item
|
29
|
+
else
|
30
|
+
render json: { errors: "The record with id: #{params[:id]} was not found." }, status: :not_found
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def record_params
|
35
|
+
params.require(:record).permit(:record_id)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|