supplejack_api 1
Sign up to get free protection for your applications and to get access to all the features.
- 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,28 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module MetricsApi
|
3
|
+
module V3
|
4
|
+
module Presenters
|
5
|
+
# Presents a +SupplejackApi::UsageMetrics+ ready to be returned via the API
|
6
|
+
class View
|
7
|
+
def initialize(metric)
|
8
|
+
@m = metric
|
9
|
+
end
|
10
|
+
|
11
|
+
def to_json
|
12
|
+
{
|
13
|
+
id: @m.record_field_value,
|
14
|
+
searches: @m.searches,
|
15
|
+
record_page_views: @m.gets,
|
16
|
+
user_set_views: @m.user_set_views,
|
17
|
+
total_views: @m.total_views,
|
18
|
+
records_added_to_user_sets: @m.records_added_to_user_sets
|
19
|
+
}
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.to_proc
|
23
|
+
->(metric) { new(metric).to_json }
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
<%#
|
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
|
+
<head>
|
11
|
+
<title>SupplejackApi</title>
|
12
|
+
<meta charset="utf-8" />
|
13
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
14
|
+
<%= stylesheet_link_tag "supplejack_api/application", :media => "all" %>
|
15
|
+
<%= javascript_include_tag "supplejack_api/application" %>
|
16
|
+
<%= csrf_meta_tags %>
|
17
|
+
</head>
|
@@ -0,0 +1,33 @@
|
|
1
|
+
<%#
|
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
|
+
<div class="top-bar" data-topbar>
|
11
|
+
<div class="row">
|
12
|
+
<ul class="title-area">
|
13
|
+
<li class="name">
|
14
|
+
<h1><%= link_to t('admin.title'), '#' %></h1>
|
15
|
+
</li>
|
16
|
+
</ul>
|
17
|
+
|
18
|
+
<% if admin_user_signed_in? %>
|
19
|
+
<section class="top-bar-section">
|
20
|
+
<!-- Right Nav Section -->
|
21
|
+
<ul class="right">
|
22
|
+
<li><%= link_to t('users.log_out'), destroy_admin_user_session_path, method: :delete %></li>
|
23
|
+
</ul>
|
24
|
+
|
25
|
+
<!-- Left Nav Section -->
|
26
|
+
<ul class="left">
|
27
|
+
<li><%= link_to t('users.title'), admin_users_path %></li>
|
28
|
+
<li><%= link_to t('site_activities.title'), admin_site_activities_path %></li>
|
29
|
+
</ul>
|
30
|
+
</section>
|
31
|
+
<% end %>
|
32
|
+
</div>
|
33
|
+
</div>
|
@@ -0,0 +1,33 @@
|
|
1
|
+
<%#
|
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
|
+
<!DOCTYPE html>
|
11
|
+
<!-- paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/ -->
|
12
|
+
<!--[if lt IE 7 ]> <html class="ie6" lang="en"> <![endif]-->
|
13
|
+
<!--[if IE 7 ]> <html class="ie7" lang="en"> <![endif]-->
|
14
|
+
<!--[if IE 8 ]> <html class="ie8" lang="en"> <![endif]-->
|
15
|
+
<!--[if (gte IE 9)|!(IE)]><!--> <html lang="en"> <!--<![endif]-->
|
16
|
+
<%= render 'layouts/supplejack_api/head' %>
|
17
|
+
<body>
|
18
|
+
<%= render 'layouts/supplejack_api/top_nav' %>
|
19
|
+
|
20
|
+
<%= flash.map do |type, message|
|
21
|
+
type = :success if type.to_s == "notice"
|
22
|
+
content_tag(:div, message, class: "alert-box #{type} margin-top")
|
23
|
+
end.join.html_safe
|
24
|
+
%>
|
25
|
+
|
26
|
+
<div class="row">
|
27
|
+
<br />
|
28
|
+
<%= yield %>
|
29
|
+
</div>
|
30
|
+
|
31
|
+
<footer></footer>
|
32
|
+
</body>
|
33
|
+
</html>
|
@@ -0,0 +1,25 @@
|
|
1
|
+
<%#
|
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
|
+
<div class="row">
|
11
|
+
<h2>Sign in</h2>
|
12
|
+
|
13
|
+
<%= simple_form_for(resource, :as => resource_name, :url => session_path(resource_name)) do |f| %>
|
14
|
+
<div class="form-inputs">
|
15
|
+
<%= f.input :email, :required => false, :autofocus => true %>
|
16
|
+
<%= f.input :password, :required => false %>
|
17
|
+
</div>
|
18
|
+
|
19
|
+
<div class="form-actions">
|
20
|
+
<%= f.button :submit, 'Sign in', class: 'button' %>
|
21
|
+
</div>
|
22
|
+
<% end %>
|
23
|
+
|
24
|
+
<%= render 'supplejack_api/admin/shared/links' %>
|
25
|
+
</div>
|
@@ -0,0 +1,34 @@
|
|
1
|
+
<%#
|
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
|
+
<%- if controller_name != 'sessions' %>
|
11
|
+
<%= link_to "Sign in", new_session_path(resource_name) %><br />
|
12
|
+
<% end -%>
|
13
|
+
|
14
|
+
<%- if devise_mapping.registerable? && controller_name != 'registrations' %>
|
15
|
+
<%= link_to "Sign up", new_registration_path(resource_name) %><br />
|
16
|
+
<% end -%>
|
17
|
+
|
18
|
+
<%- if devise_mapping.recoverable? && controller_name != 'passwords' %>
|
19
|
+
<%= link_to "Forgot your password?", new_password_path(resource_name) %><br />
|
20
|
+
<% end -%>
|
21
|
+
|
22
|
+
<%- if devise_mapping.confirmable? && controller_name != 'confirmations' %>
|
23
|
+
<%= link_to "Didn't receive confirmation instructions?", new_confirmation_path(resource_name) %><br />
|
24
|
+
<% end -%>
|
25
|
+
|
26
|
+
<%- if devise_mapping.lockable? && resource_class.unlock_strategy_enabled?(:email) && controller_name != 'unlocks' %>
|
27
|
+
<%= link_to "Didn't receive unlock instructions?", new_unlock_path(resource_name) %><br />
|
28
|
+
<% end -%>
|
29
|
+
|
30
|
+
<%- if devise_mapping.omniauthable? %>
|
31
|
+
<%- resource_class.omniauth_providers.each do |provider| %>
|
32
|
+
<%= link_to "Sign in with #{provider.to_s.titleize}", omniauth_authorize_path(resource_name, provider) %><br />
|
33
|
+
<% end -%>
|
34
|
+
<% end -%>
|
@@ -0,0 +1,22 @@
|
|
1
|
+
<%#
|
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
|
+
<%-
|
11
|
+
require 'csv'
|
12
|
+
|
13
|
+
csv_output = CSV.generate(:col_sep => ",") do |csv|
|
14
|
+
columns = SupplejackApi::SiteActivity.activities
|
15
|
+
|
16
|
+
csv << columns
|
17
|
+
SupplejackApi::SiteActivity.all.each do |site_activity|
|
18
|
+
csv << columns.map {|c| site_activity.send(c) }
|
19
|
+
end
|
20
|
+
end
|
21
|
+
%>
|
22
|
+
<%= csv_output.html_safe %>
|
@@ -0,0 +1,54 @@
|
|
1
|
+
<%#
|
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
|
+
<div class="row">
|
11
|
+
<div class="large-12 columns">
|
12
|
+
<div class="left">
|
13
|
+
<h1><%= t('site_activities.title') %></h1>
|
14
|
+
</div>
|
15
|
+
<div class="right">
|
16
|
+
<%= link_to t('admin.download_csv'), admin_site_activities_path(format: :csv), class: 'button' %>
|
17
|
+
</div>
|
18
|
+
</div>
|
19
|
+
</div>
|
20
|
+
|
21
|
+
<div class="row">
|
22
|
+
<div class="large-12 columns">
|
23
|
+
<div class="site-activities">
|
24
|
+
<table class="table">
|
25
|
+
<thead>
|
26
|
+
<tr>
|
27
|
+
<% SupplejackApi::SiteActivity.activities.each do |activity| %>
|
28
|
+
<th><%= sortable 'site_activity', activity.to_s %></th>
|
29
|
+
<% end %>
|
30
|
+
</tr>
|
31
|
+
</thead>
|
32
|
+
|
33
|
+
<tbody>
|
34
|
+
<% @site_activities.each do |activity| %>
|
35
|
+
<tr>
|
36
|
+
<td><%= l(activity.date) %></td>
|
37
|
+
<td><%= number_with_delimiter activity.search %></td>
|
38
|
+
<td><%= number_with_delimiter activity.user_sets %></td>
|
39
|
+
<td><%= number_with_delimiter activity.records %></td>
|
40
|
+
<td><%= number_with_delimiter activity.source_clicks %></td>
|
41
|
+
<td><%= number_with_delimiter activity.total %></td>
|
42
|
+
</tr>
|
43
|
+
<% end %>
|
44
|
+
</tbody>
|
45
|
+
</table>
|
46
|
+
</div>
|
47
|
+
</div>
|
48
|
+
</div>
|
49
|
+
|
50
|
+
<div class="row">
|
51
|
+
<div class="large-12 columns">
|
52
|
+
<%= paginate @site_activities %>
|
53
|
+
</div>
|
54
|
+
</div>
|
@@ -0,0 +1,16 @@
|
|
1
|
+
<%#
|
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
|
+
<div class="row">
|
11
|
+
<%= simple_form_for @user, url: admin_user_path(@user.id) do |f| %>
|
12
|
+
<h3><%= @user.email || @user.api_key %></h2>
|
13
|
+
<%= f.input :max_requests %>
|
14
|
+
<%= f.button :submit %>
|
15
|
+
<% end %>
|
16
|
+
</div>
|
@@ -0,0 +1,22 @@
|
|
1
|
+
<%#
|
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
|
+
<%-
|
11
|
+
require 'csv'
|
12
|
+
|
13
|
+
csv_output = CSV.generate(:col_sep => ",") do |csv|
|
14
|
+
columns = [:username, :name, :authentication_token, :email, :role, :daily_requests, :monthly_requests]
|
15
|
+
|
16
|
+
csv << columns
|
17
|
+
SupplejackApi::User.all.each do |user|
|
18
|
+
csv << columns.map {|c| user.send(c) }
|
19
|
+
end
|
20
|
+
end
|
21
|
+
%>
|
22
|
+
<%= csv_output.html_safe %>
|
@@ -0,0 +1,57 @@
|
|
1
|
+
<%#
|
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
|
+
<div class="row">
|
11
|
+
<div class="large-12 columns">
|
12
|
+
<div class="left">
|
13
|
+
<h1><%= t('users.title') %></h1>
|
14
|
+
</div>
|
15
|
+
<div class="right">
|
16
|
+
<%= link_to t('admin.download_csv'), admin_users_path(format: :csv), class: 'button' %>
|
17
|
+
</div>
|
18
|
+
</div>
|
19
|
+
</div>
|
20
|
+
|
21
|
+
<div class="row">
|
22
|
+
<div class="large-12 columns">
|
23
|
+
<div class="users">
|
24
|
+
<table class="table">
|
25
|
+
<thead>
|
26
|
+
<tr>
|
27
|
+
<th><%= sortable 'user', 'username' %></th>
|
28
|
+
<th><%= sortable 'user', 'name' %></th>
|
29
|
+
<th><%= sortable 'user', 'authentication_token' %></th>
|
30
|
+
<th><%= sortable 'user', 'email' %></th>
|
31
|
+
<th><%= sortable 'user', 'role' %></th>
|
32
|
+
<th><%= sortable 'user', 'daily_requests' %></th>
|
33
|
+
<th><%= sortable 'user', 'monthly_requests' %></th>
|
34
|
+
<th><%= sortable 'user', 'max_requests' %></th>
|
35
|
+
</tr>
|
36
|
+
</thead>
|
37
|
+
|
38
|
+
<tbody>
|
39
|
+
<% @users.each do |user| %>
|
40
|
+
<tr>
|
41
|
+
<td><%= user.username %></td>
|
42
|
+
<td><%= user.name %></td>
|
43
|
+
<td><%= link_to user.authentication_token, admin_user_path(user.id) %></td>
|
44
|
+
<td><%= user.email %></td>
|
45
|
+
<td><%= user.role %></td>
|
46
|
+
<td><%= number_with_delimiter user.daily_requests %></td>
|
47
|
+
<td><%= number_with_delimiter user.monthly_requests %></td>
|
48
|
+
<td><%= link_to user.max_requests, edit_admin_user_path(user.id) %></td>
|
49
|
+
</tr>
|
50
|
+
<% end %>
|
51
|
+
</tbody>
|
52
|
+
</table>
|
53
|
+
</div>
|
54
|
+
|
55
|
+
<%= paginate @users %>
|
56
|
+
</div>
|
57
|
+
</div>
|
@@ -0,0 +1,33 @@
|
|
1
|
+
<%#
|
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
|
+
<div class="row">
|
11
|
+
<div class="large-4 columns">
|
12
|
+
<h3><%= t('users.name') %></h3>
|
13
|
+
<h4 class="subheader"><%= @user.name %></h4>
|
14
|
+
</div>
|
15
|
+
|
16
|
+
<div class="large-4 columns">
|
17
|
+
<h3><%= t('users.username') %></h3>
|
18
|
+
<h4 class="subheader"><%= @user.username %></h4>
|
19
|
+
</div>
|
20
|
+
|
21
|
+
<div class="large-4 columns">
|
22
|
+
<h3><%= t('users.email') %></h3>
|
23
|
+
<h4 class="subheader"><%= @user.email %></h4>
|
24
|
+
</div>
|
25
|
+
</div>
|
26
|
+
|
27
|
+
<hr/>
|
28
|
+
|
29
|
+
<div class="row">
|
30
|
+
<div class="large-12 columns">
|
31
|
+
<%= high_chart('api_requests', @api_requests) %>
|
32
|
+
</div>
|
33
|
+
</div>
|
@@ -0,0 +1,13 @@
|
|
1
|
+
Dear DigitalNZ developer,
|
2
|
+
|
3
|
+
The DigitalNZ account associated with this email address currently has a limit of <%= @limit %> DigitalNZ API calls per day. You exceeded this number API requests today. This might have happened because you have created an application that many people are using or because you have edited a large number of sets.
|
4
|
+
|
5
|
+
Your API key is unable to make further requests until tomorrow.
|
6
|
+
|
7
|
+
We encourage you to get in contact with us to discuss a higher daily rate. Drop us an email to develop@digitalnz.org and we'll get back to you as soon as we can.
|
8
|
+
|
9
|
+
For the DigitalNZ API Terms of Use see: http://www.digitalnz.org/about/terms-of-use/developer-api-terms-of-use
|
10
|
+
General DigitalNZ information for developers: http://www.digitalnz.org/developers
|
11
|
+
|
12
|
+
All the best,
|
13
|
+
DigitalNZ
|
@@ -0,0 +1 @@
|
|
1
|
+
The DigitalNZ account for <%= @email %> has exceeded it's daily limit of <%= @limit %>.
|
@@ -0,0 +1,13 @@
|
|
1
|
+
Dear DigitalNZ developer,
|
2
|
+
|
3
|
+
The DigitalNZ account associated with this email address currently has a limit of <%= @limit %> DigitalNZ API calls per day. So far today, you have used 90% of these API requests. This might have happened because you have created an application that many people are using or because you have edited a large number of sets.
|
4
|
+
|
5
|
+
If you exceed <%= @limit %> API calls today you will be unable to make anymore requests until tomorrow.
|
6
|
+
|
7
|
+
We encourage you to get in contact with us to discuss a higher daily rate. Drop us an email to develop@digitalnz.org and we'll get back to you as soon as we can.
|
8
|
+
|
9
|
+
For the DigitalNZ API Terms of Use see: http://www.digitalnz.org/about/terms-of-use/developer-api-terms-of-use
|
10
|
+
General DigitalNZ information for developers: http://www.digitalnz.org/developers
|
11
|
+
|
12
|
+
All the best,
|
13
|
+
DigitalNZ
|
@@ -0,0 +1 @@
|
|
1
|
+
The DigitalNZ account for <%= @email %> has used 90% of it's daily limit of <%= @limit %>.
|
@@ -0,0 +1,112 @@
|
|
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 DailyMetricsWorker
|
11
|
+
attr_reader :primary_key, :secondary_keys
|
12
|
+
@queue = :daily_metrics
|
13
|
+
|
14
|
+
def initialize
|
15
|
+
# configuration for metrics logging
|
16
|
+
# the primary_key is what the records get grouped on
|
17
|
+
# the secondary_keys are the fields counted, they must be multivalue fields
|
18
|
+
# if the secondary_keys are changed the FacetedMetrics model must be updated
|
19
|
+
# so that the field names match the new secondary_key names (the name must have '_counts' appended to it)
|
20
|
+
@primary_key = 'display_collection'
|
21
|
+
@secondary_keys = %w(
|
22
|
+
category
|
23
|
+
copyright
|
24
|
+
)
|
25
|
+
end
|
26
|
+
|
27
|
+
def self.perform
|
28
|
+
new.call
|
29
|
+
end
|
30
|
+
|
31
|
+
# Uses +SupplejackApi::RecordSearch+ to query the API for metrics information
|
32
|
+
# Metrics are grouped by the +@primary_key+ variable set in the constructor
|
33
|
+
# Metric information extracted from each record is determined by the +@secondary_keys+ variable
|
34
|
+
#
|
35
|
+
# The output of this worker is a +SupplejackApi::DailyItemMetric+ to represent metrics about the
|
36
|
+
# overall system and one +SupplejackApi::FacetedMetrics+ for each set of records grouped by the +@primary_key+
|
37
|
+
def call
|
38
|
+
facets = FacetsHelper.get_list_of_facet_values(primary_key)
|
39
|
+
partial_facets_data = facets.map(&method(:retrieve_facet_data))
|
40
|
+
full_facets_data = update_total_new_records(partial_facets_data)
|
41
|
+
create_metrics_records(full_facets_data)
|
42
|
+
create_daily_metrics
|
43
|
+
end
|
44
|
+
|
45
|
+
private
|
46
|
+
|
47
|
+
def retrieve_facet_data(facet)
|
48
|
+
s = RecordSearch.new(facets: secondary_keys.join(','), and: { primary_key.to_sym => facet })
|
49
|
+
facet_key_mappings = secondary_keys.reduce({}) { |a, e| a.merge(e.to_sym => custom_key_to_field_name(e)) }
|
50
|
+
facet_metadata = Hash[s.facets_hash.map { |k, v| [facet_key_mappings[k] || k, v] }]
|
51
|
+
|
52
|
+
{
|
53
|
+
name: facet,
|
54
|
+
date: Date.current,
|
55
|
+
total_active_records: s.total,
|
56
|
+
total_new_records: 0
|
57
|
+
}.merge(facet_metadata)
|
58
|
+
end
|
59
|
+
|
60
|
+
def update_total_new_records(facets)
|
61
|
+
facets = facets.dup
|
62
|
+
records = Record.active.created_on(Date.current)
|
63
|
+
counts_grouped_by_primary_key = records.group_by(&primary_key.to_sym).map { |k, v| [k, v.length] }
|
64
|
+
|
65
|
+
counts_grouped_by_primary_key.each do |primary_key, count|
|
66
|
+
facet_to_update = facets.find { |x| x[:name] == primary_key }
|
67
|
+
|
68
|
+
next unless facet_to_update.present?
|
69
|
+
|
70
|
+
facet_to_update[:total_new_records] = count
|
71
|
+
end
|
72
|
+
|
73
|
+
facets
|
74
|
+
end
|
75
|
+
|
76
|
+
def create_metrics_records(facets)
|
77
|
+
merge_block = lambda do |a, e|
|
78
|
+
a.merge(e) { |_, oldVal, newVal| oldVal + newVal }
|
79
|
+
end
|
80
|
+
|
81
|
+
active_records = Record.active
|
82
|
+
total_records = active_records.count
|
83
|
+
total_new_records = active_records.created_on(Date.current).count
|
84
|
+
total_copyright_counts = facets.map { |x| x[:copyright_counts] }.reduce({}, &merge_block)
|
85
|
+
total_category_counts = facets.map { |x| x[:category_counts] }.reduce({}, &merge_block)
|
86
|
+
|
87
|
+
FacetedMetrics.create(
|
88
|
+
name: 'all',
|
89
|
+
date: Time.zone.today,
|
90
|
+
total_active_records: total_records,
|
91
|
+
total_new_records: total_new_records,
|
92
|
+
copyright_counts: total_copyright_counts,
|
93
|
+
category_counts: total_category_counts
|
94
|
+
)
|
95
|
+
|
96
|
+
facets.each { |x| FacetedMetrics.create(x) }
|
97
|
+
end
|
98
|
+
|
99
|
+
def create_daily_metrics
|
100
|
+
public_user_sets_count = SupplejackApi::UserSet.publicly_viewable.excluding_favorites.count
|
101
|
+
|
102
|
+
DailyMetrics.create(
|
103
|
+
date: Date.current,
|
104
|
+
total_public_sets: public_user_sets_count
|
105
|
+
)
|
106
|
+
end
|
107
|
+
|
108
|
+
def custom_key_to_field_name(key)
|
109
|
+
"#{key}_counts".to_sym
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|