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.
Files changed (291) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +80 -0
  3. data/Rakefile +42 -0
  4. data/app/assets/javascripts/supplejack_api/application.js +26 -0
  5. data/app/assets/stylesheets/supplejack_api/application.css +30 -0
  6. data/app/controllers/supplejack_api/admin/base_controller.rb +24 -0
  7. data/app/controllers/supplejack_api/admin/sessions_controller.rb +25 -0
  8. data/app/controllers/supplejack_api/admin/site_activities_controller.rb +21 -0
  9. data/app/controllers/supplejack_api/admin/users_controller.rb +55 -0
  10. data/app/controllers/supplejack_api/application_controller.rb +70 -0
  11. data/app/controllers/supplejack_api/concepts_controller.rb +52 -0
  12. data/app/controllers/supplejack_api/concerns/ignore_metrics.rb +14 -0
  13. data/app/controllers/supplejack_api/concerns/records_controller_metrics.rb +26 -0
  14. data/app/controllers/supplejack_api/concerns/set_items_controller_metrics.rb +20 -0
  15. data/app/controllers/supplejack_api/concerns/user_sets_controller_metrics.rb +26 -0
  16. data/app/controllers/supplejack_api/harvester/concepts_controller.rb +41 -0
  17. data/app/controllers/supplejack_api/harvester/fragments_controller.rb +30 -0
  18. data/app/controllers/supplejack_api/harvester/records_controller.rb +68 -0
  19. data/app/controllers/supplejack_api/metrics_api_controller.rb +44 -0
  20. data/app/controllers/supplejack_api/partners_controller.rb +39 -0
  21. data/app/controllers/supplejack_api/records_controller.rb +71 -0
  22. data/app/controllers/supplejack_api/schema_controller.rb +19 -0
  23. data/app/controllers/supplejack_api/set_items_controller.rb +38 -0
  24. data/app/controllers/supplejack_api/sources_controller.rb +67 -0
  25. data/app/controllers/supplejack_api/status_controller.rb +67 -0
  26. data/app/controllers/supplejack_api/user_sets_controller.rb +97 -0
  27. data/app/controllers/supplejack_api/users_controller.rb +49 -0
  28. data/app/helpers/supplejack_api/application_helper.rb +39 -0
  29. data/app/helpers/supplejack_api/facets_helper.rb +30 -0
  30. data/app/mailers/supplejack_api/request_limit_mailer.rb +43 -0
  31. data/app/models/supplejack_api/api_concept/concept_fragment.rb +31 -0
  32. data/app/models/supplejack_api/api_record/record_fragment.rb +15 -0
  33. data/app/models/supplejack_api/concept.rb +46 -0
  34. data/app/models/supplejack_api/concept_search.rb +86 -0
  35. data/app/models/supplejack_api/concerns/queryable_by_date.rb +31 -0
  36. data/app/models/supplejack_api/concerns/record.rb +108 -0
  37. data/app/models/supplejack_api/concerns/record_fragmentable.rb +24 -0
  38. data/app/models/supplejack_api/concerns/searchable.rb +430 -0
  39. data/app/models/supplejack_api/concerns/user_set.rb +219 -0
  40. data/app/models/supplejack_api/daily_metrics.rb +20 -0
  41. data/app/models/supplejack_api/faceted_metrics.rb +55 -0
  42. data/app/models/supplejack_api/fragment.rb +82 -0
  43. data/app/models/supplejack_api/interaction_models/record.rb +60 -0
  44. data/app/models/supplejack_api/interaction_models/set.rb +13 -0
  45. data/app/models/supplejack_api/interaction_updaters/all_usage_metric.rb +41 -0
  46. data/app/models/supplejack_api/interaction_updaters/set_metrics.rb +32 -0
  47. data/app/models/supplejack_api/interaction_updaters/usage_metrics.rb +73 -0
  48. data/app/models/supplejack_api/partner.rb +24 -0
  49. data/app/models/supplejack_api/preview_record.rb +30 -0
  50. data/app/models/supplejack_api/record.rb +18 -0
  51. data/app/models/supplejack_api/record_search.rb +12 -0
  52. data/app/models/supplejack_api/schema_definition.rb +147 -0
  53. data/app/models/supplejack_api/search.rb +14 -0
  54. data/app/models/supplejack_api/set_item.rb +57 -0
  55. data/app/models/supplejack_api/site_activity.rb +59 -0
  56. data/app/models/supplejack_api/source.rb +28 -0
  57. data/app/models/supplejack_api/source_activity.rb +36 -0
  58. data/app/models/supplejack_api/source_authority.rb +42 -0
  59. data/app/models/supplejack_api/supplejack_schema.rb +37 -0
  60. data/app/models/supplejack_api/support/concept/searchable.rb +79 -0
  61. data/app/models/supplejack_api/support/concept/storable.rb +59 -0
  62. data/app/models/supplejack_api/support/fragment_helpers.rb +96 -0
  63. data/app/models/supplejack_api/support/harvestable.rb +105 -0
  64. data/app/models/supplejack_api/support/searchable.rb +115 -0
  65. data/app/models/supplejack_api/support/status_logger.rb +23 -0
  66. data/app/models/supplejack_api/support/storable.rb +49 -0
  67. data/app/models/supplejack_api/support/validation_logger.rb +23 -0
  68. data/app/models/supplejack_api/usage_metrics.rb +25 -0
  69. data/app/models/supplejack_api/user.rb +211 -0
  70. data/app/models/supplejack_api/user_activity.rb +65 -0
  71. data/app/models/supplejack_api/user_set.rb +17 -0
  72. data/app/serializers/supplejack_api/application_serializer.rb +12 -0
  73. data/app/serializers/supplejack_api/concept_record_serializer.rb +23 -0
  74. data/app/serializers/supplejack_api/concept_search_serializer.rb +12 -0
  75. data/app/serializers/supplejack_api/concept_serializer.rb +100 -0
  76. data/app/serializers/supplejack_api/concerns/record_serializable.rb +119 -0
  77. data/app/serializers/supplejack_api/concerns/search_serializable.rb +24 -0
  78. data/app/serializers/supplejack_api/record_search_serializer.rb +64 -0
  79. data/app/serializers/supplejack_api/record_serializer.rb +13 -0
  80. data/app/serializers/supplejack_api/search_serializer.rb +13 -0
  81. data/app/serializers/supplejack_api/source_authority_serializer.rb +23 -0
  82. data/app/serializers/supplejack_api/user_serializer.rb +13 -0
  83. data/app/serializers/supplejack_api/user_set_record_serializer.rb +14 -0
  84. data/app/serializers/supplejack_api/user_set_serializer.rb +77 -0
  85. data/app/services/metrics_api/v3/api.rb +30 -0
  86. data/app/services/metrics_api/v3/endpoints/facets.rb +23 -0
  87. data/app/services/metrics_api/v3/endpoints/global.rb +26 -0
  88. data/app/services/metrics_api/v3/endpoints/helpers.rb +14 -0
  89. data/app/services/metrics_api/v3/endpoints/root.rb +97 -0
  90. data/app/services/metrics_api/v3/presenters/daily_metric.rb +23 -0
  91. data/app/services/metrics_api/v3/presenters/extended_metadata.rb +41 -0
  92. data/app/services/metrics_api/v3/presenters/record.rb +26 -0
  93. data/app/services/metrics_api/v3/presenters/view.rb +28 -0
  94. data/app/views/layouts/supplejack_api/_head.html.erb +17 -0
  95. data/app/views/layouts/supplejack_api/_top_nav.html.erb +33 -0
  96. data/app/views/layouts/supplejack_api/application.html.erb +33 -0
  97. data/app/views/supplejack_api/admin/sessions/new.html.erb +25 -0
  98. data/app/views/supplejack_api/admin/shared/_links.erb +34 -0
  99. data/app/views/supplejack_api/admin/site_activities/index.csv.erb +22 -0
  100. data/app/views/supplejack_api/admin/site_activities/index.html.erb +54 -0
  101. data/app/views/supplejack_api/admin/users/edit.html.erb +16 -0
  102. data/app/views/supplejack_api/admin/users/index.csv.erb +22 -0
  103. data/app/views/supplejack_api/admin/users/index.html.erb +57 -0
  104. data/app/views/supplejack_api/admin/users/show.html.erb +33 -0
  105. data/app/views/supplejack_api/request_limit_mailer/at100percent.text.erb +13 -0
  106. data/app/views/supplejack_api/request_limit_mailer/at100percent_admin.text.erb +1 -0
  107. data/app/views/supplejack_api/request_limit_mailer/at90percent.text.erb +13 -0
  108. data/app/views/supplejack_api/request_limit_mailer/at90percent_admin.text.erb +1 -0
  109. data/app/workers/supplejack_api/daily_metrics_worker.rb +112 -0
  110. data/app/workers/supplejack_api/interaction_metrics_worker.rb +45 -0
  111. data/config/cucumber.yml +16 -0
  112. data/config/initializers/force_eagerload.rb +11 -0
  113. data/config/initializers/interaction_updaters.rb +7 -0
  114. data/config/routes.rb +81 -0
  115. data/db/binding_records.development.json +7 -0
  116. data/db/binding_records.staging.json +7 -0
  117. data/db/concepts.json +33 -0
  118. data/db/concepts_data.json +569745 -0
  119. data/db/source_authorities.json +119 -0
  120. data/lib/generators/supplejack_api/install_generator.rb +124 -0
  121. data/lib/mongoid/paperclip.rb +53 -0
  122. data/lib/mongoid/string.rb +20 -0
  123. data/lib/sunspot/mongoid.rb +51 -0
  124. data/lib/sunspot/resque_session_proxy.rb +72 -0
  125. data/lib/sunspot/sunspot_spellcheck.rb +98 -0
  126. data/lib/supplejack_api.rb +13 -0
  127. data/lib/supplejack_api/admin/sortable.rb +40 -0
  128. data/lib/supplejack_api/engine.rb +46 -0
  129. data/lib/supplejack_api/harvester_constraint.rb +28 -0
  130. data/lib/supplejack_api/stylesheets.rb +36 -0
  131. data/lib/supplejack_api/utils.rb +75 -0
  132. data/lib/supplejack_api/version.rb +11 -0
  133. data/lib/tasks/resque.rake +22 -0
  134. data/lib/url_validator.rb +38 -0
  135. data/spec/controllers/supplejack_api/admin/base_controller_spec.rb +55 -0
  136. data/spec/controllers/supplejack_api/admin/site_activities_controller_spec.rb +43 -0
  137. data/spec/controllers/supplejack_api/admin/users_controller_spec.rb +79 -0
  138. data/spec/controllers/supplejack_api/application_controller_spec.rb +133 -0
  139. data/spec/controllers/supplejack_api/concepts_controller_spec.rb +83 -0
  140. data/spec/controllers/supplejack_api/concerns/records_controller_metrics_spec.rb +60 -0
  141. data/spec/controllers/supplejack_api/harvester/concepts_controller_spec.rb +57 -0
  142. data/spec/controllers/supplejack_api/harvester/records_controller_spec.rb +138 -0
  143. data/spec/controllers/supplejack_api/metrics_api_controller_spec.rb +71 -0
  144. data/spec/controllers/supplejack_api/partners_controller_spec.rb +77 -0
  145. data/spec/controllers/supplejack_api/records_controller_spec.rb +143 -0
  146. data/spec/controllers/supplejack_api/set_items_controller_spec.rb +78 -0
  147. data/spec/controllers/supplejack_api/sources_controller_spec.rb +161 -0
  148. data/spec/controllers/supplejack_api/status_controller_spec.rb +120 -0
  149. data/spec/controllers/supplejack_api/user_sets_controller_spec.rb +233 -0
  150. data/spec/controllers/supplejack_api/users_controller_spec.rb +61 -0
  151. data/spec/dummy/README.rdoc +268 -0
  152. data/spec/dummy/Rakefile +7 -0
  153. data/spec/dummy/app/assets/javascripts/application.js +23 -0
  154. data/spec/dummy/app/assets/stylesheets/application.css +22 -0
  155. data/spec/dummy/app/controllers/application_controller.rb +10 -0
  156. data/spec/dummy/app/helpers/application_helper.rb +9 -0
  157. data/spec/dummy/app/supplejack_api/concept_schema.rb +83 -0
  158. data/spec/dummy/app/supplejack_api/record_schema.rb +64 -0
  159. data/spec/dummy/app/supplejack_api/record_schema.txt +66 -0
  160. data/spec/dummy/app/views/layouts/application.html.erb +23 -0
  161. data/spec/dummy/app/workers/supplejack_api/clear_index_buffer.rb +32 -0
  162. data/spec/dummy/app/workers/supplejack_api/flush_old_records_worker.rb +17 -0
  163. data/spec/dummy/app/workers/supplejack_api/index_buffer.rb +49 -0
  164. data/spec/dummy/app/workers/supplejack_api/index_source_worker.rb +39 -0
  165. data/spec/dummy/app/workers/supplejack_api/index_worker.rb +82 -0
  166. data/spec/dummy/app/workers/supplejack_api/store_user_activity_worker.rb +24 -0
  167. data/spec/dummy/config.ru +11 -0
  168. data/spec/dummy/config/application.rb +76 -0
  169. data/spec/dummy/config/application.yml +31 -0
  170. data/spec/dummy/config/application.yml.example +36 -0
  171. data/spec/dummy/config/boot.rb +17 -0
  172. data/spec/dummy/config/environment.rb +12 -0
  173. data/spec/dummy/config/environments/development.rb +42 -0
  174. data/spec/dummy/config/environments/production.rb +76 -0
  175. data/spec/dummy/config/environments/test.rb +46 -0
  176. data/spec/dummy/config/initializers/backtrace_silencers.rb +14 -0
  177. data/spec/dummy/config/initializers/devise.rb +214 -0
  178. data/spec/dummy/config/initializers/inflections.rb +22 -0
  179. data/spec/dummy/config/initializers/kaminari_config.rb +17 -0
  180. data/spec/dummy/config/initializers/mime_types.rb +12 -0
  181. data/spec/dummy/config/initializers/mongoid.rb +9 -0
  182. data/spec/dummy/config/initializers/quiet_logger.rb +23 -0
  183. data/spec/dummy/config/initializers/resque.rb +18 -0
  184. data/spec/dummy/config/initializers/secret_token.rb +14 -0
  185. data/spec/dummy/config/initializers/session_store.rb +15 -0
  186. data/spec/dummy/config/initializers/simple_form.rb +149 -0
  187. data/spec/dummy/config/initializers/simple_form_foundation.rb +33 -0
  188. data/spec/dummy/config/initializers/state_machine.rb +8 -0
  189. data/spec/dummy/config/initializers/sunspot.rb +32 -0
  190. data/spec/dummy/config/initializers/wrap_parameters.rb +17 -0
  191. data/spec/dummy/config/locales/devise.en.yml +63 -0
  192. data/spec/dummy/config/locales/en.yml +66 -0
  193. data/spec/dummy/config/locales/simple_form.en.yml +33 -0
  194. data/spec/dummy/config/mongoid.travis.yml +34 -0
  195. data/spec/dummy/config/mongoid.yml +36 -0
  196. data/spec/dummy/config/resque-pool.yml +18 -0
  197. data/spec/dummy/config/resque_schedule.yml +12 -0
  198. data/spec/dummy/config/routes.rb +11 -0
  199. data/spec/dummy/config/secrets.yml +8 -0
  200. data/spec/dummy/config/sunspot.yml +38 -0
  201. data/spec/dummy/db/concepts.json +37 -0
  202. data/spec/dummy/db/source_authorities.json +116 -0
  203. data/spec/dummy/public/404.html +35 -0
  204. data/spec/dummy/public/422.html +35 -0
  205. data/spec/dummy/public/500.html +34 -0
  206. data/spec/dummy/public/favicon.ico +8 -0
  207. data/spec/dummy/script/rails +6 -0
  208. data/spec/dummy/solr/collection1/conf/elevate.xml +36 -0
  209. data/spec/dummy/solr/collection1/conf/mapping-FoldToASCII.txt +3813 -0
  210. data/spec/dummy/solr/collection1/conf/schema.xml +292 -0
  211. data/spec/dummy/solr/collection1/conf/solrconfig.xml +1780 -0
  212. data/spec/dummy/solr/collection1/conf/spellings.txt +2 -0
  213. data/spec/dummy/solr/collection1/conf/stopwords.txt +58 -0
  214. data/spec/dummy/solr/collection1/conf/synonyms.txt +31 -0
  215. data/spec/factories/concepts.rb +16 -0
  216. data/spec/factories/daily_metrics.rb +10 -0
  217. data/spec/factories/faceted_metrics.rb +25 -0
  218. data/spec/factories/fragment.rb +14 -0
  219. data/spec/factories/partners.rb +14 -0
  220. data/spec/factories/record_interaction.rb +17 -0
  221. data/spec/factories/records.rb +47 -0
  222. data/spec/factories/set_interaction.rb +15 -0
  223. data/spec/factories/source_authorities.rb +19 -0
  224. data/spec/factories/sources.rb +16 -0
  225. data/spec/factories/usage_metrics.rb +20 -0
  226. data/spec/factories/user_activities.rb +14 -0
  227. data/spec/factories/user_sets.rb +27 -0
  228. data/spec/factories/users.rb +23 -0
  229. data/spec/helpers/application_helper_spec.rb +35 -0
  230. data/spec/models/concept_spec.rb +163 -0
  231. data/spec/models/fragment_spec.rb +15 -0
  232. data/spec/models/site_activity_spec.rb +103 -0
  233. data/spec/models/source_activity_spec.rb +56 -0
  234. data/spec/models/source_authority_spec.rb +42 -0
  235. data/spec/models/supplejack_api/api_concept/concept_fragment_spec.rb +189 -0
  236. data/spec/models/supplejack_api/api_record/record_fragment_spec.rb +189 -0
  237. data/spec/models/supplejack_api/concept_spec.rb +0 -0
  238. data/spec/models/supplejack_api/interaction_updaters/all_usage_metric_spec.rb +41 -0
  239. data/spec/models/supplejack_api/interaction_updaters/set_metrics_spec.rb +32 -0
  240. data/spec/models/supplejack_api/interaction_updaters/usage_metrics_spec.rb +44 -0
  241. data/spec/models/supplejack_api/partner_spec.rb +20 -0
  242. data/spec/models/supplejack_api/record_search_spec.rb +429 -0
  243. data/spec/models/supplejack_api/record_spec.rb +280 -0
  244. data/spec/models/supplejack_api/schema_definition_spec.rb +272 -0
  245. data/spec/models/supplejack_api/search_spec.rb +243 -0
  246. data/spec/models/supplejack_api/set_item_spec.rb +123 -0
  247. data/spec/models/supplejack_api/source_spec.rb +22 -0
  248. data/spec/models/supplejack_api/support/fragment_helpers_spec.rb +216 -0
  249. data/spec/models/supplejack_api/support/harvestable_spec.rb +177 -0
  250. data/spec/models/supplejack_api/support/searchable_spec.rb +85 -0
  251. data/spec/models/supplejack_api/support/storable_spec.rb +18 -0
  252. data/spec/models/supplejack_api/user_activity_spec.rb +88 -0
  253. data/spec/models/supplejack_api/user_set_spec.rb +559 -0
  254. data/spec/models/supplejack_api/user_spec.rb +348 -0
  255. data/spec/routing/concepts_routing_spec.rb +22 -0
  256. data/spec/routing/harvester_constraint_spec.rb +66 -0
  257. data/spec/routing/harvester_routing_spec.rb +51 -0
  258. data/spec/routing/partner_routing_spec.rb +34 -0
  259. data/spec/routing/records_routing_spec.rb +26 -0
  260. data/spec/routing/sets_routing_spec.rb +44 -0
  261. data/spec/routing/source_routing_spec.rb +38 -0
  262. data/spec/routing/users_routing_spec.rb +18 -0
  263. data/spec/serializers/concept_record_serializer_spec.rb +30 -0
  264. data/spec/serializers/supplejack_api/application_serializer_spec.rb +14 -0
  265. data/spec/serializers/supplejack_api/concept_search_serializer_spec.rb +34 -0
  266. data/spec/serializers/supplejack_api/concept_serializer_spec.rb +92 -0
  267. data/spec/serializers/supplejack_api/record_search_serializer_spec.rb +34 -0
  268. data/spec/serializers/supplejack_api/record_serializer_spec.rb +271 -0
  269. data/spec/serializers/supplejack_api/search_serializer_spec.rb +90 -0
  270. data/spec/serializers/supplejack_api/user_serializer_spec.rb +22 -0
  271. data/spec/serializers/supplejack_api/user_set_serializer_spec.rb +96 -0
  272. data/spec/services/metrics_api/v3/api_spec.rb +23 -0
  273. data/spec/services/metrics_api/v3/endpoints/facets_spec.rb +25 -0
  274. data/spec/services/metrics_api/v3/endpoints/global_spec.rb +22 -0
  275. data/spec/services/metrics_api/v3/endpoints/root_spec.rb +49 -0
  276. data/spec/services/metrics_api/v3/presenters/extended_metadata_spec.rb +49 -0
  277. data/spec/spec_helper.rb +70 -0
  278. data/spec/support/api/schemas/metrics/daily_metrics_metadata.json +24 -0
  279. data/spec/support/api/schemas/metrics/extended_metrics.json +26 -0
  280. data/spec/support/api/schemas/metrics/extended_response.json +6 -0
  281. data/spec/support/api/schemas/metrics/facets_response.json +6 -0
  282. data/spec/support/api/schemas/metrics/record_metadata.json +33 -0
  283. data/spec/support/api/schemas/metrics/top_level_response.json +6 -0
  284. data/spec/support/api/schemas/metrics/view_metadata.json +33 -0
  285. data/spec/support/api_schema_matcher.rb +14 -0
  286. data/spec/support/devise.rb +10 -0
  287. data/spec/workers/supplejack_api/daily_metrics_worker_spec.rb +140 -0
  288. data/spec/workers/supplejack_api/flush_old_records_worker_spec.rb +20 -0
  289. data/spec/workers/supplejack_api/index_worker_spec.rb +52 -0
  290. data/spec/workers/supplejack_api/source_index_worker_spec.rb +61 -0
  291. metadata +1231 -0
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env rake
2
+ # Add your own tasks in files placed in lib/tasks ending in .rake,
3
+ # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
4
+
5
+ require File.expand_path('../config/application', __FILE__)
6
+
7
+ Dummy::Application.load_tasks
@@ -0,0 +1,23 @@
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
+ * Supplejack was created by DigitalNZ at the National Library of NZ and
6
+ * the Department of Internal Affairs. http://digitalnz.org/supplejack
7
+ */
8
+
9
+ // This is a manifest file that'll be compiled into application.js, which will include all the files
10
+ // listed below.
11
+ //
12
+ // Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
13
+ // or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
14
+ //
15
+ // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
16
+ // the compiled file.
17
+ //
18
+ // WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD
19
+ // GO AFTER THE REQUIRES BELOW.
20
+ //
21
+ //= require jquery
22
+ //= require jquery_ujs
23
+ //= require_tree .
@@ -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
+ * Supplejack was created by DigitalNZ at the National Library of NZ and
6
+ * the Department of Internal Affairs. http://digitalnz.org/supplejack
7
+ */
8
+
9
+ /*
10
+ * This is a manifest file that'll be compiled into application.css, which will include all the files
11
+ * listed below.
12
+ *
13
+ * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
14
+ * or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path.
15
+ *
16
+ * You're free to add application-wide styles to this file and they'll appear at the top of the
17
+ * compiled file, but it's generally better to create a new file per style scope.
18
+ *
19
+ *= require_self
20
+ *= require_tree .
21
+ *= require supplejack_api/application
22
+ */
@@ -0,0 +1,10 @@
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
+ class ApplicationController < ActionController::Base
9
+ protect_from_forgery
10
+ end
@@ -0,0 +1,9 @@
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
+ module ApplicationHelper
9
+ end
@@ -0,0 +1,83 @@
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
+ class ConceptSchema
9
+ include SupplejackApi::SchemaDefinition
10
+
11
+ # Namespaces
12
+ namespace :dcterms, url: 'http://purl.org/dc/terms/'
13
+ namespace :edm, url: 'http://www.europeana.eu/schemas/edm/'
14
+ namespace :foaf, url: 'http://xmlns.com/foaf/0.1/'
15
+ namespace :owl, url: 'http://www.w3.org/2002/07/owl#'
16
+ namespace :rdaGr2, url: 'http://rdvocab.info/ElementsGr2/'
17
+ namespace :rdf, url: 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'
18
+ namespace :rdfs, url: 'http://www.w3.org/2000/01/rdf-schema#'
19
+ namespace :skos, url: 'http://www.w3.org/2004/02/skos/core#'
20
+ namespace :xsd, url: 'http://www.w3.org/2001/XMLSchema#'
21
+ namespace :dc, url: 'http://purl.org/dc/elements/1.1/'
22
+
23
+ # Fields (SourceAuthority fields)
24
+ string :name
25
+ string :prefLabel
26
+ string :altLabel, multi_value: true
27
+ datetime :dateOfBirth
28
+ datetime :dateOfDeath
29
+ string :biographicalInformation
30
+ string :sameAs, multi_value: true
31
+ string :givenName
32
+ string :familyName
33
+ integer :birthYear
34
+ integer :deathYear
35
+
36
+ group :source_authorities
37
+ group :reverse
38
+
39
+ group :default do
40
+ fields [
41
+ :name,
42
+ :title
43
+ ]
44
+ end
45
+
46
+ group :verbose do
47
+ fields [
48
+ :name,
49
+ :prefLabel,
50
+ :altLabel,
51
+ :dateOfBirth,
52
+ :dateOfDeath,
53
+ :biographicalInformation,
54
+ :sameAs,
55
+ :title
56
+ ]
57
+ end
58
+
59
+ # Concept
60
+ model_field :name, field_options: { type: String }, search_as: [:fulltext], search_boost: 6, namespace: :foaf
61
+ model_field :prefLabel, field_options: { type: String }, namespace: :skos
62
+ model_field :altLabel, field_options: { type: Array }, search_as: [:fulltext], search_boost: 2, namespace: :skos
63
+ model_field :dateOfBirth, field_options: { type: Date }, namespace: :rdaGr2
64
+ model_field :dateOfDeath, field_options: { type: Date }, namespace: :rdaGr2
65
+ model_field :biographicalInformation, field_options: { type: String }, search_as: [:fulltext], search_boost: 1, namespace: :rdaGr2
66
+ model_field :sameAs, field_options: { type: Array }, namespace: :owl
67
+
68
+ # Use store: false to display the fields in the /schema
69
+ model_field :title, store: false, namespace: :dc
70
+ model_field :date, store: false, namespace: :dc
71
+ model_field :description, store: false, namespace: :dc
72
+ model_field :agents, store: false, namespace: :edm
73
+ model_field :source_authority do
74
+ search_as [:filter]
75
+ store false
76
+ type :string
77
+ multi_value true
78
+ namespace :foaf
79
+ search_value do |concept|
80
+ concept.source_authorities.map(&:internal_identifier)
81
+ end
82
+ end
83
+ end
@@ -0,0 +1,64 @@
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
+ class RecordSchema
9
+ include SupplejackApi::SupplejackSchema
10
+
11
+ # Namespaces
12
+ namespace :dc, url: 'http://purl.org/dc/elements/1.1/'
13
+
14
+ # Fields
15
+ string :record_id, store: false
16
+ string :name, search_boost: 10, search_as: [:filter, :fulltext], namespace: :dc
17
+ string :address, search_boost: 2, search_as: [:filter, :fulltext]
18
+ string :email, multi_value: true, search_as: [:filter]
19
+ string :children, multi_value: true
20
+ string :contact, multi_value: true
21
+ integer :age
22
+ datetime :birth_date
23
+ boolean :nz_citizen, search_as: [:filter]
24
+ string :display_collection, search_as: [:filter, :fulltext], namespace: :sj
25
+
26
+ # facets
27
+ string :category, multi_value: true, search_as: [:filter]
28
+ string :copyright, multi_value: true, search_as: [:filter]
29
+
30
+ # Groups
31
+ group :default do
32
+ fields [
33
+ :name,
34
+ :address
35
+ ]
36
+ end
37
+
38
+ group :all do
39
+ includes [:default]
40
+ fields [
41
+ :email,
42
+ :children,
43
+ :nz_citizen,
44
+ :birth_date,
45
+ :age
46
+ ]
47
+ end
48
+
49
+ group :core do
50
+ fields [:record_id]
51
+ end
52
+
53
+ group :sets do
54
+ fields [
55
+ :name,
56
+ :address
57
+ ]
58
+ end
59
+
60
+ # Roles
61
+ role :developer, default: true
62
+ role :admin, admin: true
63
+
64
+ end
@@ -0,0 +1,66 @@
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
+ class RecordSchema
9
+ include SupplejackApi::SupplejackSchema
10
+
11
+ # Namespaces
12
+ namespace :dc, url: 'http://purl.org/dc/elements/1.1/'
13
+ namespace :sj, url: ''
14
+
15
+ # Fields
16
+ string :record_id, store: false, namespace: :sj
17
+ string :concept_ids, namespace: :sj
18
+ string :title, search_boost: 10, search_as: [:filter, :fulltext], namespace: :dc
19
+ string :description, search_boost: 2, search_as: [:filter, :fulltext], namespace: :dc
20
+
21
+ string :display_content_partner, search_as: [:filter, :fulltext], namespace: :sj
22
+ string :display_collection, search_as: [:filter, :fulltext], namespace: :sj
23
+ string :source_url, namespace: :sj
24
+ string :thumbnail_url
25
+ string :subject, multi_value: true, namespace: :dc
26
+ string :display_date, namespace: :sj
27
+ string :creator, multi_value: true, namespace: :dc
28
+ string :category, multi_value: true, search_as: [:filter], namespace: :sj
29
+
30
+ # Groups
31
+ group :default do
32
+ fields [
33
+ :title,
34
+ :description
35
+ ]
36
+ end
37
+
38
+ group :all do
39
+ includes [:default]
40
+ fields [
41
+ :record_id,
42
+ :concept_ids,
43
+ :subject,
44
+ :display_content_partner,
45
+ :display_collection,
46
+ :source_url,
47
+ :thumbnail_url,
48
+ :display_date,
49
+ :creator,
50
+ :category
51
+ ]
52
+ end
53
+
54
+ group :core do
55
+ fields [:record_id]
56
+ end
57
+
58
+ # Roles
59
+ role :developer do
60
+ default true
61
+ end
62
+ role :admin
63
+
64
+ mongo_index :source_url, fields: [{source_url: 1}]
65
+
66
+ end
@@ -0,0 +1,23 @@
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
+ <html>
12
+ <head>
13
+ <title>Dummy</title>
14
+ <%= stylesheet_link_tag "application", :media => "all" %>
15
+ <%= javascript_include_tag "application" %>
16
+ <%= csrf_meta_tags %>
17
+ </head>
18
+ <body>
19
+
20
+ <%= yield %>
21
+
22
+ </body>
23
+ </html>
@@ -0,0 +1,32 @@
1
+ # This is a worker class which gets executed every 5 minutes that pulls any
2
+ # records_ids stored in Redis that should be indexed or removed from the
3
+ # index.
4
+ #
5
+ # Resque Scheduler is used to execute this task.
6
+
7
+ module SupplejackApi
8
+ class ClearIndexBuffer
9
+ @queue = :solr_index
10
+
11
+ def self.perform
12
+ Rails.logger.level = 1 unless Rails.env.development?
13
+
14
+ session = Sunspot.session
15
+ Sunspot.session = Sunspot::Rails.build_session
16
+
17
+ buffer = SupplejackApi::IndexBuffer.new
18
+
19
+ index_record_ids = buffer.records_to_index
20
+ if index_record_ids.any?
21
+ Sunspot.index(index_record_ids)
22
+ end
23
+
24
+ remove_record_ids = buffer.records_to_remove
25
+ if remove_record_ids.any?
26
+ Sunspot.remove(remove_record_ids)
27
+ end
28
+
29
+ Sunspot.commit
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,17 @@
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
+ module SupplejackApi
9
+ class FlushOldRecordsWorker
10
+
11
+ @queue = :flush_records
12
+
13
+ def self.perform(source_id, job_id)
14
+ SupplejackApi::Record.flush_old_records(source_id, job_id)
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,49 @@
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
+ # Handles the logic for storing and retreiving record_ids from Redis
9
+ # which should be indexed or removed from Solr.
10
+
11
+ module SupplejackApi
12
+ class IndexBuffer
13
+
14
+ def initialize
15
+ @redis = Resque.redis
16
+ end
17
+
18
+ def pop_record_ids(method=:index, num=1000)
19
+ # get all the entries from the list. Need to check what happens if the list doesn't exist
20
+ num ||= 100000
21
+ ids = []
22
+ while ids.count < num and id = @redis.lpop("#{method}_buffer_record_ids")
23
+ ids << id
24
+ end
25
+ ids
26
+ end
27
+
28
+ def records_to_index
29
+ @records_to_index ||= SupplejackApi::Record.where(:id.in => self.pop_record_ids(:index)).to_a
30
+ @records_to_index.keep_if {|r| r.should_index? }
31
+ @records_to_index
32
+ end
33
+
34
+ def records_to_remove
35
+ @records_to_remove ||= SupplejackApi::Record.where(:id.in => self.pop_record_ids(:remove)).to_a
36
+ @records_to_remove.delete_if {|r| r.should_index?}
37
+ @records_to_remove
38
+ end
39
+
40
+ [:index, :remove].each do |method|
41
+ define_method("#{method}_record_ids=") do |ids|
42
+ ids.each do |id|
43
+ # push each id
44
+ @redis.rpush("#{method}_buffer_record_ids", id)
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,39 @@
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
+ module SupplejackApi
9
+ class IndexSourceWorker
10
+ @queue = :index_source
11
+
12
+ def self.perform(source_id, date=nil)
13
+ if date.present?
14
+ cursor = Record.where(:'fragments.source_id' => source_id, :updated_at.gt => Time.parse(date))
15
+ else
16
+ cursor = Record.where(:'fragments.source_id' => source_id)
17
+ end
18
+
19
+ in_chunks(cursor.where(status: "active")) do |records|
20
+ Sunspot.index(records)
21
+ end
22
+
23
+ in_chunks(cursor.where(status: "deleted")) do |records|
24
+ Sunspot.remove(records)
25
+ end
26
+ end
27
+
28
+ def self.in_chunks(cursor, &block)
29
+ total = cursor.count
30
+ start = 0
31
+ chunk_size = 10000
32
+ while start < total
33
+ records = cursor.limit(chunk_size).skip(start)
34
+ yield records
35
+ start += chunk_size
36
+ end
37
+ end
38
+ end
39
+ end