triannon-client 0.4.2 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (128) hide show
  1. checksums.yaml +4 -4
  2. data/.env_example +16 -2
  3. data/.rspec +1 -0
  4. data/README.md +49 -18
  5. data/Rakefile +15 -2
  6. data/lib/triannon-client.rb +12 -6
  7. data/lib/triannon-client/configuration.rb +26 -14
  8. data/lib/triannon-client/triannon_client.rb +139 -44
  9. data/spec/fixtures/vcr_cassettes/{TriannonClient/GET_annotation_by_ID_/_get_annotation/with_content_type/gets_an_open_annotation_by_ID_with_content_type_application/x-turtle_.yml → CRUD/create_annotation.yml} +192 -132
  10. data/spec/fixtures/vcr_cassettes/TriannonClientAUTH/with_authentication/behaves_like_authenticate/-_authenticate_returns_true.yml +343 -0
  11. data/spec/fixtures/vcr_cassettes/TriannonClientCREATE/_post_annotation/with_authentication/behaves_like_create_annotations/POST_401_response_retries_and_logs_RestClient_Exception_message.yml +170 -0
  12. data/spec/fixtures/vcr_cassettes/TriannonClientCREATE/_post_annotation/with_authentication/behaves_like_create_annotations/POST_403_response_does_not_retry_and_logs_RestClient_Exception_message.yml +170 -0
  13. data/spec/fixtures/vcr_cassettes/TriannonClientCREATE/_post_annotation/with_authentication/behaves_like_create_annotations/POST_500_response_does_not_retry_and_logs_RestClient_Exception_message.yml +170 -0
  14. data/spec/fixtures/vcr_cassettes/{TriannonClient/_get_annotations/returns_an_annotation_list_with_an_annotation_created_by_a_prior_POST.yml → TriannonClientCREATE/_post_annotation/with_authentication/behaves_like_create_annotations/does_not_raise_an_error_when_submitting_a_valid_open_annotation.yml} +203 -319
  15. data/spec/fixtures/vcr_cassettes/TriannonClientCREATE/_post_annotation/with_authentication/behaves_like_create_annotations/logs_RuntimeError_message.yml +170 -0
  16. data/spec/fixtures/vcr_cassettes/TriannonClientCREATE/_post_annotation/with_authentication/behaves_like_create_annotations/returns_a_RestClient_Response_object.yml +170 -0
  17. data/spec/fixtures/vcr_cassettes/{TriannonClient/_post_annotation → TriannonClientCREATE/_post_annotation/without_authentication/behaves_like_create_annotations}/does_not_raise_an_error_when_submitting_a_valid_open_annotation.yml +29 -27
  18. data/spec/fixtures/vcr_cassettes/TriannonClientCREATE/clear_annotations.yml +590 -0
  19. data/spec/fixtures/vcr_cassettes/TriannonClientDELETE/_delete_annotation/with_authentication/behaves_like_delete_annotations/returns_TRUE_when_deleting_an_annotation_that_does_NOT_exist.yml +349 -0
  20. data/spec/fixtures/vcr_cassettes/TriannonClientDELETE/_delete_annotation/with_authentication/behaves_like_delete_annotations/returns_TRUE_when_deleting_an_annotation_that_exists.yml +332 -0
  21. data/spec/fixtures/vcr_cassettes/TriannonClientDELETE/_delete_annotation/with_authentication/behaves_like_delete_annotations/validates_the_annotation_ID.yml +288 -0
  22. data/spec/fixtures/vcr_cassettes/{TriannonClient/_delete_annotation/returns_TRUE_when_deleting_an_open_annotation_that_does_NOT_exist.yml → TriannonClientDELETE/_delete_annotation/without_authentication/behaves_like_delete_annotations/returns_TRUE_when_deleting_an_annotation_that_does_NOT_exist.yml} +13 -9
  23. data/spec/fixtures/vcr_cassettes/TriannonClientDELETE/_delete_annotation/without_authentication/behaves_like_delete_annotations/returns_TRUE_when_deleting_an_annotation_that_exists.yml +127 -0
  24. data/spec/fixtures/vcr_cassettes/{TriannonClient/_delete_annotation → TriannonClientDELETE/_delete_annotation/without_authentication/behaves_like_delete_annotations}/validates_the_annotation_ID.yml +7 -5
  25. data/spec/fixtures/vcr_cassettes/TriannonClientDELETE/clear_annotations.yml +594 -0
  26. data/spec/fixtures/vcr_cassettes/{TriannonClient → TriannonClientREAD/GET}/_get_annotations/returns_an_RDF_Graph.yml +30 -23
  27. data/spec/fixtures/vcr_cassettes/{TriannonClient → TriannonClientREAD/GET}/_get_annotations/returns_an_RDF_Graph_that_contains_an_AnnotationList.yml +30 -23
  28. data/spec/fixtures/vcr_cassettes/TriannonClientREAD/GET/_get_annotations/returns_an_annotation_list_with_an_annotation_created_by_a_prior_POST.yml +302 -0
  29. data/spec/fixtures/vcr_cassettes/{TriannonClient/GET_annotation_by_ID_/_get_annotation/with_content_type/requests_an_open_annotation_by_ID_with_content_type_application/n-quads_.yml → TriannonClientREAD/GET/_get_iiif_annotation/returns_an_RDF_Graph_of_an_open_annotation.yml} +25 -78
  30. data/spec/fixtures/vcr_cassettes/{TriannonClient/GET_annotation_by_ID_/_get_annotation/with_content_type/requests_an_open_annotation_by_ID_with_content_type_application/n-triples_.yml → TriannonClientREAD/GET/_get_oa_annotation/returns_an_RDF_Graph_of_an_open_annotation.yml} +25 -78
  31. data/spec/fixtures/vcr_cassettes/TriannonClientREAD/GET/_response2graph/accepts_a_RestClient_Response_instance.yml +2399 -0
  32. data/spec/fixtures/vcr_cassettes/TriannonClientREAD/GET/annotation_by_ID/using_custom_content_type/cannot_get_an_open_annotation_by_ID_with_content_type_application/csvm_json_.yml +1231 -0
  33. data/spec/fixtures/vcr_cassettes/TriannonClientREAD/GET/annotation_by_ID/using_custom_content_type/cannot_get_an_open_annotation_by_ID_with_content_type_application/n-quads_.yml +1231 -0
  34. data/spec/fixtures/vcr_cassettes/TriannonClientREAD/GET/annotation_by_ID/using_custom_content_type/cannot_get_an_open_annotation_by_ID_with_content_type_application/n-triples_.yml +1231 -0
  35. data/spec/fixtures/vcr_cassettes/TriannonClientREAD/GET/annotation_by_ID/using_custom_content_type/cannot_get_an_open_annotation_by_ID_with_content_type_application/rdf_json_.yml +1231 -0
  36. data/spec/fixtures/vcr_cassettes/TriannonClientREAD/GET/annotation_by_ID/using_custom_content_type/cannot_get_an_open_annotation_by_ID_with_content_type_application/rdf_n3_.yml +1231 -0
  37. data/spec/fixtures/vcr_cassettes/TriannonClientREAD/GET/annotation_by_ID/using_custom_content_type/cannot_get_an_open_annotation_by_ID_with_content_type_application/trig_.yml +1231 -0
  38. data/spec/fixtures/vcr_cassettes/TriannonClientREAD/GET/annotation_by_ID/using_custom_content_type/cannot_get_an_open_annotation_by_ID_with_content_type_application/trix_.yml +1231 -0
  39. data/spec/fixtures/vcr_cassettes/TriannonClientREAD/GET/annotation_by_ID/using_custom_content_type/cannot_get_an_open_annotation_by_ID_with_content_type_application/turtle_.yml +1231 -0
  40. data/spec/fixtures/vcr_cassettes/TriannonClientREAD/GET/annotation_by_ID/using_custom_content_type/cannot_get_an_open_annotation_by_ID_with_content_type_application/x-ld_json_.yml +1231 -0
  41. data/spec/fixtures/vcr_cassettes/TriannonClientREAD/GET/annotation_by_ID/using_custom_content_type/cannot_get_an_open_annotation_by_ID_with_content_type_application/x-trig_.yml +1231 -0
  42. data/spec/fixtures/vcr_cassettes/TriannonClientREAD/GET/annotation_by_ID/using_custom_content_type/cannot_get_an_open_annotation_by_ID_with_content_type_text/csv_.yml +1231 -0
  43. data/spec/fixtures/vcr_cassettes/TriannonClientREAD/GET/annotation_by_ID/using_custom_content_type/cannot_get_an_open_annotation_by_ID_with_content_type_text/n3_.yml +1231 -0
  44. data/spec/fixtures/vcr_cassettes/TriannonClientREAD/GET/annotation_by_ID/using_custom_content_type/cannot_get_an_open_annotation_by_ID_with_content_type_text/plain_.yml +1231 -0
  45. data/spec/fixtures/vcr_cassettes/TriannonClientREAD/GET/annotation_by_ID/using_custom_content_type/cannot_get_an_open_annotation_by_ID_with_content_type_text/rdf_n3_.yml +1231 -0
  46. data/spec/fixtures/vcr_cassettes/TriannonClientREAD/GET/annotation_by_ID/using_custom_content_type/cannot_get_an_open_annotation_by_ID_with_content_type_text/rdf_turtle_.yml +1231 -0
  47. data/spec/fixtures/vcr_cassettes/TriannonClientREAD/GET/annotation_by_ID/using_custom_content_type/cannot_get_an_open_annotation_by_ID_with_content_type_text/tab-separated-values_.yml +1231 -0
  48. data/spec/fixtures/vcr_cassettes/TriannonClientREAD/GET/annotation_by_ID/using_custom_content_type/cannot_get_an_open_annotation_by_ID_with_content_type_text/x-nquads_.yml +1231 -0
  49. data/spec/fixtures/vcr_cassettes/{TriannonClient/GET_annotation_by_ID_/_get_annotation/with_content_type/requests_an_open_annotation_by_ID_with_content_type_application → TriannonClientREAD/GET/annotation_by_ID/using_custom_content_type/gets_an_open_annotation_by_ID_with_content_type_application}/ld_json_.yml +25 -78
  50. data/spec/fixtures/vcr_cassettes/TriannonClientREAD/GET/annotation_by_ID/using_custom_content_type/gets_an_open_annotation_by_ID_with_content_type_application/rdf_xml_.yml +68 -0
  51. data/spec/fixtures/vcr_cassettes/TriannonClientREAD/GET/annotation_by_ID/using_custom_content_type/gets_an_open_annotation_by_ID_with_content_type_application/x-turtle_.yml +69 -0
  52. data/spec/fixtures/vcr_cassettes/TriannonClientREAD/GET/annotation_by_ID/using_custom_content_type/gets_an_open_annotation_by_ID_with_content_type_text/turtle_.yml +69 -0
  53. data/spec/fixtures/vcr_cassettes/{TriannonClient/GET_annotation_by_ID_/_get_annotation/without_content_type → TriannonClientREAD/GET/annotation_by_ID/using_default_content_type}/checks_the_annotation_ID.yml +25 -78
  54. data/spec/fixtures/vcr_cassettes/TriannonClientREAD/GET/annotation_by_ID/using_default_content_type/returns_an_EMPTY_RDF_graph_with_a_valid_ID_for_NO_annotation_on_the_server.yml +186 -0
  55. data/spec/fixtures/vcr_cassettes/{TriannonClient/GET_annotation_by_ID_/_get_annotation/with_content_type/requests_an_open_annotation_by_ID_with_content_type_application/rdf_json_.yml → TriannonClientREAD/GET/annotation_by_ID/using_default_content_type/returns_an_RDF_graph_with_a_valid_ID_for_an_annotation_on_the_server.yml} +25 -78
  56. data/spec/fixtures/vcr_cassettes/TriannonClientREAD/clear_annotations.yml +648 -0
  57. data/spec/fixtures/vcr_cassettes/{TriannonClient/GET_annotation_by_ID_/_get_annotation/with_content_type/gets_an_open_annotation_by_ID_with_content_type_application/rdf_xml_.yml → TriannonClientREAD/create_annotation.yml} +192 -131
  58. data/spec/lib/triannon-client/configuration_spec.rb +83 -27
  59. data/spec/lib/triannon-client/triannon_client_auth_spec.rb +61 -0
  60. data/spec/lib/triannon-client/triannon_client_class_spec.rb +104 -0
  61. data/spec/lib/triannon-client/triannon_client_create_spec.rb +119 -0
  62. data/spec/lib/triannon-client/triannon_client_delete_spec.rb +117 -0
  63. data/spec/lib/triannon-client/triannon_client_read_spec.rb +342 -0
  64. data/spec/spec_helper.rb +140 -4
  65. data/triannon-client.gemspec +1 -1
  66. metadata +112 -153
  67. data/spec/fixtures/vcr_cassettes/TriannonClient/GET_annotation_by_ID_/_get_annotation/with_content_type/cannot_get_an_open_annotation_by_ID_with_content_type_application/n-quads_.yml +0 -3995
  68. data/spec/fixtures/vcr_cassettes/TriannonClient/GET_annotation_by_ID_/_get_annotation/with_content_type/cannot_get_an_open_annotation_by_ID_with_content_type_application/n-triples_.yml +0 -3995
  69. data/spec/fixtures/vcr_cassettes/TriannonClient/GET_annotation_by_ID_/_get_annotation/with_content_type/cannot_get_an_open_annotation_by_ID_with_content_type_application/rdf_json_.yml +0 -3995
  70. data/spec/fixtures/vcr_cassettes/TriannonClient/GET_annotation_by_ID_/_get_annotation/with_content_type/cannot_get_an_open_annotation_by_ID_with_content_type_application/rdf_n3_.yml +0 -3995
  71. data/spec/fixtures/vcr_cassettes/TriannonClient/GET_annotation_by_ID_/_get_annotation/with_content_type/cannot_get_an_open_annotation_by_ID_with_content_type_application/trig_.yml +0 -3995
  72. data/spec/fixtures/vcr_cassettes/TriannonClient/GET_annotation_by_ID_/_get_annotation/with_content_type/cannot_get_an_open_annotation_by_ID_with_content_type_application/trix_.yml +0 -3995
  73. data/spec/fixtures/vcr_cassettes/TriannonClient/GET_annotation_by_ID_/_get_annotation/with_content_type/cannot_get_an_open_annotation_by_ID_with_content_type_application/turtle_.yml +0 -3995
  74. data/spec/fixtures/vcr_cassettes/TriannonClient/GET_annotation_by_ID_/_get_annotation/with_content_type/cannot_get_an_open_annotation_by_ID_with_content_type_application/x-ld_json_.yml +0 -3995
  75. data/spec/fixtures/vcr_cassettes/TriannonClient/GET_annotation_by_ID_/_get_annotation/with_content_type/cannot_get_an_open_annotation_by_ID_with_content_type_application/x-trig_.yml +0 -3995
  76. data/spec/fixtures/vcr_cassettes/TriannonClient/GET_annotation_by_ID_/_get_annotation/with_content_type/cannot_get_an_open_annotation_by_ID_with_content_type_text/n3_.yml +0 -3995
  77. data/spec/fixtures/vcr_cassettes/TriannonClient/GET_annotation_by_ID_/_get_annotation/with_content_type/cannot_get_an_open_annotation_by_ID_with_content_type_text/rdf_n3_.yml +0 -3995
  78. data/spec/fixtures/vcr_cassettes/TriannonClient/GET_annotation_by_ID_/_get_annotation/with_content_type/cannot_get_an_open_annotation_by_ID_with_content_type_text/rdf_turtle_.yml +0 -3995
  79. data/spec/fixtures/vcr_cassettes/TriannonClient/GET_annotation_by_ID_/_get_annotation/with_content_type/cannot_get_an_open_annotation_by_ID_with_content_type_text/x-nquads_.yml +0 -3995
  80. data/spec/fixtures/vcr_cassettes/TriannonClient/GET_annotation_by_ID_/_get_annotation/with_content_type/gets_an_open_annotation_by_ID_with_content_type_application/ld_json_.yml +0 -4946
  81. data/spec/fixtures/vcr_cassettes/TriannonClient/GET_annotation_by_ID_/_get_annotation/with_content_type/gets_an_open_annotation_by_ID_with_content_type_text/turtle_.yml +0 -2566
  82. data/spec/fixtures/vcr_cassettes/TriannonClient/GET_annotation_by_ID_/_get_annotation/with_content_type/requests_an_open_annotation_by_ID_with_content_type_application/rdf_n3_.yml +0 -2502
  83. data/spec/fixtures/vcr_cassettes/TriannonClient/GET_annotation_by_ID_/_get_annotation/with_content_type/requests_an_open_annotation_by_ID_with_content_type_application/rdf_xml_.yml +0 -2502
  84. data/spec/fixtures/vcr_cassettes/TriannonClient/GET_annotation_by_ID_/_get_annotation/with_content_type/requests_an_open_annotation_by_ID_with_content_type_application/trig_.yml +0 -2502
  85. data/spec/fixtures/vcr_cassettes/TriannonClient/GET_annotation_by_ID_/_get_annotation/with_content_type/requests_an_open_annotation_by_ID_with_content_type_application/trix_.yml +0 -2502
  86. data/spec/fixtures/vcr_cassettes/TriannonClient/GET_annotation_by_ID_/_get_annotation/with_content_type/requests_an_open_annotation_by_ID_with_content_type_application/turtle_.yml +0 -2502
  87. data/spec/fixtures/vcr_cassettes/TriannonClient/GET_annotation_by_ID_/_get_annotation/with_content_type/requests_an_open_annotation_by_ID_with_content_type_application/x-ld_json_.yml +0 -2502
  88. data/spec/fixtures/vcr_cassettes/TriannonClient/GET_annotation_by_ID_/_get_annotation/with_content_type/requests_an_open_annotation_by_ID_with_content_type_application/x-trig_.yml +0 -2502
  89. data/spec/fixtures/vcr_cassettes/TriannonClient/GET_annotation_by_ID_/_get_annotation/with_content_type/requests_an_open_annotation_by_ID_with_content_type_application/x-turtle_.yml +0 -2502
  90. data/spec/fixtures/vcr_cassettes/TriannonClient/GET_annotation_by_ID_/_get_annotation/with_content_type/requests_an_open_annotation_by_ID_with_content_type_text/n3_.yml +0 -2502
  91. data/spec/fixtures/vcr_cassettes/TriannonClient/GET_annotation_by_ID_/_get_annotation/with_content_type/requests_an_open_annotation_by_ID_with_content_type_text/rdf_n3_.yml +0 -2502
  92. data/spec/fixtures/vcr_cassettes/TriannonClient/GET_annotation_by_ID_/_get_annotation/with_content_type/requests_an_open_annotation_by_ID_with_content_type_text/rdf_turtle_.yml +0 -2502
  93. data/spec/fixtures/vcr_cassettes/TriannonClient/GET_annotation_by_ID_/_get_annotation/with_content_type/requests_an_open_annotation_by_ID_with_content_type_text/turtle_.yml +0 -2502
  94. data/spec/fixtures/vcr_cassettes/TriannonClient/GET_annotation_by_ID_/_get_annotation/with_content_type/requests_an_open_annotation_by_ID_with_content_type_text/x-nquads_.yml +0 -2502
  95. data/spec/fixtures/vcr_cassettes/TriannonClient/GET_annotation_by_ID_/_get_annotation/without_content_type/logs_exceptions.yml +0 -2502
  96. data/spec/fixtures/vcr_cassettes/TriannonClient/GET_annotation_by_ID_/_get_annotation/without_content_type/raises_an_argument_error_with_a_nil_ID.yml +0 -2502
  97. data/spec/fixtures/vcr_cassettes/TriannonClient/GET_annotation_by_ID_/_get_annotation/without_content_type/raises_an_argument_error_with_an_empty_string_ID.yml +0 -2502
  98. data/spec/fixtures/vcr_cassettes/TriannonClient/GET_annotation_by_ID_/_get_annotation/without_content_type/raises_an_argument_error_with_an_integer_ID.yml +0 -2502
  99. data/spec/fixtures/vcr_cassettes/TriannonClient/GET_annotation_by_ID_/_get_annotation/without_content_type/requests_an_open_annotation_by_ID_accepting_a_default_JSON-LD_content.yml +0 -2502
  100. data/spec/fixtures/vcr_cassettes/TriannonClient/GET_annotation_by_ID_/_get_annotation/without_content_type/returns_an_EMPTY_RDF_graph_for_a_500_server_response.yml +0 -2502
  101. data/spec/fixtures/vcr_cassettes/TriannonClient/GET_annotation_by_ID_/_get_annotation/without_content_type/returns_an_EMPTY_RDF_graph_with_a_valid_ID_for_NO_annotation_on_the_server.yml +0 -2561
  102. data/spec/fixtures/vcr_cassettes/TriannonClient/GET_annotation_by_ID_/_get_annotation/without_content_type/returns_an_RDF_graph_with_a_valid_ID_for_an_annotation_on_the_server.yml +0 -4946
  103. data/spec/fixtures/vcr_cassettes/TriannonClient/GET_annotation_by_ID_/_get_iiif_annotation/requests_an_open_annotation_by_ID_using_a_IIIF_profile.yml +0 -2502
  104. data/spec/fixtures/vcr_cassettes/TriannonClient/GET_annotation_by_ID_/_get_iiif_annotation/returns_an_RDF_Graph_of_an_open_annotation.yml +0 -2746
  105. data/spec/fixtures/vcr_cassettes/TriannonClient/GET_annotation_by_ID_/_get_oa_annotation/requests_an_open_annotation_by_ID_using_an_OA_profile.yml +0 -2502
  106. data/spec/fixtures/vcr_cassettes/TriannonClient/GET_annotation_by_ID_/_get_oa_annotation/returns_an_RDF_Graph_of_an_open_annotation.yml +0 -4946
  107. data/spec/fixtures/vcr_cassettes/TriannonClient/_delete_annotation/does_not_log_exceptions_for_missing_annotations_404_responses_.yml +0 -64
  108. data/spec/fixtures/vcr_cassettes/TriannonClient/_delete_annotation/does_not_log_exceptions_for_missing_annotations_410_responses_.yml +0 -64
  109. data/spec/fixtures/vcr_cassettes/TriannonClient/_delete_annotation/logs_exceptions.yml +0 -64
  110. data/spec/fixtures/vcr_cassettes/TriannonClient/_delete_annotation/returns_FALSE_for_a_500_response_to_a_DELETE_request.yml +0 -64
  111. data/spec/fixtures/vcr_cassettes/TriannonClient/_delete_annotation/returns_TRUE_for_a_200_response_to_a_DELETE_request.yml +0 -64
  112. data/spec/fixtures/vcr_cassettes/TriannonClient/_delete_annotation/returns_TRUE_for_a_202_response_to_a_DELETE_request.yml +0 -64
  113. data/spec/fixtures/vcr_cassettes/TriannonClient/_delete_annotation/returns_TRUE_for_a_204_response_to_a_DELETE_request.yml +0 -64
  114. data/spec/fixtures/vcr_cassettes/TriannonClient/_delete_annotation/returns_TRUE_for_a_404_response_to_a_DELETE_request.yml +0 -64
  115. data/spec/fixtures/vcr_cassettes/TriannonClient/_delete_annotation/returns_TRUE_for_a_410_response_to_a_DELETE_request.yml +0 -64
  116. data/spec/fixtures/vcr_cassettes/TriannonClient/_delete_annotation/returns_TRUE_when_deleting_an_open_annotation_that_exists.yml +0 -2549
  117. data/spec/fixtures/vcr_cassettes/TriannonClient/_post_annotation/logs_exceptions.yml +0 -5355
  118. data/spec/fixtures/vcr_cassettes/TriannonClient/_post_annotation/logs_exceptions_for_RestClient_Exception.yml +0 -5355
  119. data/spec/fixtures/vcr_cassettes/TriannonClient/_post_annotation/returns_a_RestClient_Response_object.yml +0 -2502
  120. data/spec/fixtures/vcr_cassettes/TriannonClient/response_processing_utilities/_annotation_id/returns_a_String_ID_from_the_RDF_URI_of_an_annotation.yml +0 -2502
  121. data/spec/fixtures/vcr_cassettes/TriannonClient/response_processing_utilities/_annotation_id/returns_a_String_ID_that_is_not_empty.yml +0 -2502
  122. data/spec/fixtures/vcr_cassettes/TriannonClient/response_processing_utilities/_annotation_uris/returns_an_RDF_URI_that_is_a_valid_URI.yml +0 -2551
  123. data/spec/fixtures/vcr_cassettes/TriannonClient/response_processing_utilities/_annotation_uris/returns_an_array_of_RDF_URI_from_an_RDF_Graph_of_an_annotation.yml +0 -2502
  124. data/spec/fixtures/vcr_cassettes/TriannonClient/response_processing_utilities/_response2graph/accepts_a_RestClient_Response_instance.yml +0 -4898
  125. data/spec/fixtures/vcr_cassettes/TriannonClient/response_processing_utilities/_response2graph/raises_ArgumentError_when_given_an_empty_String.yml +0 -2502
  126. data/spec/fixtures/vcr_cassettes/TriannonClient/response_processing_utilities/_response2graph/raises_ArgumentError_when_given_nil.yml +0 -2502
  127. data/spec/fixtures/vcr_cassettes/TriannonClient/response_processing_utilities/_response2graph/returns_an_RDF_Graph.yml +0 -2502
  128. data/spec/lib/triannon-client/triannon_client_spec.rb +0 -546
@@ -1,3995 +0,0 @@
1
- ---
2
- http_interactions:
3
- - request:
4
- method: post
5
- uri: http://localhost:3000/annotations/foo/
6
- body:
7
- encoding: US-ASCII
8
- string: commit=Create%20Annotation&annotation[data]=%7B%22%40context%22%3A%22http%3A%2F%2Fiiif.io%2Fapi%2Fpresentation%2F2%2Fcontext.json%22%2C%22%40graph%22%3A%5B%7B%22%40id%22%3A%22_%3Ag70349699654640%22%2C%22%40type%22%3A%5B%22dctypes%3AText%22%2C%22cnt%3AContentAsText%22%5D%2C%22chars%22%3A%22I%20love%20this!%22%2C%22format%22%3A%22text%2Fplain%22%2C%22language%22%3A%22en%22%7D%2C%7B%22%40type%22%3A%22oa%3AAnnotation%22%2C%22motivation%22%3A%22oa%3Acommenting%22%2C%22on%22%3A%22http%3A%2F%2Fpurl.stanford.edu%2Fkq131cs7229%22%2C%22resource%22%3A%22_%3Ag70349699654640%22%7D%5D%7D
9
- headers:
10
- Accept:
11
- - application/ld+json
12
- Accept-Encoding:
13
- - gzip, deflate
14
- Content-Type:
15
- - application/x-www-form-urlencoded
16
- Content-Length:
17
- - '580'
18
- User-Agent:
19
- - Ruby
20
- response:
21
- status:
22
- code: 201
23
- message: 'Created '
24
- headers:
25
- X-Frame-Options:
26
- - SAMEORIGIN
27
- X-Xss-Protection:
28
- - 1; mode=block
29
- X-Content-Type-Options:
30
- - nosniff
31
- Content-Type:
32
- - application/ld+json; charset=utf-8
33
- Etag:
34
- - W/"77a6b6002406ac43987b4a748d2782cf"
35
- Cache-Control:
36
- - max-age=0, private, must-revalidate
37
- X-Request-Id:
38
- - 50bbc4eb-6752-4b63-ad59-29fc17affcb8
39
- X-Runtime:
40
- - '1.853623'
41
- Server:
42
- - WEBrick/1.3.1 (Ruby/2.2.2/2015-04-13)
43
- Date:
44
- - Fri, 19 Jun 2015 18:40:03 GMT
45
- Content-Length:
46
- - '447'
47
- Connection:
48
- - Keep-Alive
49
- Set-Cookie:
50
- - _internal_session=NENkU01ja0hON2pPZG9Mek1GeG5aMEp5Y3RQTFM0TDVUNzlKVndORW1QVFlFaDF5aGpkakt2cEsycit6VHpNRDQ4Z0h1ZURuNUlqQXE0MVpVdVVmZVZ3UWdtMWN0elM2aGtXL2twK25OQkJsUWlPbTVKakVBTUJzMmpFeG9iNHg5NWhDWFc0L3ozZXFud0VHbFovU1VvN3BFb1RDQXFIN1kxbHovNDRwczdGYTFiMDF5YW8ycFpjTzArL0FmU1JzczlKN2N0bEk0MVF0d3FRbEo5bUhvMnp5MkF6UlY5VTdBQ2JUTFlhMVM0RlVWazZWQUZ1WEtkanRCQ2hhbHV5Ty0tVyt6aW41emYrTVRQYm41TG05RTNwdz09--b74842f12d1ef5b65e723a132f7a69ecba8040fa;
51
- path=/; HttpOnly
52
- - request_method=POST; path=/
53
- body:
54
- encoding: UTF-8
55
- string: '{"@context":"http://www.w3.org/ns/oa-context-20130208.json","@graph":[{"@id":"_:g70154453293080","@type":["dctypes:Text","cnt:ContentAsText"],"chars":"I
56
- love this!","format":"text/plain","language":"en"},{"@id":"http://your.triannon-server.com/annotations/foo/02/c8/79/24/02c87924-37bb-4005-b781-573d0dab7ce4","@type":"oa:Annotation","hasBody":"_:g70154453293080","hasTarget":"http://purl.stanford.edu/kq131cs7229","motivatedBy":"oa:commenting"}]}'
57
- http_version:
58
- recorded_at: Fri, 19 Jun 2015 18:40:03 GMT
59
- - request:
60
- method: get
61
- uri: http://www.w3.org/ns/oa-context-20130208.json
62
- body:
63
- encoding: US-ASCII
64
- string: ''
65
- headers:
66
- Accept:
67
- - application/ld+json, application/json
68
- Accept-Encoding:
69
- - gzip, deflate
70
- User-Agent:
71
- - Ruby
72
- response:
73
- status:
74
- code: 307
75
- message: Temporary Redirect
76
- headers:
77
- Date:
78
- - Fri, 19 Jun 2015 18:40:04 GMT
79
- Server:
80
- - Apache/2
81
- Location:
82
- - http://www.w3.org/ns/oa.jsonld
83
- Cache-Control:
84
- - max-age=21600
85
- Expires:
86
- - Sat, 20 Jun 2015 00:40:04 GMT
87
- Content-Length:
88
- - '240'
89
- Content-Type:
90
- - text/html; charset=iso-8859-1
91
- body:
92
- encoding: UTF-8
93
- string: |
94
- <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
95
- <html><head>
96
- <title>307 Temporary Redirect</title>
97
- </head><body>
98
- <h1>Temporary Redirect</h1>
99
- <p>The document has moved <a href="http://www.w3.org/ns/oa.jsonld">here</a>.</p>
100
- </body></html>
101
- http_version:
102
- recorded_at: Fri, 19 Jun 2015 18:40:04 GMT
103
- - request:
104
- method: get
105
- uri: http://www.w3.org/ns/oa.jsonld
106
- body:
107
- encoding: US-ASCII
108
- string: ''
109
- headers:
110
- Accept:
111
- - application/ld+json, application/json
112
- Accept-Encoding:
113
- - gzip, deflate
114
- Cookie:
115
- - ''
116
- User-Agent:
117
- - Ruby
118
- response:
119
- status:
120
- code: 200
121
- message: OK
122
- headers:
123
- Date:
124
- - Fri, 19 Jun 2015 18:40:04 GMT
125
- Server:
126
- - Apache/2
127
- Last-Modified:
128
- - Tue, 06 May 2014 11:14:49 GMT
129
- Etag:
130
- - '"b533-4f8b95b2a9c40"'
131
- Accept-Ranges:
132
- - bytes
133
- Content-Length:
134
- - '46387'
135
- Cache-Control:
136
- - max-age=21600
137
- Expires:
138
- - Sat, 20 Jun 2015 00:40:04 GMT
139
- P3p:
140
- - policyref="http://www.w3.org/2014/08/p3p.xml"
141
- Access-Control-Allow-Origin:
142
- - "*"
143
- Content-Type:
144
- - application/ld+json
145
- body:
146
- encoding: UTF-8
147
- string: |+
148
- {
149
- "@context": {
150
- "oa": "http://www.w3.org/ns/oa#",
151
- "cnt": "http://www.w3.org/2011/content#",
152
- "dc": "http://purl.org/dc/elements/1.1/",
153
- "dcterms": "http://purl.org/dc/terms/",
154
- "dctypes": "http://purl.org/dc/dcmitype/",
155
- "foaf": "http://xmlns.com/foaf/0.1/",
156
- "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
157
- "rdfs": "http://www.w3.org/2000/01/rdf-schema#",
158
- "skos": "http://www.w3.org/2004/02/skos/core#",
159
- "owl": "http://www.w3.org/2002/07/owl#",
160
- "prov": "http://www.w3.org/ns/prov#",
161
- "trig": "http://www.w3.org/2004/03/trix/rdfg-1/",
162
- "xsd": "http://www.w3.org/2001/XMLSchema#",
163
-
164
-
165
- "hasBody" : {"@type":"@id", "@id" : "oa:hasBody"},
166
- "hasTarget" : {"@type":"@id", "@id" : "oa:hasTarget"},
167
- "hasSource" : {"@type":"@id", "@id" : "oa:hasSource"},
168
- "hasSelector" : {"@type":"@id", "@id" : "oa:hasSelector"},
169
- "hasState" : {"@type":"@id", "@id" : "oa:hasState"},
170
- "hasScope" : {"@type":"@id", "@id" : "oa:hasScope"},
171
- "annotatedBy" : {"@type":"@id", "@id" : "oa:annotatedBy"},
172
- "serializedBy" : {"@type":"@id", "@id" : "oa:serializedBy"},
173
- "motivatedBy" : {"@type":"@id", "@id" : "oa:motivatedBy"},
174
- "equivalentTo" : {"@type":"@id", "@id" : "oa:equivalentTo"},
175
- "styledBy" : {"@type":"@id", "@id" : "oa:styledBy"},
176
- "cachedSource" : {"@type":"@id", "@id" : "oa:cachedSource"},
177
- "conformsTo" : {"@type":"@id", "@id" : "dcterms:conformsTo"},
178
- "default" : {"@type":"@id", "@id" : "oa:default"},
179
- "item" : {"@type":"@id", "@id" : "oa:item"},
180
- "first": {"@type":"@id", "@id" : "rdf:first"},
181
- "rest": {"@type":"@id", "@id" : "rdf:rest", "@container" : "@list"},
182
-
183
- "annotatedAt" : { "@type": "xsd:dateTimeStamp", "@id": "oa:annotatedAt" },
184
- "end" : { "@type": "xsd:nonNegativeInteger", "@id": "oa:end" },
185
- "exact" : "oa:exact",
186
- "prefix" : "oa:prefix",
187
- "serializedAt" : { "@type": "xsd:dateTimeStamp", "@id": "oa:serializedAt" },
188
- "start" : { "@type": "xsd:nonNegativeInteger", "@id": "oa:start" },
189
- "styleClass" : "oa:styleClass",
190
- "suffix" : "oa:suffix",
191
- "when" : { "@type": "xsd:dateTimeStamp", "@id": "oa:when" },
192
-
193
- "chars" : "cnt:chars",
194
- "bytes" : "cnt:bytes",
195
- "format" : "dc:format",
196
- "language" : "dc:language",
197
- "value" : "rdf:value",
198
- "label" : "rdfs:label",
199
- "name" : "foaf:name",
200
- "mbox" : "foaf:mbox"
201
-
202
- },
203
- "@graph": [
204
- {
205
- "@id": "oa:annotatedBy",
206
- "@type": "owl:ObjectProperty",
207
- "rdfs:comment": {
208
- "@language": "en",
209
- "@value": "The object of the relationship is a resource that identifies the agent responsible for creating the Annotation. This may be either a human or software agent. \n\nThere SHOULD be exactly 1 oa:annotatedBy relationship per Annotation, but MAY be 0 or more than 1, as the Annotation may be anonymous, or multiple agents may have worked together on it.\n\nIt is RECOMMENDED to use these and other FOAF terms to describe agents: foaf:Person, prov:SoftwareAgent, foaf:Organization, foaf:name, foaf:mbox, foaf:openid, foaf:homepage"
210
- },
211
- "rdfs:domain": {
212
- "@id": "oa:Annotation"
213
- },
214
- "rdfs:isDefinedBy": {
215
- "@id": "oa:"
216
- },
217
- "rdfs:label": {
218
- "@language": "en",
219
- "@value": "annotatedBy"
220
- },
221
- "rdfs:subPropertyOf": {
222
- "@id": "prov:wasAttributedTo"
223
- }
224
- },
225
- {
226
- "@id": "oa:commenting",
227
- "@type": [
228
- "oa:Motivation",
229
- "owl:NamedIndividual"
230
- ],
231
- "rdfs:comment": {
232
- "@language": "en",
233
- "@value": "The motivation that represents a commentary about or review of the target resource(s). For example to provide a commentary about a particular PDF."
234
- },
235
- "skos:inScheme": {
236
- "@id": "oa:motivationScheme"
237
- },
238
- "skos:prefLabel": {
239
- "@language": "en",
240
- "@value": "commenting"
241
- }
242
- },
243
- {
244
- "@id": "oa:SvgSelector",
245
- "@type": "owl:Class",
246
- "rdfs:comment": {
247
- "@language": "en",
248
- "@value": "A Selector which selects an area specified as an SVG shape.\n\nThe SVG document should either be retrievable by resolving the URI of this resource, or be included as an Embedded Resource using cnt:Content.\n\nIt is RECOMMENDED that the document contain only a single shape element and that element SHOULD be one of: path, rect, circle, ellipse, polyline, polygon or g. The g element SHOULD ONLY be used to construct a multi-element group, for example to define a donut shape requiring an outer circle and a clipped inner circle.\n\nThe dimensions of both the shape and the SVG canvas MUST be relative to the dimensions of the Source resource. For example, given an image which is 600 pixels by 400 pixels, and the desired section is a circle of 100 pixel radius at the center of the image, then the SVG element would be: <circle cx=\"300\" cy=\"200\" r=\"100\"/>\n\nIt is NOT RECOMMENDED to include style information within the SVG element, nor Javascript, animation, text or other non shape oriented information. Clients SHOULD ignore such information if present."
249
- },
250
- "rdfs:isDefinedBy": {
251
- "@id": "oa:"
252
- },
253
- "rdfs:label": {
254
- "@language": "en",
255
- "@value": "SvgSelector"
256
- },
257
- "rdfs:subClassOf": {
258
- "@id": "oa:Selector"
259
- }
260
- },
261
- {
262
- "@id": "oa:Selector",
263
- "@type": "owl:Class",
264
- "rdfs:comment": {
265
- "@language": "en",
266
- "@value": "A resource which describes the segment of interest in a representation of a Source resource, indicated with oa:hasSelector from the Specific Resource. \n\nThis class is not used directly in Annotations, only its subclasses are.\n\nThe nature of the Selector will be dependent on the type of the representation for which the segment is conveyed. The specific type of selector should be indicated using a subclass of oa:Selector.\n\nThe Specifier's description MAY be conveyed as an external or embedded resource (cnt:Content), or as RDF properties within the graph. The description SHOULD use existing standards whenever possible. If the Specifier has an HTTP URI, then its description, and only its description, MUST be returned when the URI is dereferenced."
267
- },
268
- "rdfs:isDefinedBy": {
269
- "@id": "oa:"
270
- },
271
- "rdfs:label": {
272
- "@language": "en",
273
- "@value": "Selector"
274
- }
275
- },
276
- {
277
- "@id": "oa:Style",
278
- "@type": "owl:Class",
279
- "rdfs:comment": {
280
- "@language": "en",
281
- "@value": "A resource which describes the style in which the selection or resource should be rendered, indicated with oa:styledBy from an oa:Annotation.\n\nThis class is not used directly in Annotations, only its subclasses are.\n\nThe content of the resource provides the rendering hints about the Annotation's constituent resources. \n\nThe Specifier's description MAY be conveyed as an external or embedded resource (cnt:Content), or as RDF properties within the graph. The description SHOULD use existing standards whenever possible. If the Specifier has an HTTP URI, then its description, and only its description, MUST be returned when the URI is dereferenced."
282
- },
283
- "rdfs:isDefinedBy": {
284
- "@id": "oa:"
285
- },
286
- "rdfs:label": {
287
- "@language": "en",
288
- "@value": "Style"
289
- }
290
- },
291
- {
292
- "@id": "oa:exact",
293
- "@type": "owl:DatatypeProperty",
294
- "rdfs:comment": {
295
- "@language": "en",
296
- "@value": "A copy of the text which is being selected, after normalization.\n\nSee oa:TextQuoteSelector."
297
- },
298
- "rdfs:domain": {
299
- "@id": "oa:Selector"
300
- },
301
- "rdfs:isDefinedBy": {
302
- "@id": "oa:"
303
- },
304
- "rdfs:label": {
305
- "@language": "en",
306
- "@value": "exact"
307
- }
308
- },
309
- {
310
- "@id": "oa:hasBody",
311
- "@type": "owl:ObjectProperty",
312
- "rdfs:comment": {
313
- "@language": "en",
314
- "@value": "The relationship between oa:Annotation and body. The body is somehow \"about\" the oa:hasTarget of the annotation.\n\nThe Body may be of any media type, and contain any type of content. The Body SHOULD be identified by HTTP URIs unless they are embedded within the Annotation.\n\nEmbedded bodies SHOULD be instances of cnt:ContentAsText and embed their content with cnt:chars. They SHOULD declare their media type with dc:format, and MAY indicate their language using dc:language and a RFC-3066 language tag. \n\nThere is no OA class provided for \"Body\" as a body might be a target of a different annotation. However, there SHOULD be 1 or more content-based classes associated with the body resources of an Annotation, and the dctypes: vocabulary is recommended for this purpose, for instance dctypes:Text to declare textual content.\n"
315
- },
316
- "rdfs:domain": {
317
- "@id": "oa:Annotation"
318
- },
319
- "rdfs:isDefinedBy": {
320
- "@id": "oa:"
321
- },
322
- "rdfs:label": {
323
- "@language": "en",
324
- "@value": "hasBody"
325
- }
326
- },
327
- {
328
- "@id": "oa:Choice",
329
- "@type": "owl:Class",
330
- "rdfs:comment": {
331
- "@language": "en",
332
- "@value": "A multiplicity construct that conveys to a consuming application that it should select one of the constituent resources to display to the user, and not render/use all of them. \n\noa:Choice can be used as the object of the object of the oa:hasBody, oa:hasTarget, oa:hasSelector, oa:hasState, oa:styledBy and oa:hasScope relationships, \n\nThere MUST be 1 or more oa:item relationships for each oa:Choice.\n\nThere SHOULD be exactly 1 default relationship for each Choice."
333
- },
334
- "rdfs:isDefinedBy": {
335
- "@id": "oa:"
336
- },
337
- "rdfs:label": {
338
- "@language": "en",
339
- "@value": "Choice"
340
- },
341
- "rdfs:subClassOf": {
342
- "@id": "rdf:Alt"
343
- }
344
- },
345
- {
346
- "@id": "oa:when",
347
- "@type": "owl:DatatypeProperty",
348
- "rdfs:comment": {
349
- "@language": "en",
350
- "@value": "The timestamp at which the Source resource should be interpreted for the Annotation, typically the time that the Annotation was created."
351
- },
352
- "rdfs:domain": {
353
- "@id": "oa:TimeState"
354
- },
355
- "rdfs:isDefinedBy": {
356
- "@id": "oa:"
357
- },
358
- "rdfs:label": {
359
- "@language": "en",
360
- "@value": "when"
361
- },
362
- "rdfs:range": {
363
- "@id": "xsd:dateTimeStamp"
364
- }
365
- },
366
- {
367
- "@id": "oa:serializedBy",
368
- "@type": "owl:ObjectProperty",
369
- "rdfs:comment": {
370
- "@language": "en",
371
- "@value": "The object of the relationship is the agent, likely software, responsible for generating the serialization of the Annotation's serialization. \n\nIt is RECOMMENDED to use these and other FOAF terms to describe agents: foaf:Person, prov:SoftwareAgent, foaf:Organization, foaf:name, foaf:mbox, foaf:openid, foaf:homepage\n\nThere MAY be 0 or more oa:serializedBy relationships per Annotation."
372
- },
373
- "rdfs:domain": {
374
- "@id": "oa:Annotation"
375
- },
376
- "rdfs:isDefinedBy": {
377
- "@id": "oa:"
378
- },
379
- "rdfs:label": {
380
- "@language": "en",
381
- "@value": "serializedBy"
382
- },
383
- "rdfs:subPropertyOf": {
384
- "@id": "prov:wasAttributedTo"
385
- }
386
- },
387
- {
388
- "@id": "oa:motivatedBy",
389
- "@type": "owl:ObjectProperty",
390
- "rdfs:comment": {
391
- "@language": "en",
392
- "@value": "The relationship between an Annotation and a Motivation, indicating the reasons why the Annotation was created.\n\nEach Annotation SHOULD have at least one oa:motivatedBy relationship, and MAY be more than 1."
393
- },
394
- "rdfs:domain": {
395
- "@id": "oa:Annotation"
396
- },
397
- "rdfs:isDefinedBy": {
398
- "@id": "oa:"
399
- },
400
- "rdfs:label": {
401
- "@language": "en",
402
- "@value": "motivatedBy"
403
- },
404
- "rdfs:range": {
405
- "@id": "oa:Motivation"
406
- }
407
- },
408
- {
409
- "@id": "oa:moderating",
410
- "@type": [
411
- "oa:Motivation",
412
- "owl:NamedIndividual"
413
- ],
414
- "rdfs:comment": {
415
- "@language": "en",
416
- "@value": "The motivation that represents an assignment of value or quality to the target resource(s). For example annotating an Annotation to moderate it up in a trust network or threaded discussion."
417
- },
418
- "skos:inScheme": {
419
- "@id": "oa:motivationScheme"
420
- },
421
- "skos:prefLabel": {
422
- "@language": "en",
423
- "@value": "moderating"
424
- }
425
- },
426
- {
427
- "@id": "oa:highlighting",
428
- "@type": [
429
- "oa:Motivation",
430
- "owl:NamedIndividual"
431
- ],
432
- "rdfs:comment": {
433
- "@language": "en",
434
- "@value": "The motivation that represents a highlighted section of the target resource or segment. For example to draw attention to the selected text that the annotator disagrees with. A Highlight may or may not have a Body resource"
435
- },
436
- "skos:inScheme": {
437
- "@id": "oa:motivationScheme"
438
- },
439
- "skos:prefLabel": {
440
- "@language": "en",
441
- "@value": "highlighting"
442
- }
443
- },
444
- {
445
- "@id": "oa:styledBy",
446
- "@type": "owl:ObjectProperty",
447
- "rdfs:comment": {
448
- "@language": "en",
449
- "@value": "The relationship between a oa:Annotation and a oa:Style.\n\nThere MAY be 0 or 1 styledBy relationships for each Annotation.\n\nIf there are multiple Style resources that must be associated with the Annotation, then the use of the Multiplicity Constructs oa:Choice, oa:Composite or oa:List is RECOMMENDED."
450
- },
451
- "rdfs:domain": {
452
- "@id": "oa:Annotation"
453
- },
454
- "rdfs:isDefinedBy": {
455
- "@id": "oa:"
456
- },
457
- "rdfs:label": {
458
- "@language": "en",
459
- "@value": "styledBy"
460
- },
461
- "rdfs:range": {
462
- "@id": "oa:Style"
463
- }
464
- },
465
- {
466
- "@id": "oa:FragmentSelector",
467
- "@type": "owl:Class",
468
- "rdfs:comment": {
469
- "@language": "en",
470
- "@value": "A Selector which describes the segment of interest in a representation, through the use of the fragment identifier component of a URI.\n\nIt is RECOMMENDED to use oa:FragmentSelector as the selector on a Specific Resource rather than annotating the fragment URI directly, in order to improve discoverability of annotation on the Source.\n\nThe oa:FragmentSelector MUST have exactly 1 rdf:value property, containing the fragment identifier component of a URI that describes the segment of interest in the resource, excluding the initial \"#\".\n\nThe Fragment Selector SHOULD have a dcterms:conformsTo relationship with the object being the specification that defines the syntax of the fragment, for instance <http://tools.ietf.org/rfc/rfc3236> for HTML fragments. "
471
- },
472
- "rdfs:isDefinedBy": {
473
- "@id": "oa:"
474
- },
475
- "rdfs:label": {
476
- "@language": "en",
477
- "@value": "FragmentSelector"
478
- },
479
- "rdfs:subClassOf": {
480
- "@id": "oa:Selector"
481
- }
482
- },
483
- {
484
- "@id": "oa:SpecificResource",
485
- "@type": "owl:Class",
486
- "rdfs:comment": {
487
- "@language": "en",
488
- "@value": "A resource identifies part of another Source resource, a particular representation of a resource, a resource with styling hints for renders, or any combination of these. \n\nThe Specific Resource takes the role of oa:hasBody or oa:hasTarget in an oa:Annotation instead of the Source resource.\n\nThere MUST be exactly 1 oa:hasSource relationship associated with a Specific Resource.\n\nThere MUST be exactly 0 or 1 oa:hasSelector relationship associated with a Specific Resource.\n\nThere MAY be 0 or 1 oa:hasState relationship for each Specific Resource.\n\nIf the Specific Resource has an HTTP URI, then the exact segment of the Source resource that it identifies, and only the segment, MUST be returned when the URI is dereferenced. For example, if the segment of interest is a region of an image and the Specific Resource has an HTTP URI, then dereferencing it MUST return the selected region of the image as it was at the time when the annotation was created. Typically this would be a burden to support, and thus the Specific Resource SHOULD be identified by a globally unique URI, such as a UUID URN. If it is not considered important to allow other Annotations or systems to refer to the Specific Resource, then a blank node MAY be used instead."
489
- },
490
- "rdfs:isDefinedBy": {
491
- "@id": "oa:"
492
- },
493
- "rdfs:label": {
494
- "@language": "en",
495
- "@value": "SpecificResource"
496
- }
497
- },
498
- {
499
- "@id": "oa:annotatedAt",
500
- "@type": "owl:DatatypeProperty",
501
- "rdfs:comment": {
502
- "@language": "en",
503
- "@value": "The time at which the Annotation was created. \n\nThere SHOULD be exactly 1 oa:annotatedAt property per Annotation, and MUST NOT be more than 1. The datetime MUST be expressed in the xsd:dateTime format, and SHOULD have a timezone specified."
504
- },
505
- "rdfs:domain": {
506
- "@id": "oa:Annotation"
507
- },
508
- "rdfs:isDefinedBy": {
509
- "@id": "oa:"
510
- },
511
- "rdfs:label": {
512
- "@language": "en",
513
- "@value": "annotatedAt"
514
- },
515
- "rdfs:range": {
516
- "@id": "xsd:dateTimeStamp"
517
- }
518
- },
519
- {
520
- "@id": "oa:editing",
521
- "@type": [
522
- "oa:Motivation",
523
- "owl:NamedIndividual"
524
- ],
525
- "rdfs:comment": {
526
- "@language": "en",
527
- "@value": "The motivation that represents a request for a modification or edit to the target resource. For example, an Annotation that requests a typo to be corrected."
528
- },
529
- "skos:inScheme": {
530
- "@id": "oa:motivationScheme"
531
- },
532
- "skos:prefLabel": {
533
- "@language": "en",
534
- "@value": "editing"
535
- }
536
- },
537
- {
538
- "@id": "oa:Annotation",
539
- "@type": "owl:Class",
540
- "rdfs:comment": {
541
- "@language": "en",
542
- "@value": "Typically an Annotation has a single Body (oa:hasBody), which is the comment or other descriptive resource, and a single Target (oa:hasTarget) that the Body is somehow \"about\". The Body provides the information which is annotating the Target. \n\nThis \"aboutness\" may be further clarified or extended to notions such as classifying or identifying with oa:motivatedBy."
543
- },
544
- "rdfs:isDefinedBy": {
545
- "@id": "oa:"
546
- },
547
- "rdfs:label": {
548
- "@language": "en",
549
- "@value": "Annotation"
550
- }
551
- },
552
- {
553
- "@id": "oa:equivalentTo",
554
- "@type": "owl:ObjectProperty",
555
- "rdfs:comment": {
556
- "@language": "en",
557
- "@value": "The subject and object resources of the oa:equivalentTo relationship represent the same resource, but potentially have different metadata such as oa:serializedBy, oa:serializedAt and serialization format. oa:equivalentTo is a symmetrical and transitive relationship; if A oa:equivalentTo B, then it is also true that B oa:equivalent A; and that if B oa:equivalentTo C, then it is also true that A oa:equivalentTo C. \n\nThe Annotation MAY include 0 or more instances of the oa:equivalentTo relationship between copies of the Annotation or other resources, and SHOULD include as many as are available.\n\nIf a system publishes an embedded resource (a cnt:Content) at a new HTTP URI, then it SHOULD express the oa:equivalentTo relationship between the resource's URN and the new URI from which it is available."
558
- },
559
- "rdfs:isDefinedBy": {
560
- "@id": "oa:"
561
- },
562
- "rdfs:label": {
563
- "@language": "en",
564
- "@value": "equivalentTo"
565
- },
566
- "rdfs:subPropertyOf": {
567
- "@id": "prov:alternateOf"
568
- }
569
- },
570
- {
571
- "@id": "oa:Motivation",
572
- "@type": "owl:Class",
573
- "rdfs:comment": {
574
- "@language": "en",
575
- "@value": "The Motivation for creating an Annotation, indicated with oa:motivatedBy, is a reason for its creation, and might include things like oa:replying to another annotation, oa:commenting on a resource, or oa:linking to a related resource.\n\nEach Annotation SHOULD have at least one oa:motivatedBy relationship to an instance of oa:Motivation, which is a subClass of skos:Concept."
576
- },
577
- "rdfs:isDefinedBy": {
578
- "@id": "oa:"
579
- },
580
- "rdfs:label": {
581
- "@language": "en",
582
- "@value": "Motivation"
583
- },
584
- "rdfs:subClassOf": {
585
- "@id": "skos:Concept"
586
- }
587
- },
588
- {
589
- "@id": "oa:tagging",
590
- "@type": [
591
- "oa:Motivation",
592
- "owl:NamedIndividual"
593
- ],
594
- "rdfs:comment": {
595
- "@language": "en",
596
- "@value": "The motivation that represents adding a Tag on the target resource(s). One or more of the bodies of the annotation should be typed as a oa:Tag or oa:SemanticTag."
597
- },
598
- "skos:inScheme": {
599
- "@id": "oa:motivationScheme"
600
- },
601
- "skos:prefLabel": {
602
- "@language": "en",
603
- "@value": "tagging"
604
- }
605
- },
606
- {
607
- "@id": "oa:List",
608
- "@type": "owl:Class",
609
- "rdfs:comment": {
610
- "@language": "en",
611
- "@value": "A multiplicity construct that conveys to a consuming application that all of the constituent resources are required for the Annotation to be correctly interpreted, and in a particular order. \n\noa:List can be used as the object of the object of the oa:hasBody, oa:hasTarget, oa:hasSelector, oa:hasState, oa:styledBy and oa:hasScope relationships, \n\nThere MUST be 2 or more oa:item relationships for each oa:List, with their order defined using the rdf:List construct of rdf:first/rdf:rest/rdf:nil.\n\nAll the elements of the list should also be declared using oa:item, and each of the oa:items should appear at least once in the list."
612
- },
613
- "rdfs:isDefinedBy": {
614
- "@id": "oa:"
615
- },
616
- "rdfs:label": {
617
- "@language": "en",
618
- "@value": "List"
619
- },
620
- "rdfs:subClassOf": {
621
- "@id": "oa:Composite"
622
- }
623
- },
624
- {
625
- "@id": "oa:TextQuoteSelector",
626
- "@type": "owl:Class",
627
- "rdfs:comment": {
628
- "@language": "en",
629
- "@value": "A Selector that describes a textual segment by means of quoting it, plus passages before or after it.\n\nFor example, if the document were \"abcdefghijklmnopqrstuvwxyz\", one could select \"efg\" by a oa:prefix of \"abcd\", the quotation of oa:exact \"efg\" and a oa:suffix of \"hijk\".\n\nThe text MUST be normalized before recording.\n\nEach TextQuoteSelector MUST have exactly 1 oa:exact property.\n\nEach TextQuoteSelector SHOULD have exactly 1 oa:prefix property, and MUST NOT have more than 1.\n\nEach TextQuoteSelector SHOULD have exactly 1 oa:suffix property, and MUST NOT have more than 1."
630
- },
631
- "rdfs:isDefinedBy": {
632
- "@id": "oa:"
633
- },
634
- "rdfs:label": {
635
- "@language": "en",
636
- "@value": "TextQuoteSelector"
637
- },
638
- "rdfs:subClassOf": {
639
- "@id": "oa:Selector"
640
- }
641
- },
642
- {
643
- "@id": "oa:cachedSource",
644
- "@type": "owl:ObjectProperty",
645
- "rdfs:comment": {
646
- "@language": "en",
647
- "@value": "A link to a copy of the Source resource's representation appropriate for the Annotation, typically a copy of the original at the time that the Annotation was created"
648
- },
649
- "rdfs:domain": {
650
- "@id": "oa:TimeState"
651
- },
652
- "rdfs:isDefinedBy": {
653
- "@id": "oa:"
654
- },
655
- "rdfs:label": {
656
- "@language": "en",
657
- "@value": "cachedSource"
658
- }
659
- },
660
- {
661
- "@id": "oa:bookmarking",
662
- "@type": [
663
- "oa:Motivation",
664
- "owl:NamedIndividual"
665
- ],
666
- "rdfs:comment": {
667
- "@language": "en",
668
- "@value": "The motivation that represents the creation of a bookmark to the target resources or recorded point or points within one or more resources. For example, an Annotation that bookmarks the point in a text where the reader finished reading. Bookmark Annotations may or may not have a Body resource."
669
- },
670
- "skos:inScheme": {
671
- "@id": "oa:motivationScheme"
672
- },
673
- "skos:prefLabel": {
674
- "@language": "en",
675
- "@value": "bookmarking"
676
- }
677
- },
678
- {
679
- "@id": "oa:SemanticTag",
680
- "@type": "owl:Class",
681
- "rdfs:comment": {
682
- "@language": "en",
683
- "@value": "A class assigned to the Body when it is a semantic tagging resource; a URI that identifies a concept, rather than an embedded string, frequently a term from a controlled vocabulary.\n\nIt is NOT RECOMMENDED to use the URI of a document as a Semantic Tag, as it might also be used as a regular Body in other Annotations which would inherit the oa:SemanticTag class assignment. Instead it is more appropriate to create a new URI and link it to the document, using the foaf:page predicate."
684
- },
685
- "rdfs:isDefinedBy": {
686
- "@id": "oa:"
687
- },
688
- "rdfs:label": {
689
- "@language": "en",
690
- "@value": "SemanticTag"
691
- },
692
- "rdfs:subClassOf": {
693
- "@id": "oa:Tag"
694
- }
695
- },
696
- {
697
- "@id": "oa:hasSource",
698
- "@type": "owl:ObjectProperty",
699
- "rdfs:comment": {
700
- "@language": "en",
701
- "@value": "The relationship between a oa:SpecificResource and the resource that it is a more specific representation of. \n\nThere MUST be exactly 1 oa:hasSource relationship associated with a Specific Resource."
702
- },
703
- "rdfs:domain": {
704
- "@id": "oa:SpecificResource"
705
- },
706
- "rdfs:isDefinedBy": {
707
- "@id": "oa:"
708
- },
709
- "rdfs:label": {
710
- "@language": "en",
711
- "@value": "hasSource"
712
- }
713
- },
714
- {
715
- "@id": "oa:default",
716
- "@type": "owl:ObjectProperty",
717
- "rdfs:comment": {
718
- "@language": "en",
719
- "@value": "The constituent resource of a oa:Choice to use as a default option, if there is no other means to determine which would be most appropriate.\n\nThere SHOULD be exactly 1 default relationship for each Choice."
720
- },
721
- "rdfs:domain": {
722
- "@id": "oa:Choice"
723
- },
724
- "rdfs:isDefinedBy": {
725
- "@id": "oa:"
726
- },
727
- "rdfs:label": {
728
- "@language": "en",
729
- "@value": "default"
730
- },
731
- "rdfs:subPropertyOf": {
732
- "@id": "oa:item"
733
- }
734
- },
735
- {
736
- "@id": "oa:hasSelector",
737
- "@type": "owl:ObjectProperty",
738
- "rdfs:comment": {
739
- "@language": "en",
740
- "@value": "The relationship between a oa:SpecificResource and a oa:Selector.\n\nThere MUST be exactly 0 or 1 oa:hasSelector relationship associated with a \nSpecific Resource. \n\nIf multiple Selectors are required, either to express a choice between different optional, equivalent selectors, or a chain of selectors that should all be processed, it is necessary to use oa:Choice, oa:Composite or oa:List as a selector."
741
- },
742
- "rdfs:domain": {
743
- "@id": "oa:SpecificResource"
744
- },
745
- "rdfs:isDefinedBy": {
746
- "@id": "oa:"
747
- },
748
- "rdfs:label": {
749
- "@language": "en",
750
- "@value": "hasSelector"
751
- },
752
- "rdfs:range": {
753
- "@id": "oa:Selector"
754
- }
755
- },
756
- {
757
- "@id": "oa:hasTarget",
758
- "@type": "owl:ObjectProperty",
759
- "rdfs:comment": {
760
- "@language": "en",
761
- "@value": "The relationship between oa:Annotation and target. The target resource is what the oa:hasBody is somewhat \"about\".\n\nThe target may be of any media type, and contain any type of content. The target SHOULD be identified by HTTP URIs unless they are embedded within the Annotation.\n\nEmbedded targets SHOULD be instances of cnt:ContentAsText and embed their content with cnt:chars. They SHOULD declare their media type with dc:format, and MAY indicate their language using dc:language and a RFC-3066 language tag. \n\nThere is no OA class provided for \"Target\" as a target might be a body in a different annotation. However, there SHOULD be 1 or more content-based classes associated with the target resources of an Annotation, and the dctypes: vocabulary is recommended for this purpose, for instance dctypes:Text to declare textual content."
762
- },
763
- "rdfs:domain": {
764
- "@id": "oa:Annotation"
765
- },
766
- "rdfs:isDefinedBy": {
767
- "@id": "oa:"
768
- },
769
- "rdfs:label": {
770
- "@language": "en",
771
- "@value": "hasTarget"
772
- }
773
- },
774
- {
775
- "@id": "oa:TextPositionSelector",
776
- "@type": "owl:Class",
777
- "rdfs:comment": {
778
- "@language": "en",
779
- "@value": "An oa:Selector which describes a range of text based on its start and end positions.\n\nThe text MUST be normalized before counting characters. For a Selector that works from the bitstream rather than the rendered characters, see oa:DataPositionSelector.\n\nEach oa:TextPositionSelector MUST have exactly 1 oa:start property.\n\nEach oa:TextPositionSelector MUST have exactly 1 oa:end property."
780
- },
781
- "rdfs:isDefinedBy": {
782
- "@id": "oa:"
783
- },
784
- "rdfs:label": {
785
- "@language": "en",
786
- "@value": "TextPositionSelector"
787
- },
788
- "rdfs:subClassOf": {
789
- "@id": "oa:Selector"
790
- }
791
- },
792
- {
793
- "@id": "oa:serializedAt",
794
- "@type": "owl:DatatypeProperty",
795
- "rdfs:comment": {
796
- "@language": "en",
797
- "@value": "The time at which the agent referenced by oa:serializedBy generated the first serialization of the Annotation, and any subsequent substantially different one. The annotation graph MUST have changed for this property to be updated, and as such represents the last modified datestamp for the Annotation. This might be used to determine if it should be re-imported into a triplestore when discovered. \n\nThere MAY be exactly 1 oa:serializedAt property per Annotation, and MUST NOT be more than 1. The datetime MUST be expressed in the xsd:dateTime format, and SHOULD have a timezone specified.\n"
798
- },
799
- "rdfs:domain": {
800
- "@id": "oa:Annotation"
801
- },
802
- "rdfs:isDefinedBy": {
803
- "@id": "oa:"
804
- },
805
- "rdfs:label": {
806
- "@language": "en",
807
- "@value": "serializedAt"
808
- },
809
- "rdfs:range": {
810
- "@id": "xsd:dateTimeStamp"
811
- }
812
- },
813
- {
814
- "@id": "oa:Composite",
815
- "@type": "owl:Class",
816
- "rdfs:comment": {
817
- "@language": "en",
818
- "@value": "A multiplicity construct that conveys to a consuming application that all of the constituent resources are required for the Annotation to be correctly interpreted. \n\noa:Composite can be used as the object of the object of the oa:hasBody, oa:hasTarget, oa:hasSelector, oa:hasState, oa:styledBy and oa:hasScope relationships, \n\nThere MUST be 2 or more oa:item relationships for each oa:Composite."
819
- },
820
- "rdfs:isDefinedBy": {
821
- "@id": "oa:"
822
- },
823
- "rdfs:label": "Composite",
824
- "rdfs:subClassOf": {
825
- "@id": "rdf:Bag"
826
- }
827
- },
828
- {
829
- "@id": "oa:classifying",
830
- "@type": [
831
- "oa:Motivation",
832
- "owl:NamedIndividual"
833
- ],
834
- "rdfs:comment": {
835
- "@language": "en",
836
- "@value": "The motivation that represents the assignment of a classification type, typically from a controlled vocabulary, to the target resource(s). For example to classify an Image resource as a Portrait."
837
- },
838
- "skos:inScheme": {
839
- "@id": "oa:motivationScheme"
840
- },
841
- "skos:prefLabel": {
842
- "@language": "en",
843
- "@value": "classifying"
844
- }
845
- },
846
- {
847
- "@id": "oa:identifying",
848
- "@type": [
849
- "oa:Motivation",
850
- "owl:NamedIndividual"
851
- ],
852
- "rdfs:comment": {
853
- "@language": "en",
854
- "@value": "The motivation that represents the assignment of an identity to the target resource(s). For example, annotating the name of a city in a string of text with the URI that identifies it."
855
- },
856
- "skos:inScheme": {
857
- "@id": "oa:motivationScheme"
858
- },
859
- "skos:prefLabel": {
860
- "@language": "en",
861
- "@value": "identifying"
862
- }
863
- },
864
- {
865
- "@id": "oa:HttpRequestState",
866
- "@type": "owl:Class",
867
- "rdfs:comment": {
868
- "@language": "en",
869
- "@value": "A resource which describes how to retrieve an appropriate representation of the Source resource for the Annotation, based on the HTTP Request headers to send to the server.\n\nThere MUST be exactly 1 rdf:value property per HttpRequestState, containing HTTP request headers as a single, complete string, exactly as they would appear in an HTTP request. "
870
- },
871
- "rdfs:isDefinedBy": {
872
- "@id": "oa:"
873
- },
874
- "rdfs:label": {
875
- "@language": "en",
876
- "@value": "HttpRequestState"
877
- },
878
- "rdfs:subClassOf": {
879
- "@id": "oa:State"
880
- }
881
- },
882
- {
883
- "@id": "oa:DataPositionSelector",
884
- "@type": "owl:Class",
885
- "rdfs:comment": {
886
- "@language": "en",
887
- "@value": "A Selector which describes a range of data based on its start and end positions within the byte stream of the representation.\n\nEach DataPositionSelector MUST have exactly 1 oa:start property.\n\nEach TextPositionSelector MUST have exactly 1 oa:end property.\n\nSee oa:TextPositionSelector for selection at normalized character level rather than bytestream level."
888
- },
889
- "rdfs:isDefinedBy": {
890
- "@id": "oa:"
891
- },
892
- "rdfs:label": {
893
- "@language": "en",
894
- "@value": "DataPositionSelector"
895
- },
896
- "rdfs:subClassOf": {
897
- "@id": "oa:Selector"
898
- }
899
- },
900
- {
901
- "@id": "oa:linking",
902
- "@type": [
903
- "oa:Motivation",
904
- "owl:NamedIndividual"
905
- ],
906
- "rdfs:comment": {
907
- "@language": "en",
908
- "@value": "The motivation that represents an untyped link to a resource related to the target."
909
- },
910
- "skos:inScheme": {
911
- "@id": "oa:motivationScheme"
912
- },
913
- "skos:prefLabel": {
914
- "@language": "en",
915
- "@value": "linking"
916
- }
917
- },
918
- {
919
- "@id": "oa:motivationScheme",
920
- "@type": [
921
- "skos:ConceptScheme",
922
- "owl:NamedIndividual"
923
- ],
924
- "rdfs:comment": {
925
- "@language": "en",
926
- "@value": "The concept scheme for Open Annotation Motivations"
927
- },
928
- "rdfs:label": {
929
- "@language": "en",
930
- "@value": "motivationScheme"
931
- }
932
- },
933
- {
934
- "@id": "oa:replying",
935
- "@type": [
936
- "oa:Motivation",
937
- "owl:NamedIndividual"
938
- ],
939
- "rdfs:comment": {
940
- "@language": "en",
941
- "@value": "The motivation that represents a reply to a previous statement, either an Annotation or another resource. For example providing the assistance requested in the above."
942
- },
943
- "skos:inScheme": {
944
- "@id": "oa:motivationScheme"
945
- },
946
- "skos:prefLabel": {
947
- "@language": "en",
948
- "@value": "replying"
949
- }
950
- },
951
- {
952
- "@id": "oa:start",
953
- "@type": "owl:DatatypeProperty",
954
- "rdfs:comment": {
955
- "@language": "en",
956
- "@value": "The starting position of the segment of text or bytes. The first character/byte in the full text/stream is position 0. The character/byte indicated at position oa:start is included within the selected segment. \n\nSee oa:DataPositionSelector and oa:TextPositionSelector."
957
- },
958
- "rdfs:domain": {
959
- "@id": "oa:Selector"
960
- },
961
- "rdfs:isDefinedBy": {
962
- "@id": "oa:"
963
- },
964
- "rdfs:label": {
965
- "@language": "en",
966
- "@value": "start"
967
- },
968
- "rdfs:range": {
969
- "@id": "xsd:nonNegativeInteger"
970
- }
971
- },
972
- {
973
- "@id": "oa:end",
974
- "@type": "owl:DatatypeProperty",
975
- "rdfs:comment": {
976
- "@language": "en",
977
- "@value": "The end position of the segment of text or bytes. The first character/byte in the full text/stream is position 0. The character/byte indicated at position oa:end is NOT included within the selected segment. \n\nSee oa:DataPositionSelector and oa:oa:TextPositionSelector."
978
- },
979
- "rdfs:domain": {
980
- "@id": "oa:Selector"
981
- },
982
- "rdfs:isDefinedBy": {
983
- "@id": "oa:"
984
- },
985
- "rdfs:label": {
986
- "@language": "en",
987
- "@value": "end"
988
- },
989
- "rdfs:range": {
990
- "@id": "xsd:nonNegativeInteger"
991
- }
992
- },
993
- {
994
- "@id": "oa:TimeState",
995
- "@type": "owl:Class",
996
- "rdfs:comment": {
997
- "@language": "en",
998
- "@value": "A resource which describes how to retrieve a representation of the Source resource that is temporally appropriate for the Annotation.\n\nThere MUST be at least one of oa:cachedSource or oa:when specified. If there is more than 1, each gives an alternative copy of the representation."
999
- },
1000
- "rdfs:isDefinedBy": {
1001
- "@id": "oa:"
1002
- },
1003
- "rdfs:label": {
1004
- "@language": "en",
1005
- "@value": "TimeState"
1006
- },
1007
- "rdfs:subClassOf": {
1008
- "@id": "oa:State"
1009
- }
1010
- },
1011
- {
1012
- "@id": "oa:State",
1013
- "@type": "owl:Class",
1014
- "rdfs:comment": {
1015
- "@language": "en",
1016
- "@value": "A resource which describes how to retrieve an appropriate representation of the Source resource, indicated with oa:hasState from the Specific Resource.\n\nThis class is not used directly in Annotations, only its subclasses are.\n\nThe Specifier's description MAY be conveyed as an external or embedded resource (cnt:Content), or as RDF properties within the graph. The description SHOULD use existing standards whenever possible. If the Specifier has an HTTP URI, then its description, and only its description, MUST be returned when the URI is dereferenced."
1017
- },
1018
- "rdfs:isDefinedBy": {
1019
- "@id": "oa:"
1020
- },
1021
- "rdfs:label": {
1022
- "@language": "en",
1023
- "@value": "State"
1024
- }
1025
- },
1026
- {
1027
- "@id": "oa:CssStyle",
1028
- "@type": "owl:Class",
1029
- "rdfs:comment": {
1030
- "@language": "en",
1031
- "@value": "A resource which describes styles for resources participating in the Annotation using CSS.\n\nSpecific Resources MAY be assigned a CSS style class using oa:styleClass.\n\nThe CSS resource MAY have its own dereferencable URI that provides the information. For example, \"Style1\" in the diagram below might actually have the URI \"http://www.example.com/styles/annotations.css\". It MAY be embedded within the Annotation using the inline constructions described in Embedding Resources."
1032
- },
1033
- "rdfs:isDefinedBy": {
1034
- "@id": "oa:"
1035
- },
1036
- "rdfs:label": {
1037
- "@language": "en",
1038
- "@value": "CssStyle"
1039
- },
1040
- "rdfs:subClassOf": {
1041
- "@id": "oa:Style"
1042
- }
1043
- },
1044
- {
1045
- "@id": "oa:item",
1046
- "@type": "owl:ObjectProperty",
1047
- "rdfs:comment": {
1048
- "@language": "en",
1049
- "@value": "The relationship between a multiplicity construct node and its constituent resources.\n\nThere MUST be 1 or more item relationships for each multiplicity construct oa:Choice, oa:Composite and oa:List."
1050
- },
1051
- "rdfs:isDefinedBy": {
1052
- "@id": "oa:"
1053
- },
1054
- "rdfs:label": {
1055
- "@language": "en",
1056
- "@value": "item"
1057
- },
1058
- "rdfs:subPropertyOf": {
1059
- "@id": "rdfs:member"
1060
- }
1061
- },
1062
- {
1063
- "@id": "oa:hasScope",
1064
- "@type": "owl:ObjectProperty",
1065
- "rdfs:comment": {
1066
- "@language": "en",
1067
- "@value": "The relationship between a Specific Resource and the resource that provides the scope or context for it in this Annotation.\n\nThere MAY be 0 or more hasScope relationships for each Specific Resource."
1068
- },
1069
- "rdfs:domain": {
1070
- "@id": "oa:SpecificResource"
1071
- },
1072
- "rdfs:isDefinedBy": {
1073
- "@id": "oa:"
1074
- },
1075
- "rdfs:label": {
1076
- "@language": "en",
1077
- "@value": "hasScope"
1078
- }
1079
- },
1080
- {
1081
- "@id": "oa:suffix",
1082
- "@type": "owl:DatatypeProperty",
1083
- "rdfs:comment": {
1084
- "@language": "en",
1085
- "@value": "The snippet of text that occurs immediately after the text which is being selected. \n\nSee oa:TextQuoteSelector."
1086
- },
1087
- "rdfs:domain": {
1088
- "@id": "oa:Selector"
1089
- },
1090
- "rdfs:isDefinedBy": {
1091
- "@id": "oa:"
1092
- },
1093
- "rdfs:label": {
1094
- "@language": "en",
1095
- "@value": "suffix"
1096
- }
1097
- },
1098
- {
1099
- "@id": "oa:hasState",
1100
- "@type": "owl:ObjectProperty",
1101
- "rdfs:comment": {
1102
- "@language": "en",
1103
- "@value": "The relationship between a oa:SpecificResource and a oa:State resource.\n\nThere MAY be 0 or 1 oa:hasState relationship for each SpecificResource.\n\nIf there are multiple State resources that must be associated with the specific resource, then the use of the Multiplicity Constructs oa:Choice, oa:Composite or oa:List is RECOMMENDED."
1104
- },
1105
- "rdfs:domain": {
1106
- "@id": "oa:SpecificResource"
1107
- },
1108
- "rdfs:isDefinedBy": {
1109
- "@id": "oa:"
1110
- },
1111
- "rdfs:label": {
1112
- "@language": "en",
1113
- "@value": "hasState"
1114
- },
1115
- "rdfs:range": {
1116
- "@id": "oa:State"
1117
- }
1118
- },
1119
- {
1120
- "@id": "oa:",
1121
- "@type": "owl:Ontology",
1122
- "dc:contributor": {
1123
- "@language": "en",
1124
- "@value": "Stian Soiland-Reyes"
1125
- },
1126
- "dc:creator": [
1127
- {
1128
- "@language": "en",
1129
- "@value": "Robert Sanderson"
1130
- },
1131
- {
1132
- "@language": "it",
1133
- "@value": "Paolo Ciccarese"
1134
- },
1135
- {
1136
- "@language": "vls",
1137
- "@value": "Herbert Van de Sompel"
1138
- }
1139
- ],
1140
- "dc:description": {
1141
- "@language": "en",
1142
- "@value": "The Open Annotation Core Data Model specifies an interoperable framework for creating associations between related resources, annotations, using a methodology that conforms to the Architecture of the World Wide Web. Open Annotations can easily be shared between platforms, with sufficient richness of expression to satisfy complex requirements while remaining simple enough to also allow for the most common use cases, such as attaching a piece of text to a single web resource.\n\nAn Annotation is considered to be a set of connected resources, typically including a body and target, where the body is somehow about the target. The full model supports additional functionality, enabling semantic annotations, embedding content, selecting segments of resources, choosing the appropriate representation of a resource and providing styling hints for consuming clients."
1143
- },
1144
- "dc:title": {
1145
- "@language": "en",
1146
- "@value": "Open Annotation Data Model"
1147
- },
1148
- "dcterms:modified": {
1149
- "@type": "xsd:dateTime",
1150
- "@value": "2013-02-22T21:40:51+01:00"
1151
- },
1152
- "owl:versionIRI": {
1153
- "@id": "http://www.openannotation.org/spec/core/20130208/oa.owl"
1154
- },
1155
- "owl:versionInfo": "0.9.20130208",
1156
- "rdfs:comment": {
1157
- "@language": "en",
1158
- "@value": "The Open Annotation Core Data Model specifies an interoperable framework for creating associations between related resources, annotations, using a methodology that conforms to the Architecture of the World Wide Web.\n\nThis ontology is a non-normative OWL formalization of the textual OA specification at http://www.openannotation.org/spec/core/20130208/index.html\n\nNote that OWL imports are disabled in the published version in order to reduce external implications, improve OWL 2 Profile conformity and increase interoperability. Some OWL tools might thus misleadingly show this ontology as (re)defining properties like skos:prefLabel."
1159
- },
1160
- "rdfs:seeAlso": {
1161
- "@id": "http://www.openannotation.org/spec/core/20130208/index.html"
1162
- }
1163
- },
1164
- {
1165
- "@id": "oa:questioning",
1166
- "@type": [
1167
- "oa:Motivation",
1168
- "owl:NamedIndividual"
1169
- ],
1170
- "rdfs:comment": {
1171
- "@language": "en",
1172
- "@value": "The motivation that represents asking a question about the target resource(s). For example to ask for assistance with a particular section of text, or question its veracity."
1173
- },
1174
- "skos:inScheme": {
1175
- "@id": "oa:motivationScheme"
1176
- },
1177
- "skos:prefLabel": {
1178
- "@language": "en",
1179
- "@value": "questioning"
1180
- }
1181
- },
1182
- {
1183
- "@id": "oa:describing",
1184
- "@type": [
1185
- "oa:Motivation",
1186
- "owl:NamedIndividual"
1187
- ],
1188
- "rdfs:comment": {
1189
- "@language": "en",
1190
- "@value": "The motivation that represents a description of the target resource(s), as opposed to a comment about them. For example describing the above PDF's contents, rather than commenting on their accuracy."
1191
- },
1192
- "skos:inScheme": {
1193
- "@id": "oa:motivationScheme"
1194
- },
1195
- "skos:prefLabel": {
1196
- "@language": "en",
1197
- "@value": "describing"
1198
- }
1199
- },
1200
- {
1201
- "@id": "oa:styleClass",
1202
- "@type": "owl:DatatypeProperty",
1203
- "rdfs:comment": {
1204
- "@language": "en",
1205
- "@value": "The string name of the class used in the CSS description that should be applied to the Specific Resource.\n\nThere MAY be 0 or more styleClass properties on a Specific Resource.\n\nSee oa:CssStyle."
1206
- },
1207
- "rdfs:domain": {
1208
- "@id": "oa:SpecificResource"
1209
- },
1210
- "rdfs:isDefinedBy": {
1211
- "@id": "oa:"
1212
- },
1213
- "rdfs:label": {
1214
- "@language": "en",
1215
- "@value": "styleClass"
1216
- }
1217
- },
1218
- {
1219
- "@id": "oa:Tag",
1220
- "@type": "owl:Class",
1221
- "rdfs:comment": {
1222
- "@language": "en",
1223
- "@value": "A class assigned to the Body when it is a tag, such as a embedded text string with cnt:chars.\n\nTags are typically keywords or labels, and used for organization, description or discovery of the resource being tagged. In the Semantic Web, URIs are used instead of strings to avoid the issue of polysemy where one word has multiple meanings, such usage MUST be indicated using the subclass oa:SemanticTag.\n\nAnnotations that tag resources, either with text or semantic tags, SHOULD also have the oa:tagging motivation to make the reason for the Annotation more clear to applications, and MAY have other motivations as well."
1224
- },
1225
- "rdfs:isDefinedBy": {
1226
- "@id": "oa:"
1227
- },
1228
- "rdfs:label": {
1229
- "@language": "en",
1230
- "@value": "Tag"
1231
- }
1232
- },
1233
- {
1234
- "@id": "oa:prefix",
1235
- "@type": "owl:DatatypeProperty",
1236
- "rdfs:comment": {
1237
- "@language": "en",
1238
- "@value": "A snippet of text that occurs immediately before the text which is being selected.\n\nSee oa:TextQuoteSelector."
1239
- },
1240
- "rdfs:domain": {
1241
- "@id": "oa:Selector"
1242
- },
1243
- "rdfs:isDefinedBy": {
1244
- "@id": "oa:"
1245
- },
1246
- "rdfs:label": {
1247
- "@language": "en",
1248
- "@value": "prefix"
1249
- }
1250
- }
1251
- ]
1252
- }
1253
-
1254
-
1255
- http_version:
1256
- recorded_at: Fri, 19 Jun 2015 18:40:04 GMT
1257
- - request:
1258
- method: get
1259
- uri: http://www.w3.org/ns/oa-context-20130208.json
1260
- body:
1261
- encoding: US-ASCII
1262
- string: ''
1263
- headers:
1264
- Accept:
1265
- - application/ld+json, application/json
1266
- Accept-Encoding:
1267
- - gzip, deflate
1268
- User-Agent:
1269
- - Ruby
1270
- response:
1271
- status:
1272
- code: 307
1273
- message: Temporary Redirect
1274
- headers:
1275
- Date:
1276
- - Fri, 19 Jun 2015 18:40:04 GMT
1277
- Server:
1278
- - Apache/2
1279
- Location:
1280
- - http://www.w3.org/ns/oa.jsonld
1281
- Cache-Control:
1282
- - max-age=21600
1283
- Expires:
1284
- - Sat, 20 Jun 2015 00:40:04 GMT
1285
- Content-Length:
1286
- - '240'
1287
- Content-Type:
1288
- - text/html; charset=iso-8859-1
1289
- body:
1290
- encoding: UTF-8
1291
- string: |
1292
- <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
1293
- <html><head>
1294
- <title>307 Temporary Redirect</title>
1295
- </head><body>
1296
- <h1>Temporary Redirect</h1>
1297
- <p>The document has moved <a href="http://www.w3.org/ns/oa.jsonld">here</a>.</p>
1298
- </body></html>
1299
- http_version:
1300
- recorded_at: Fri, 19 Jun 2015 18:40:04 GMT
1301
- - request:
1302
- method: get
1303
- uri: http://www.w3.org/ns/oa.jsonld
1304
- body:
1305
- encoding: US-ASCII
1306
- string: ''
1307
- headers:
1308
- Accept:
1309
- - application/ld+json, application/json
1310
- Accept-Encoding:
1311
- - gzip, deflate
1312
- Cookie:
1313
- - ''
1314
- User-Agent:
1315
- - Ruby
1316
- response:
1317
- status:
1318
- code: 200
1319
- message: OK
1320
- headers:
1321
- Date:
1322
- - Fri, 19 Jun 2015 18:40:05 GMT
1323
- Server:
1324
- - Apache/2
1325
- Last-Modified:
1326
- - Tue, 06 May 2014 11:14:49 GMT
1327
- Etag:
1328
- - '"b533-4f8b95b2a9c40"'
1329
- Accept-Ranges:
1330
- - bytes
1331
- Content-Length:
1332
- - '46387'
1333
- Cache-Control:
1334
- - max-age=21600
1335
- Expires:
1336
- - Sat, 20 Jun 2015 00:40:05 GMT
1337
- P3p:
1338
- - policyref="http://www.w3.org/2014/08/p3p.xml"
1339
- Access-Control-Allow-Origin:
1340
- - "*"
1341
- Content-Type:
1342
- - application/ld+json
1343
- body:
1344
- encoding: UTF-8
1345
- string: |+
1346
- {
1347
- "@context": {
1348
- "oa": "http://www.w3.org/ns/oa#",
1349
- "cnt": "http://www.w3.org/2011/content#",
1350
- "dc": "http://purl.org/dc/elements/1.1/",
1351
- "dcterms": "http://purl.org/dc/terms/",
1352
- "dctypes": "http://purl.org/dc/dcmitype/",
1353
- "foaf": "http://xmlns.com/foaf/0.1/",
1354
- "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
1355
- "rdfs": "http://www.w3.org/2000/01/rdf-schema#",
1356
- "skos": "http://www.w3.org/2004/02/skos/core#",
1357
- "owl": "http://www.w3.org/2002/07/owl#",
1358
- "prov": "http://www.w3.org/ns/prov#",
1359
- "trig": "http://www.w3.org/2004/03/trix/rdfg-1/",
1360
- "xsd": "http://www.w3.org/2001/XMLSchema#",
1361
-
1362
-
1363
- "hasBody" : {"@type":"@id", "@id" : "oa:hasBody"},
1364
- "hasTarget" : {"@type":"@id", "@id" : "oa:hasTarget"},
1365
- "hasSource" : {"@type":"@id", "@id" : "oa:hasSource"},
1366
- "hasSelector" : {"@type":"@id", "@id" : "oa:hasSelector"},
1367
- "hasState" : {"@type":"@id", "@id" : "oa:hasState"},
1368
- "hasScope" : {"@type":"@id", "@id" : "oa:hasScope"},
1369
- "annotatedBy" : {"@type":"@id", "@id" : "oa:annotatedBy"},
1370
- "serializedBy" : {"@type":"@id", "@id" : "oa:serializedBy"},
1371
- "motivatedBy" : {"@type":"@id", "@id" : "oa:motivatedBy"},
1372
- "equivalentTo" : {"@type":"@id", "@id" : "oa:equivalentTo"},
1373
- "styledBy" : {"@type":"@id", "@id" : "oa:styledBy"},
1374
- "cachedSource" : {"@type":"@id", "@id" : "oa:cachedSource"},
1375
- "conformsTo" : {"@type":"@id", "@id" : "dcterms:conformsTo"},
1376
- "default" : {"@type":"@id", "@id" : "oa:default"},
1377
- "item" : {"@type":"@id", "@id" : "oa:item"},
1378
- "first": {"@type":"@id", "@id" : "rdf:first"},
1379
- "rest": {"@type":"@id", "@id" : "rdf:rest", "@container" : "@list"},
1380
-
1381
- "annotatedAt" : { "@type": "xsd:dateTimeStamp", "@id": "oa:annotatedAt" },
1382
- "end" : { "@type": "xsd:nonNegativeInteger", "@id": "oa:end" },
1383
- "exact" : "oa:exact",
1384
- "prefix" : "oa:prefix",
1385
- "serializedAt" : { "@type": "xsd:dateTimeStamp", "@id": "oa:serializedAt" },
1386
- "start" : { "@type": "xsd:nonNegativeInteger", "@id": "oa:start" },
1387
- "styleClass" : "oa:styleClass",
1388
- "suffix" : "oa:suffix",
1389
- "when" : { "@type": "xsd:dateTimeStamp", "@id": "oa:when" },
1390
-
1391
- "chars" : "cnt:chars",
1392
- "bytes" : "cnt:bytes",
1393
- "format" : "dc:format",
1394
- "language" : "dc:language",
1395
- "value" : "rdf:value",
1396
- "label" : "rdfs:label",
1397
- "name" : "foaf:name",
1398
- "mbox" : "foaf:mbox"
1399
-
1400
- },
1401
- "@graph": [
1402
- {
1403
- "@id": "oa:annotatedBy",
1404
- "@type": "owl:ObjectProperty",
1405
- "rdfs:comment": {
1406
- "@language": "en",
1407
- "@value": "The object of the relationship is a resource that identifies the agent responsible for creating the Annotation. This may be either a human or software agent. \n\nThere SHOULD be exactly 1 oa:annotatedBy relationship per Annotation, but MAY be 0 or more than 1, as the Annotation may be anonymous, or multiple agents may have worked together on it.\n\nIt is RECOMMENDED to use these and other FOAF terms to describe agents: foaf:Person, prov:SoftwareAgent, foaf:Organization, foaf:name, foaf:mbox, foaf:openid, foaf:homepage"
1408
- },
1409
- "rdfs:domain": {
1410
- "@id": "oa:Annotation"
1411
- },
1412
- "rdfs:isDefinedBy": {
1413
- "@id": "oa:"
1414
- },
1415
- "rdfs:label": {
1416
- "@language": "en",
1417
- "@value": "annotatedBy"
1418
- },
1419
- "rdfs:subPropertyOf": {
1420
- "@id": "prov:wasAttributedTo"
1421
- }
1422
- },
1423
- {
1424
- "@id": "oa:commenting",
1425
- "@type": [
1426
- "oa:Motivation",
1427
- "owl:NamedIndividual"
1428
- ],
1429
- "rdfs:comment": {
1430
- "@language": "en",
1431
- "@value": "The motivation that represents a commentary about or review of the target resource(s). For example to provide a commentary about a particular PDF."
1432
- },
1433
- "skos:inScheme": {
1434
- "@id": "oa:motivationScheme"
1435
- },
1436
- "skos:prefLabel": {
1437
- "@language": "en",
1438
- "@value": "commenting"
1439
- }
1440
- },
1441
- {
1442
- "@id": "oa:SvgSelector",
1443
- "@type": "owl:Class",
1444
- "rdfs:comment": {
1445
- "@language": "en",
1446
- "@value": "A Selector which selects an area specified as an SVG shape.\n\nThe SVG document should either be retrievable by resolving the URI of this resource, or be included as an Embedded Resource using cnt:Content.\n\nIt is RECOMMENDED that the document contain only a single shape element and that element SHOULD be one of: path, rect, circle, ellipse, polyline, polygon or g. The g element SHOULD ONLY be used to construct a multi-element group, for example to define a donut shape requiring an outer circle and a clipped inner circle.\n\nThe dimensions of both the shape and the SVG canvas MUST be relative to the dimensions of the Source resource. For example, given an image which is 600 pixels by 400 pixels, and the desired section is a circle of 100 pixel radius at the center of the image, then the SVG element would be: <circle cx=\"300\" cy=\"200\" r=\"100\"/>\n\nIt is NOT RECOMMENDED to include style information within the SVG element, nor Javascript, animation, text or other non shape oriented information. Clients SHOULD ignore such information if present."
1447
- },
1448
- "rdfs:isDefinedBy": {
1449
- "@id": "oa:"
1450
- },
1451
- "rdfs:label": {
1452
- "@language": "en",
1453
- "@value": "SvgSelector"
1454
- },
1455
- "rdfs:subClassOf": {
1456
- "@id": "oa:Selector"
1457
- }
1458
- },
1459
- {
1460
- "@id": "oa:Selector",
1461
- "@type": "owl:Class",
1462
- "rdfs:comment": {
1463
- "@language": "en",
1464
- "@value": "A resource which describes the segment of interest in a representation of a Source resource, indicated with oa:hasSelector from the Specific Resource. \n\nThis class is not used directly in Annotations, only its subclasses are.\n\nThe nature of the Selector will be dependent on the type of the representation for which the segment is conveyed. The specific type of selector should be indicated using a subclass of oa:Selector.\n\nThe Specifier's description MAY be conveyed as an external or embedded resource (cnt:Content), or as RDF properties within the graph. The description SHOULD use existing standards whenever possible. If the Specifier has an HTTP URI, then its description, and only its description, MUST be returned when the URI is dereferenced."
1465
- },
1466
- "rdfs:isDefinedBy": {
1467
- "@id": "oa:"
1468
- },
1469
- "rdfs:label": {
1470
- "@language": "en",
1471
- "@value": "Selector"
1472
- }
1473
- },
1474
- {
1475
- "@id": "oa:Style",
1476
- "@type": "owl:Class",
1477
- "rdfs:comment": {
1478
- "@language": "en",
1479
- "@value": "A resource which describes the style in which the selection or resource should be rendered, indicated with oa:styledBy from an oa:Annotation.\n\nThis class is not used directly in Annotations, only its subclasses are.\n\nThe content of the resource provides the rendering hints about the Annotation's constituent resources. \n\nThe Specifier's description MAY be conveyed as an external or embedded resource (cnt:Content), or as RDF properties within the graph. The description SHOULD use existing standards whenever possible. If the Specifier has an HTTP URI, then its description, and only its description, MUST be returned when the URI is dereferenced."
1480
- },
1481
- "rdfs:isDefinedBy": {
1482
- "@id": "oa:"
1483
- },
1484
- "rdfs:label": {
1485
- "@language": "en",
1486
- "@value": "Style"
1487
- }
1488
- },
1489
- {
1490
- "@id": "oa:exact",
1491
- "@type": "owl:DatatypeProperty",
1492
- "rdfs:comment": {
1493
- "@language": "en",
1494
- "@value": "A copy of the text which is being selected, after normalization.\n\nSee oa:TextQuoteSelector."
1495
- },
1496
- "rdfs:domain": {
1497
- "@id": "oa:Selector"
1498
- },
1499
- "rdfs:isDefinedBy": {
1500
- "@id": "oa:"
1501
- },
1502
- "rdfs:label": {
1503
- "@language": "en",
1504
- "@value": "exact"
1505
- }
1506
- },
1507
- {
1508
- "@id": "oa:hasBody",
1509
- "@type": "owl:ObjectProperty",
1510
- "rdfs:comment": {
1511
- "@language": "en",
1512
- "@value": "The relationship between oa:Annotation and body. The body is somehow \"about\" the oa:hasTarget of the annotation.\n\nThe Body may be of any media type, and contain any type of content. The Body SHOULD be identified by HTTP URIs unless they are embedded within the Annotation.\n\nEmbedded bodies SHOULD be instances of cnt:ContentAsText and embed their content with cnt:chars. They SHOULD declare their media type with dc:format, and MAY indicate their language using dc:language and a RFC-3066 language tag. \n\nThere is no OA class provided for \"Body\" as a body might be a target of a different annotation. However, there SHOULD be 1 or more content-based classes associated with the body resources of an Annotation, and the dctypes: vocabulary is recommended for this purpose, for instance dctypes:Text to declare textual content.\n"
1513
- },
1514
- "rdfs:domain": {
1515
- "@id": "oa:Annotation"
1516
- },
1517
- "rdfs:isDefinedBy": {
1518
- "@id": "oa:"
1519
- },
1520
- "rdfs:label": {
1521
- "@language": "en",
1522
- "@value": "hasBody"
1523
- }
1524
- },
1525
- {
1526
- "@id": "oa:Choice",
1527
- "@type": "owl:Class",
1528
- "rdfs:comment": {
1529
- "@language": "en",
1530
- "@value": "A multiplicity construct that conveys to a consuming application that it should select one of the constituent resources to display to the user, and not render/use all of them. \n\noa:Choice can be used as the object of the object of the oa:hasBody, oa:hasTarget, oa:hasSelector, oa:hasState, oa:styledBy and oa:hasScope relationships, \n\nThere MUST be 1 or more oa:item relationships for each oa:Choice.\n\nThere SHOULD be exactly 1 default relationship for each Choice."
1531
- },
1532
- "rdfs:isDefinedBy": {
1533
- "@id": "oa:"
1534
- },
1535
- "rdfs:label": {
1536
- "@language": "en",
1537
- "@value": "Choice"
1538
- },
1539
- "rdfs:subClassOf": {
1540
- "@id": "rdf:Alt"
1541
- }
1542
- },
1543
- {
1544
- "@id": "oa:when",
1545
- "@type": "owl:DatatypeProperty",
1546
- "rdfs:comment": {
1547
- "@language": "en",
1548
- "@value": "The timestamp at which the Source resource should be interpreted for the Annotation, typically the time that the Annotation was created."
1549
- },
1550
- "rdfs:domain": {
1551
- "@id": "oa:TimeState"
1552
- },
1553
- "rdfs:isDefinedBy": {
1554
- "@id": "oa:"
1555
- },
1556
- "rdfs:label": {
1557
- "@language": "en",
1558
- "@value": "when"
1559
- },
1560
- "rdfs:range": {
1561
- "@id": "xsd:dateTimeStamp"
1562
- }
1563
- },
1564
- {
1565
- "@id": "oa:serializedBy",
1566
- "@type": "owl:ObjectProperty",
1567
- "rdfs:comment": {
1568
- "@language": "en",
1569
- "@value": "The object of the relationship is the agent, likely software, responsible for generating the serialization of the Annotation's serialization. \n\nIt is RECOMMENDED to use these and other FOAF terms to describe agents: foaf:Person, prov:SoftwareAgent, foaf:Organization, foaf:name, foaf:mbox, foaf:openid, foaf:homepage\n\nThere MAY be 0 or more oa:serializedBy relationships per Annotation."
1570
- },
1571
- "rdfs:domain": {
1572
- "@id": "oa:Annotation"
1573
- },
1574
- "rdfs:isDefinedBy": {
1575
- "@id": "oa:"
1576
- },
1577
- "rdfs:label": {
1578
- "@language": "en",
1579
- "@value": "serializedBy"
1580
- },
1581
- "rdfs:subPropertyOf": {
1582
- "@id": "prov:wasAttributedTo"
1583
- }
1584
- },
1585
- {
1586
- "@id": "oa:motivatedBy",
1587
- "@type": "owl:ObjectProperty",
1588
- "rdfs:comment": {
1589
- "@language": "en",
1590
- "@value": "The relationship between an Annotation and a Motivation, indicating the reasons why the Annotation was created.\n\nEach Annotation SHOULD have at least one oa:motivatedBy relationship, and MAY be more than 1."
1591
- },
1592
- "rdfs:domain": {
1593
- "@id": "oa:Annotation"
1594
- },
1595
- "rdfs:isDefinedBy": {
1596
- "@id": "oa:"
1597
- },
1598
- "rdfs:label": {
1599
- "@language": "en",
1600
- "@value": "motivatedBy"
1601
- },
1602
- "rdfs:range": {
1603
- "@id": "oa:Motivation"
1604
- }
1605
- },
1606
- {
1607
- "@id": "oa:moderating",
1608
- "@type": [
1609
- "oa:Motivation",
1610
- "owl:NamedIndividual"
1611
- ],
1612
- "rdfs:comment": {
1613
- "@language": "en",
1614
- "@value": "The motivation that represents an assignment of value or quality to the target resource(s). For example annotating an Annotation to moderate it up in a trust network or threaded discussion."
1615
- },
1616
- "skos:inScheme": {
1617
- "@id": "oa:motivationScheme"
1618
- },
1619
- "skos:prefLabel": {
1620
- "@language": "en",
1621
- "@value": "moderating"
1622
- }
1623
- },
1624
- {
1625
- "@id": "oa:highlighting",
1626
- "@type": [
1627
- "oa:Motivation",
1628
- "owl:NamedIndividual"
1629
- ],
1630
- "rdfs:comment": {
1631
- "@language": "en",
1632
- "@value": "The motivation that represents a highlighted section of the target resource or segment. For example to draw attention to the selected text that the annotator disagrees with. A Highlight may or may not have a Body resource"
1633
- },
1634
- "skos:inScheme": {
1635
- "@id": "oa:motivationScheme"
1636
- },
1637
- "skos:prefLabel": {
1638
- "@language": "en",
1639
- "@value": "highlighting"
1640
- }
1641
- },
1642
- {
1643
- "@id": "oa:styledBy",
1644
- "@type": "owl:ObjectProperty",
1645
- "rdfs:comment": {
1646
- "@language": "en",
1647
- "@value": "The relationship between a oa:Annotation and a oa:Style.\n\nThere MAY be 0 or 1 styledBy relationships for each Annotation.\n\nIf there are multiple Style resources that must be associated with the Annotation, then the use of the Multiplicity Constructs oa:Choice, oa:Composite or oa:List is RECOMMENDED."
1648
- },
1649
- "rdfs:domain": {
1650
- "@id": "oa:Annotation"
1651
- },
1652
- "rdfs:isDefinedBy": {
1653
- "@id": "oa:"
1654
- },
1655
- "rdfs:label": {
1656
- "@language": "en",
1657
- "@value": "styledBy"
1658
- },
1659
- "rdfs:range": {
1660
- "@id": "oa:Style"
1661
- }
1662
- },
1663
- {
1664
- "@id": "oa:FragmentSelector",
1665
- "@type": "owl:Class",
1666
- "rdfs:comment": {
1667
- "@language": "en",
1668
- "@value": "A Selector which describes the segment of interest in a representation, through the use of the fragment identifier component of a URI.\n\nIt is RECOMMENDED to use oa:FragmentSelector as the selector on a Specific Resource rather than annotating the fragment URI directly, in order to improve discoverability of annotation on the Source.\n\nThe oa:FragmentSelector MUST have exactly 1 rdf:value property, containing the fragment identifier component of a URI that describes the segment of interest in the resource, excluding the initial \"#\".\n\nThe Fragment Selector SHOULD have a dcterms:conformsTo relationship with the object being the specification that defines the syntax of the fragment, for instance <http://tools.ietf.org/rfc/rfc3236> for HTML fragments. "
1669
- },
1670
- "rdfs:isDefinedBy": {
1671
- "@id": "oa:"
1672
- },
1673
- "rdfs:label": {
1674
- "@language": "en",
1675
- "@value": "FragmentSelector"
1676
- },
1677
- "rdfs:subClassOf": {
1678
- "@id": "oa:Selector"
1679
- }
1680
- },
1681
- {
1682
- "@id": "oa:SpecificResource",
1683
- "@type": "owl:Class",
1684
- "rdfs:comment": {
1685
- "@language": "en",
1686
- "@value": "A resource identifies part of another Source resource, a particular representation of a resource, a resource with styling hints for renders, or any combination of these. \n\nThe Specific Resource takes the role of oa:hasBody or oa:hasTarget in an oa:Annotation instead of the Source resource.\n\nThere MUST be exactly 1 oa:hasSource relationship associated with a Specific Resource.\n\nThere MUST be exactly 0 or 1 oa:hasSelector relationship associated with a Specific Resource.\n\nThere MAY be 0 or 1 oa:hasState relationship for each Specific Resource.\n\nIf the Specific Resource has an HTTP URI, then the exact segment of the Source resource that it identifies, and only the segment, MUST be returned when the URI is dereferenced. For example, if the segment of interest is a region of an image and the Specific Resource has an HTTP URI, then dereferencing it MUST return the selected region of the image as it was at the time when the annotation was created. Typically this would be a burden to support, and thus the Specific Resource SHOULD be identified by a globally unique URI, such as a UUID URN. If it is not considered important to allow other Annotations or systems to refer to the Specific Resource, then a blank node MAY be used instead."
1687
- },
1688
- "rdfs:isDefinedBy": {
1689
- "@id": "oa:"
1690
- },
1691
- "rdfs:label": {
1692
- "@language": "en",
1693
- "@value": "SpecificResource"
1694
- }
1695
- },
1696
- {
1697
- "@id": "oa:annotatedAt",
1698
- "@type": "owl:DatatypeProperty",
1699
- "rdfs:comment": {
1700
- "@language": "en",
1701
- "@value": "The time at which the Annotation was created. \n\nThere SHOULD be exactly 1 oa:annotatedAt property per Annotation, and MUST NOT be more than 1. The datetime MUST be expressed in the xsd:dateTime format, and SHOULD have a timezone specified."
1702
- },
1703
- "rdfs:domain": {
1704
- "@id": "oa:Annotation"
1705
- },
1706
- "rdfs:isDefinedBy": {
1707
- "@id": "oa:"
1708
- },
1709
- "rdfs:label": {
1710
- "@language": "en",
1711
- "@value": "annotatedAt"
1712
- },
1713
- "rdfs:range": {
1714
- "@id": "xsd:dateTimeStamp"
1715
- }
1716
- },
1717
- {
1718
- "@id": "oa:editing",
1719
- "@type": [
1720
- "oa:Motivation",
1721
- "owl:NamedIndividual"
1722
- ],
1723
- "rdfs:comment": {
1724
- "@language": "en",
1725
- "@value": "The motivation that represents a request for a modification or edit to the target resource. For example, an Annotation that requests a typo to be corrected."
1726
- },
1727
- "skos:inScheme": {
1728
- "@id": "oa:motivationScheme"
1729
- },
1730
- "skos:prefLabel": {
1731
- "@language": "en",
1732
- "@value": "editing"
1733
- }
1734
- },
1735
- {
1736
- "@id": "oa:Annotation",
1737
- "@type": "owl:Class",
1738
- "rdfs:comment": {
1739
- "@language": "en",
1740
- "@value": "Typically an Annotation has a single Body (oa:hasBody), which is the comment or other descriptive resource, and a single Target (oa:hasTarget) that the Body is somehow \"about\". The Body provides the information which is annotating the Target. \n\nThis \"aboutness\" may be further clarified or extended to notions such as classifying or identifying with oa:motivatedBy."
1741
- },
1742
- "rdfs:isDefinedBy": {
1743
- "@id": "oa:"
1744
- },
1745
- "rdfs:label": {
1746
- "@language": "en",
1747
- "@value": "Annotation"
1748
- }
1749
- },
1750
- {
1751
- "@id": "oa:equivalentTo",
1752
- "@type": "owl:ObjectProperty",
1753
- "rdfs:comment": {
1754
- "@language": "en",
1755
- "@value": "The subject and object resources of the oa:equivalentTo relationship represent the same resource, but potentially have different metadata such as oa:serializedBy, oa:serializedAt and serialization format. oa:equivalentTo is a symmetrical and transitive relationship; if A oa:equivalentTo B, then it is also true that B oa:equivalent A; and that if B oa:equivalentTo C, then it is also true that A oa:equivalentTo C. \n\nThe Annotation MAY include 0 or more instances of the oa:equivalentTo relationship between copies of the Annotation or other resources, and SHOULD include as many as are available.\n\nIf a system publishes an embedded resource (a cnt:Content) at a new HTTP URI, then it SHOULD express the oa:equivalentTo relationship between the resource's URN and the new URI from which it is available."
1756
- },
1757
- "rdfs:isDefinedBy": {
1758
- "@id": "oa:"
1759
- },
1760
- "rdfs:label": {
1761
- "@language": "en",
1762
- "@value": "equivalentTo"
1763
- },
1764
- "rdfs:subPropertyOf": {
1765
- "@id": "prov:alternateOf"
1766
- }
1767
- },
1768
- {
1769
- "@id": "oa:Motivation",
1770
- "@type": "owl:Class",
1771
- "rdfs:comment": {
1772
- "@language": "en",
1773
- "@value": "The Motivation for creating an Annotation, indicated with oa:motivatedBy, is a reason for its creation, and might include things like oa:replying to another annotation, oa:commenting on a resource, or oa:linking to a related resource.\n\nEach Annotation SHOULD have at least one oa:motivatedBy relationship to an instance of oa:Motivation, which is a subClass of skos:Concept."
1774
- },
1775
- "rdfs:isDefinedBy": {
1776
- "@id": "oa:"
1777
- },
1778
- "rdfs:label": {
1779
- "@language": "en",
1780
- "@value": "Motivation"
1781
- },
1782
- "rdfs:subClassOf": {
1783
- "@id": "skos:Concept"
1784
- }
1785
- },
1786
- {
1787
- "@id": "oa:tagging",
1788
- "@type": [
1789
- "oa:Motivation",
1790
- "owl:NamedIndividual"
1791
- ],
1792
- "rdfs:comment": {
1793
- "@language": "en",
1794
- "@value": "The motivation that represents adding a Tag on the target resource(s). One or more of the bodies of the annotation should be typed as a oa:Tag or oa:SemanticTag."
1795
- },
1796
- "skos:inScheme": {
1797
- "@id": "oa:motivationScheme"
1798
- },
1799
- "skos:prefLabel": {
1800
- "@language": "en",
1801
- "@value": "tagging"
1802
- }
1803
- },
1804
- {
1805
- "@id": "oa:List",
1806
- "@type": "owl:Class",
1807
- "rdfs:comment": {
1808
- "@language": "en",
1809
- "@value": "A multiplicity construct that conveys to a consuming application that all of the constituent resources are required for the Annotation to be correctly interpreted, and in a particular order. \n\noa:List can be used as the object of the object of the oa:hasBody, oa:hasTarget, oa:hasSelector, oa:hasState, oa:styledBy and oa:hasScope relationships, \n\nThere MUST be 2 or more oa:item relationships for each oa:List, with their order defined using the rdf:List construct of rdf:first/rdf:rest/rdf:nil.\n\nAll the elements of the list should also be declared using oa:item, and each of the oa:items should appear at least once in the list."
1810
- },
1811
- "rdfs:isDefinedBy": {
1812
- "@id": "oa:"
1813
- },
1814
- "rdfs:label": {
1815
- "@language": "en",
1816
- "@value": "List"
1817
- },
1818
- "rdfs:subClassOf": {
1819
- "@id": "oa:Composite"
1820
- }
1821
- },
1822
- {
1823
- "@id": "oa:TextQuoteSelector",
1824
- "@type": "owl:Class",
1825
- "rdfs:comment": {
1826
- "@language": "en",
1827
- "@value": "A Selector that describes a textual segment by means of quoting it, plus passages before or after it.\n\nFor example, if the document were \"abcdefghijklmnopqrstuvwxyz\", one could select \"efg\" by a oa:prefix of \"abcd\", the quotation of oa:exact \"efg\" and a oa:suffix of \"hijk\".\n\nThe text MUST be normalized before recording.\n\nEach TextQuoteSelector MUST have exactly 1 oa:exact property.\n\nEach TextQuoteSelector SHOULD have exactly 1 oa:prefix property, and MUST NOT have more than 1.\n\nEach TextQuoteSelector SHOULD have exactly 1 oa:suffix property, and MUST NOT have more than 1."
1828
- },
1829
- "rdfs:isDefinedBy": {
1830
- "@id": "oa:"
1831
- },
1832
- "rdfs:label": {
1833
- "@language": "en",
1834
- "@value": "TextQuoteSelector"
1835
- },
1836
- "rdfs:subClassOf": {
1837
- "@id": "oa:Selector"
1838
- }
1839
- },
1840
- {
1841
- "@id": "oa:cachedSource",
1842
- "@type": "owl:ObjectProperty",
1843
- "rdfs:comment": {
1844
- "@language": "en",
1845
- "@value": "A link to a copy of the Source resource's representation appropriate for the Annotation, typically a copy of the original at the time that the Annotation was created"
1846
- },
1847
- "rdfs:domain": {
1848
- "@id": "oa:TimeState"
1849
- },
1850
- "rdfs:isDefinedBy": {
1851
- "@id": "oa:"
1852
- },
1853
- "rdfs:label": {
1854
- "@language": "en",
1855
- "@value": "cachedSource"
1856
- }
1857
- },
1858
- {
1859
- "@id": "oa:bookmarking",
1860
- "@type": [
1861
- "oa:Motivation",
1862
- "owl:NamedIndividual"
1863
- ],
1864
- "rdfs:comment": {
1865
- "@language": "en",
1866
- "@value": "The motivation that represents the creation of a bookmark to the target resources or recorded point or points within one or more resources. For example, an Annotation that bookmarks the point in a text where the reader finished reading. Bookmark Annotations may or may not have a Body resource."
1867
- },
1868
- "skos:inScheme": {
1869
- "@id": "oa:motivationScheme"
1870
- },
1871
- "skos:prefLabel": {
1872
- "@language": "en",
1873
- "@value": "bookmarking"
1874
- }
1875
- },
1876
- {
1877
- "@id": "oa:SemanticTag",
1878
- "@type": "owl:Class",
1879
- "rdfs:comment": {
1880
- "@language": "en",
1881
- "@value": "A class assigned to the Body when it is a semantic tagging resource; a URI that identifies a concept, rather than an embedded string, frequently a term from a controlled vocabulary.\n\nIt is NOT RECOMMENDED to use the URI of a document as a Semantic Tag, as it might also be used as a regular Body in other Annotations which would inherit the oa:SemanticTag class assignment. Instead it is more appropriate to create a new URI and link it to the document, using the foaf:page predicate."
1882
- },
1883
- "rdfs:isDefinedBy": {
1884
- "@id": "oa:"
1885
- },
1886
- "rdfs:label": {
1887
- "@language": "en",
1888
- "@value": "SemanticTag"
1889
- },
1890
- "rdfs:subClassOf": {
1891
- "@id": "oa:Tag"
1892
- }
1893
- },
1894
- {
1895
- "@id": "oa:hasSource",
1896
- "@type": "owl:ObjectProperty",
1897
- "rdfs:comment": {
1898
- "@language": "en",
1899
- "@value": "The relationship between a oa:SpecificResource and the resource that it is a more specific representation of. \n\nThere MUST be exactly 1 oa:hasSource relationship associated with a Specific Resource."
1900
- },
1901
- "rdfs:domain": {
1902
- "@id": "oa:SpecificResource"
1903
- },
1904
- "rdfs:isDefinedBy": {
1905
- "@id": "oa:"
1906
- },
1907
- "rdfs:label": {
1908
- "@language": "en",
1909
- "@value": "hasSource"
1910
- }
1911
- },
1912
- {
1913
- "@id": "oa:default",
1914
- "@type": "owl:ObjectProperty",
1915
- "rdfs:comment": {
1916
- "@language": "en",
1917
- "@value": "The constituent resource of a oa:Choice to use as a default option, if there is no other means to determine which would be most appropriate.\n\nThere SHOULD be exactly 1 default relationship for each Choice."
1918
- },
1919
- "rdfs:domain": {
1920
- "@id": "oa:Choice"
1921
- },
1922
- "rdfs:isDefinedBy": {
1923
- "@id": "oa:"
1924
- },
1925
- "rdfs:label": {
1926
- "@language": "en",
1927
- "@value": "default"
1928
- },
1929
- "rdfs:subPropertyOf": {
1930
- "@id": "oa:item"
1931
- }
1932
- },
1933
- {
1934
- "@id": "oa:hasSelector",
1935
- "@type": "owl:ObjectProperty",
1936
- "rdfs:comment": {
1937
- "@language": "en",
1938
- "@value": "The relationship between a oa:SpecificResource and a oa:Selector.\n\nThere MUST be exactly 0 or 1 oa:hasSelector relationship associated with a \nSpecific Resource. \n\nIf multiple Selectors are required, either to express a choice between different optional, equivalent selectors, or a chain of selectors that should all be processed, it is necessary to use oa:Choice, oa:Composite or oa:List as a selector."
1939
- },
1940
- "rdfs:domain": {
1941
- "@id": "oa:SpecificResource"
1942
- },
1943
- "rdfs:isDefinedBy": {
1944
- "@id": "oa:"
1945
- },
1946
- "rdfs:label": {
1947
- "@language": "en",
1948
- "@value": "hasSelector"
1949
- },
1950
- "rdfs:range": {
1951
- "@id": "oa:Selector"
1952
- }
1953
- },
1954
- {
1955
- "@id": "oa:hasTarget",
1956
- "@type": "owl:ObjectProperty",
1957
- "rdfs:comment": {
1958
- "@language": "en",
1959
- "@value": "The relationship between oa:Annotation and target. The target resource is what the oa:hasBody is somewhat \"about\".\n\nThe target may be of any media type, and contain any type of content. The target SHOULD be identified by HTTP URIs unless they are embedded within the Annotation.\n\nEmbedded targets SHOULD be instances of cnt:ContentAsText and embed their content with cnt:chars. They SHOULD declare their media type with dc:format, and MAY indicate their language using dc:language and a RFC-3066 language tag. \n\nThere is no OA class provided for \"Target\" as a target might be a body in a different annotation. However, there SHOULD be 1 or more content-based classes associated with the target resources of an Annotation, and the dctypes: vocabulary is recommended for this purpose, for instance dctypes:Text to declare textual content."
1960
- },
1961
- "rdfs:domain": {
1962
- "@id": "oa:Annotation"
1963
- },
1964
- "rdfs:isDefinedBy": {
1965
- "@id": "oa:"
1966
- },
1967
- "rdfs:label": {
1968
- "@language": "en",
1969
- "@value": "hasTarget"
1970
- }
1971
- },
1972
- {
1973
- "@id": "oa:TextPositionSelector",
1974
- "@type": "owl:Class",
1975
- "rdfs:comment": {
1976
- "@language": "en",
1977
- "@value": "An oa:Selector which describes a range of text based on its start and end positions.\n\nThe text MUST be normalized before counting characters. For a Selector that works from the bitstream rather than the rendered characters, see oa:DataPositionSelector.\n\nEach oa:TextPositionSelector MUST have exactly 1 oa:start property.\n\nEach oa:TextPositionSelector MUST have exactly 1 oa:end property."
1978
- },
1979
- "rdfs:isDefinedBy": {
1980
- "@id": "oa:"
1981
- },
1982
- "rdfs:label": {
1983
- "@language": "en",
1984
- "@value": "TextPositionSelector"
1985
- },
1986
- "rdfs:subClassOf": {
1987
- "@id": "oa:Selector"
1988
- }
1989
- },
1990
- {
1991
- "@id": "oa:serializedAt",
1992
- "@type": "owl:DatatypeProperty",
1993
- "rdfs:comment": {
1994
- "@language": "en",
1995
- "@value": "The time at which the agent referenced by oa:serializedBy generated the first serialization of the Annotation, and any subsequent substantially different one. The annotation graph MUST have changed for this property to be updated, and as such represents the last modified datestamp for the Annotation. This might be used to determine if it should be re-imported into a triplestore when discovered. \n\nThere MAY be exactly 1 oa:serializedAt property per Annotation, and MUST NOT be more than 1. The datetime MUST be expressed in the xsd:dateTime format, and SHOULD have a timezone specified.\n"
1996
- },
1997
- "rdfs:domain": {
1998
- "@id": "oa:Annotation"
1999
- },
2000
- "rdfs:isDefinedBy": {
2001
- "@id": "oa:"
2002
- },
2003
- "rdfs:label": {
2004
- "@language": "en",
2005
- "@value": "serializedAt"
2006
- },
2007
- "rdfs:range": {
2008
- "@id": "xsd:dateTimeStamp"
2009
- }
2010
- },
2011
- {
2012
- "@id": "oa:Composite",
2013
- "@type": "owl:Class",
2014
- "rdfs:comment": {
2015
- "@language": "en",
2016
- "@value": "A multiplicity construct that conveys to a consuming application that all of the constituent resources are required for the Annotation to be correctly interpreted. \n\noa:Composite can be used as the object of the object of the oa:hasBody, oa:hasTarget, oa:hasSelector, oa:hasState, oa:styledBy and oa:hasScope relationships, \n\nThere MUST be 2 or more oa:item relationships for each oa:Composite."
2017
- },
2018
- "rdfs:isDefinedBy": {
2019
- "@id": "oa:"
2020
- },
2021
- "rdfs:label": "Composite",
2022
- "rdfs:subClassOf": {
2023
- "@id": "rdf:Bag"
2024
- }
2025
- },
2026
- {
2027
- "@id": "oa:classifying",
2028
- "@type": [
2029
- "oa:Motivation",
2030
- "owl:NamedIndividual"
2031
- ],
2032
- "rdfs:comment": {
2033
- "@language": "en",
2034
- "@value": "The motivation that represents the assignment of a classification type, typically from a controlled vocabulary, to the target resource(s). For example to classify an Image resource as a Portrait."
2035
- },
2036
- "skos:inScheme": {
2037
- "@id": "oa:motivationScheme"
2038
- },
2039
- "skos:prefLabel": {
2040
- "@language": "en",
2041
- "@value": "classifying"
2042
- }
2043
- },
2044
- {
2045
- "@id": "oa:identifying",
2046
- "@type": [
2047
- "oa:Motivation",
2048
- "owl:NamedIndividual"
2049
- ],
2050
- "rdfs:comment": {
2051
- "@language": "en",
2052
- "@value": "The motivation that represents the assignment of an identity to the target resource(s). For example, annotating the name of a city in a string of text with the URI that identifies it."
2053
- },
2054
- "skos:inScheme": {
2055
- "@id": "oa:motivationScheme"
2056
- },
2057
- "skos:prefLabel": {
2058
- "@language": "en",
2059
- "@value": "identifying"
2060
- }
2061
- },
2062
- {
2063
- "@id": "oa:HttpRequestState",
2064
- "@type": "owl:Class",
2065
- "rdfs:comment": {
2066
- "@language": "en",
2067
- "@value": "A resource which describes how to retrieve an appropriate representation of the Source resource for the Annotation, based on the HTTP Request headers to send to the server.\n\nThere MUST be exactly 1 rdf:value property per HttpRequestState, containing HTTP request headers as a single, complete string, exactly as they would appear in an HTTP request. "
2068
- },
2069
- "rdfs:isDefinedBy": {
2070
- "@id": "oa:"
2071
- },
2072
- "rdfs:label": {
2073
- "@language": "en",
2074
- "@value": "HttpRequestState"
2075
- },
2076
- "rdfs:subClassOf": {
2077
- "@id": "oa:State"
2078
- }
2079
- },
2080
- {
2081
- "@id": "oa:DataPositionSelector",
2082
- "@type": "owl:Class",
2083
- "rdfs:comment": {
2084
- "@language": "en",
2085
- "@value": "A Selector which describes a range of data based on its start and end positions within the byte stream of the representation.\n\nEach DataPositionSelector MUST have exactly 1 oa:start property.\n\nEach TextPositionSelector MUST have exactly 1 oa:end property.\n\nSee oa:TextPositionSelector for selection at normalized character level rather than bytestream level."
2086
- },
2087
- "rdfs:isDefinedBy": {
2088
- "@id": "oa:"
2089
- },
2090
- "rdfs:label": {
2091
- "@language": "en",
2092
- "@value": "DataPositionSelector"
2093
- },
2094
- "rdfs:subClassOf": {
2095
- "@id": "oa:Selector"
2096
- }
2097
- },
2098
- {
2099
- "@id": "oa:linking",
2100
- "@type": [
2101
- "oa:Motivation",
2102
- "owl:NamedIndividual"
2103
- ],
2104
- "rdfs:comment": {
2105
- "@language": "en",
2106
- "@value": "The motivation that represents an untyped link to a resource related to the target."
2107
- },
2108
- "skos:inScheme": {
2109
- "@id": "oa:motivationScheme"
2110
- },
2111
- "skos:prefLabel": {
2112
- "@language": "en",
2113
- "@value": "linking"
2114
- }
2115
- },
2116
- {
2117
- "@id": "oa:motivationScheme",
2118
- "@type": [
2119
- "skos:ConceptScheme",
2120
- "owl:NamedIndividual"
2121
- ],
2122
- "rdfs:comment": {
2123
- "@language": "en",
2124
- "@value": "The concept scheme for Open Annotation Motivations"
2125
- },
2126
- "rdfs:label": {
2127
- "@language": "en",
2128
- "@value": "motivationScheme"
2129
- }
2130
- },
2131
- {
2132
- "@id": "oa:replying",
2133
- "@type": [
2134
- "oa:Motivation",
2135
- "owl:NamedIndividual"
2136
- ],
2137
- "rdfs:comment": {
2138
- "@language": "en",
2139
- "@value": "The motivation that represents a reply to a previous statement, either an Annotation or another resource. For example providing the assistance requested in the above."
2140
- },
2141
- "skos:inScheme": {
2142
- "@id": "oa:motivationScheme"
2143
- },
2144
- "skos:prefLabel": {
2145
- "@language": "en",
2146
- "@value": "replying"
2147
- }
2148
- },
2149
- {
2150
- "@id": "oa:start",
2151
- "@type": "owl:DatatypeProperty",
2152
- "rdfs:comment": {
2153
- "@language": "en",
2154
- "@value": "The starting position of the segment of text or bytes. The first character/byte in the full text/stream is position 0. The character/byte indicated at position oa:start is included within the selected segment. \n\nSee oa:DataPositionSelector and oa:TextPositionSelector."
2155
- },
2156
- "rdfs:domain": {
2157
- "@id": "oa:Selector"
2158
- },
2159
- "rdfs:isDefinedBy": {
2160
- "@id": "oa:"
2161
- },
2162
- "rdfs:label": {
2163
- "@language": "en",
2164
- "@value": "start"
2165
- },
2166
- "rdfs:range": {
2167
- "@id": "xsd:nonNegativeInteger"
2168
- }
2169
- },
2170
- {
2171
- "@id": "oa:end",
2172
- "@type": "owl:DatatypeProperty",
2173
- "rdfs:comment": {
2174
- "@language": "en",
2175
- "@value": "The end position of the segment of text or bytes. The first character/byte in the full text/stream is position 0. The character/byte indicated at position oa:end is NOT included within the selected segment. \n\nSee oa:DataPositionSelector and oa:oa:TextPositionSelector."
2176
- },
2177
- "rdfs:domain": {
2178
- "@id": "oa:Selector"
2179
- },
2180
- "rdfs:isDefinedBy": {
2181
- "@id": "oa:"
2182
- },
2183
- "rdfs:label": {
2184
- "@language": "en",
2185
- "@value": "end"
2186
- },
2187
- "rdfs:range": {
2188
- "@id": "xsd:nonNegativeInteger"
2189
- }
2190
- },
2191
- {
2192
- "@id": "oa:TimeState",
2193
- "@type": "owl:Class",
2194
- "rdfs:comment": {
2195
- "@language": "en",
2196
- "@value": "A resource which describes how to retrieve a representation of the Source resource that is temporally appropriate for the Annotation.\n\nThere MUST be at least one of oa:cachedSource or oa:when specified. If there is more than 1, each gives an alternative copy of the representation."
2197
- },
2198
- "rdfs:isDefinedBy": {
2199
- "@id": "oa:"
2200
- },
2201
- "rdfs:label": {
2202
- "@language": "en",
2203
- "@value": "TimeState"
2204
- },
2205
- "rdfs:subClassOf": {
2206
- "@id": "oa:State"
2207
- }
2208
- },
2209
- {
2210
- "@id": "oa:State",
2211
- "@type": "owl:Class",
2212
- "rdfs:comment": {
2213
- "@language": "en",
2214
- "@value": "A resource which describes how to retrieve an appropriate representation of the Source resource, indicated with oa:hasState from the Specific Resource.\n\nThis class is not used directly in Annotations, only its subclasses are.\n\nThe Specifier's description MAY be conveyed as an external or embedded resource (cnt:Content), or as RDF properties within the graph. The description SHOULD use existing standards whenever possible. If the Specifier has an HTTP URI, then its description, and only its description, MUST be returned when the URI is dereferenced."
2215
- },
2216
- "rdfs:isDefinedBy": {
2217
- "@id": "oa:"
2218
- },
2219
- "rdfs:label": {
2220
- "@language": "en",
2221
- "@value": "State"
2222
- }
2223
- },
2224
- {
2225
- "@id": "oa:CssStyle",
2226
- "@type": "owl:Class",
2227
- "rdfs:comment": {
2228
- "@language": "en",
2229
- "@value": "A resource which describes styles for resources participating in the Annotation using CSS.\n\nSpecific Resources MAY be assigned a CSS style class using oa:styleClass.\n\nThe CSS resource MAY have its own dereferencable URI that provides the information. For example, \"Style1\" in the diagram below might actually have the URI \"http://www.example.com/styles/annotations.css\". It MAY be embedded within the Annotation using the inline constructions described in Embedding Resources."
2230
- },
2231
- "rdfs:isDefinedBy": {
2232
- "@id": "oa:"
2233
- },
2234
- "rdfs:label": {
2235
- "@language": "en",
2236
- "@value": "CssStyle"
2237
- },
2238
- "rdfs:subClassOf": {
2239
- "@id": "oa:Style"
2240
- }
2241
- },
2242
- {
2243
- "@id": "oa:item",
2244
- "@type": "owl:ObjectProperty",
2245
- "rdfs:comment": {
2246
- "@language": "en",
2247
- "@value": "The relationship between a multiplicity construct node and its constituent resources.\n\nThere MUST be 1 or more item relationships for each multiplicity construct oa:Choice, oa:Composite and oa:List."
2248
- },
2249
- "rdfs:isDefinedBy": {
2250
- "@id": "oa:"
2251
- },
2252
- "rdfs:label": {
2253
- "@language": "en",
2254
- "@value": "item"
2255
- },
2256
- "rdfs:subPropertyOf": {
2257
- "@id": "rdfs:member"
2258
- }
2259
- },
2260
- {
2261
- "@id": "oa:hasScope",
2262
- "@type": "owl:ObjectProperty",
2263
- "rdfs:comment": {
2264
- "@language": "en",
2265
- "@value": "The relationship between a Specific Resource and the resource that provides the scope or context for it in this Annotation.\n\nThere MAY be 0 or more hasScope relationships for each Specific Resource."
2266
- },
2267
- "rdfs:domain": {
2268
- "@id": "oa:SpecificResource"
2269
- },
2270
- "rdfs:isDefinedBy": {
2271
- "@id": "oa:"
2272
- },
2273
- "rdfs:label": {
2274
- "@language": "en",
2275
- "@value": "hasScope"
2276
- }
2277
- },
2278
- {
2279
- "@id": "oa:suffix",
2280
- "@type": "owl:DatatypeProperty",
2281
- "rdfs:comment": {
2282
- "@language": "en",
2283
- "@value": "The snippet of text that occurs immediately after the text which is being selected. \n\nSee oa:TextQuoteSelector."
2284
- },
2285
- "rdfs:domain": {
2286
- "@id": "oa:Selector"
2287
- },
2288
- "rdfs:isDefinedBy": {
2289
- "@id": "oa:"
2290
- },
2291
- "rdfs:label": {
2292
- "@language": "en",
2293
- "@value": "suffix"
2294
- }
2295
- },
2296
- {
2297
- "@id": "oa:hasState",
2298
- "@type": "owl:ObjectProperty",
2299
- "rdfs:comment": {
2300
- "@language": "en",
2301
- "@value": "The relationship between a oa:SpecificResource and a oa:State resource.\n\nThere MAY be 0 or 1 oa:hasState relationship for each SpecificResource.\n\nIf there are multiple State resources that must be associated with the specific resource, then the use of the Multiplicity Constructs oa:Choice, oa:Composite or oa:List is RECOMMENDED."
2302
- },
2303
- "rdfs:domain": {
2304
- "@id": "oa:SpecificResource"
2305
- },
2306
- "rdfs:isDefinedBy": {
2307
- "@id": "oa:"
2308
- },
2309
- "rdfs:label": {
2310
- "@language": "en",
2311
- "@value": "hasState"
2312
- },
2313
- "rdfs:range": {
2314
- "@id": "oa:State"
2315
- }
2316
- },
2317
- {
2318
- "@id": "oa:",
2319
- "@type": "owl:Ontology",
2320
- "dc:contributor": {
2321
- "@language": "en",
2322
- "@value": "Stian Soiland-Reyes"
2323
- },
2324
- "dc:creator": [
2325
- {
2326
- "@language": "en",
2327
- "@value": "Robert Sanderson"
2328
- },
2329
- {
2330
- "@language": "it",
2331
- "@value": "Paolo Ciccarese"
2332
- },
2333
- {
2334
- "@language": "vls",
2335
- "@value": "Herbert Van de Sompel"
2336
- }
2337
- ],
2338
- "dc:description": {
2339
- "@language": "en",
2340
- "@value": "The Open Annotation Core Data Model specifies an interoperable framework for creating associations between related resources, annotations, using a methodology that conforms to the Architecture of the World Wide Web. Open Annotations can easily be shared between platforms, with sufficient richness of expression to satisfy complex requirements while remaining simple enough to also allow for the most common use cases, such as attaching a piece of text to a single web resource.\n\nAn Annotation is considered to be a set of connected resources, typically including a body and target, where the body is somehow about the target. The full model supports additional functionality, enabling semantic annotations, embedding content, selecting segments of resources, choosing the appropriate representation of a resource and providing styling hints for consuming clients."
2341
- },
2342
- "dc:title": {
2343
- "@language": "en",
2344
- "@value": "Open Annotation Data Model"
2345
- },
2346
- "dcterms:modified": {
2347
- "@type": "xsd:dateTime",
2348
- "@value": "2013-02-22T21:40:51+01:00"
2349
- },
2350
- "owl:versionIRI": {
2351
- "@id": "http://www.openannotation.org/spec/core/20130208/oa.owl"
2352
- },
2353
- "owl:versionInfo": "0.9.20130208",
2354
- "rdfs:comment": {
2355
- "@language": "en",
2356
- "@value": "The Open Annotation Core Data Model specifies an interoperable framework for creating associations between related resources, annotations, using a methodology that conforms to the Architecture of the World Wide Web.\n\nThis ontology is a non-normative OWL formalization of the textual OA specification at http://www.openannotation.org/spec/core/20130208/index.html\n\nNote that OWL imports are disabled in the published version in order to reduce external implications, improve OWL 2 Profile conformity and increase interoperability. Some OWL tools might thus misleadingly show this ontology as (re)defining properties like skos:prefLabel."
2357
- },
2358
- "rdfs:seeAlso": {
2359
- "@id": "http://www.openannotation.org/spec/core/20130208/index.html"
2360
- }
2361
- },
2362
- {
2363
- "@id": "oa:questioning",
2364
- "@type": [
2365
- "oa:Motivation",
2366
- "owl:NamedIndividual"
2367
- ],
2368
- "rdfs:comment": {
2369
- "@language": "en",
2370
- "@value": "The motivation that represents asking a question about the target resource(s). For example to ask for assistance with a particular section of text, or question its veracity."
2371
- },
2372
- "skos:inScheme": {
2373
- "@id": "oa:motivationScheme"
2374
- },
2375
- "skos:prefLabel": {
2376
- "@language": "en",
2377
- "@value": "questioning"
2378
- }
2379
- },
2380
- {
2381
- "@id": "oa:describing",
2382
- "@type": [
2383
- "oa:Motivation",
2384
- "owl:NamedIndividual"
2385
- ],
2386
- "rdfs:comment": {
2387
- "@language": "en",
2388
- "@value": "The motivation that represents a description of the target resource(s), as opposed to a comment about them. For example describing the above PDF's contents, rather than commenting on their accuracy."
2389
- },
2390
- "skos:inScheme": {
2391
- "@id": "oa:motivationScheme"
2392
- },
2393
- "skos:prefLabel": {
2394
- "@language": "en",
2395
- "@value": "describing"
2396
- }
2397
- },
2398
- {
2399
- "@id": "oa:styleClass",
2400
- "@type": "owl:DatatypeProperty",
2401
- "rdfs:comment": {
2402
- "@language": "en",
2403
- "@value": "The string name of the class used in the CSS description that should be applied to the Specific Resource.\n\nThere MAY be 0 or more styleClass properties on a Specific Resource.\n\nSee oa:CssStyle."
2404
- },
2405
- "rdfs:domain": {
2406
- "@id": "oa:SpecificResource"
2407
- },
2408
- "rdfs:isDefinedBy": {
2409
- "@id": "oa:"
2410
- },
2411
- "rdfs:label": {
2412
- "@language": "en",
2413
- "@value": "styleClass"
2414
- }
2415
- },
2416
- {
2417
- "@id": "oa:Tag",
2418
- "@type": "owl:Class",
2419
- "rdfs:comment": {
2420
- "@language": "en",
2421
- "@value": "A class assigned to the Body when it is a tag, such as a embedded text string with cnt:chars.\n\nTags are typically keywords or labels, and used for organization, description or discovery of the resource being tagged. In the Semantic Web, URIs are used instead of strings to avoid the issue of polysemy where one word has multiple meanings, such usage MUST be indicated using the subclass oa:SemanticTag.\n\nAnnotations that tag resources, either with text or semantic tags, SHOULD also have the oa:tagging motivation to make the reason for the Annotation more clear to applications, and MAY have other motivations as well."
2422
- },
2423
- "rdfs:isDefinedBy": {
2424
- "@id": "oa:"
2425
- },
2426
- "rdfs:label": {
2427
- "@language": "en",
2428
- "@value": "Tag"
2429
- }
2430
- },
2431
- {
2432
- "@id": "oa:prefix",
2433
- "@type": "owl:DatatypeProperty",
2434
- "rdfs:comment": {
2435
- "@language": "en",
2436
- "@value": "A snippet of text that occurs immediately before the text which is being selected.\n\nSee oa:TextQuoteSelector."
2437
- },
2438
- "rdfs:domain": {
2439
- "@id": "oa:Selector"
2440
- },
2441
- "rdfs:isDefinedBy": {
2442
- "@id": "oa:"
2443
- },
2444
- "rdfs:label": {
2445
- "@language": "en",
2446
- "@value": "prefix"
2447
- }
2448
- }
2449
- ]
2450
- }
2451
-
2452
-
2453
- http_version:
2454
- recorded_at: Fri, 19 Jun 2015 18:40:05 GMT
2455
- - request:
2456
- method: get
2457
- uri: http://localhost:3000/annotations/foo/02%2Fc8%2F79%2F24%2F02c87924-37bb-4005-b781-573d0dab7ce4
2458
- body:
2459
- encoding: US-ASCII
2460
- string: ''
2461
- headers:
2462
- Accept:
2463
- - application/trix
2464
- Accept-Encoding:
2465
- - gzip, deflate
2466
- User-Agent:
2467
- - Ruby
2468
- response:
2469
- status:
2470
- code: 406
2471
- message: 'Not Acceptable '
2472
- headers:
2473
- Content-Type:
2474
- - text/html; charset=utf-8
2475
- Content-Length:
2476
- - '121330'
2477
- X-Request-Id:
2478
- - 584e00ea-5748-4ace-b776-2a69dd3b2ad6
2479
- X-Runtime:
2480
- - '0.259110'
2481
- Server:
2482
- - WEBrick/1.3.1 (Ruby/2.2.2/2015-04-13)
2483
- Date:
2484
- - Fri, 19 Jun 2015 18:40:05 GMT
2485
- Connection:
2486
- - Keep-Alive
2487
- body:
2488
- encoding: UTF-8
2489
- string: "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <meta charset=\"utf-8\"
2490
- />\n <title>Action Controller: Exception caught</title>\n <style>\n body
2491
- {\n background-color: #FAFAFA;\n color: #333;\n margin: 0px;\n
2492
- \ }\n\n body, p, ol, ul, td {\n font-family: helvetica, verdana,
2493
- arial, sans-serif;\n font-size: 13px;\n line-height: 18px;\n }\n\n
2494
- \ pre {\n font-size: 11px;\n white-space: pre-wrap;\n }\n\n
2495
- \ pre.box {\n border: 1px solid #EEE;\n padding: 10px;\n margin:
2496
- 0px;\n width: 958px;\n }\n\n header {\n color: #F0F0F0;\n
2497
- \ background: #C52F24;\n padding: 0.5em 1.5em;\n }\n\n h1 {\n
2498
- \ margin: 0.2em 0;\n line-height: 1.1em;\n font-size: 2em;\n
2499
- \ }\n\n h2 {\n color: #C52F24;\n line-height: 25px;\n }\n\n
2500
- \ .details {\n border: 1px solid #D0D0D0;\n border-radius: 4px;\n
2501
- \ margin: 1em 0px;\n display: block;\n width: 978px;\n }\n\n
2502
- \ .summary {\n padding: 8px 15px;\n border-bottom: 1px solid #D0D0D0;\n
2503
- \ display: block;\n }\n\n .details pre {\n margin: 5px;\n border:
2504
- none;\n }\n\n #container {\n box-sizing: border-box;\n width:
2505
- 100%;\n padding: 0 1.5em;\n }\n\n .source * {\n margin: 0px;\n
2506
- \ padding: 0px;\n }\n\n .source {\n border: 1px solid #D9D9D9;\n
2507
- \ background: #ECECEC;\n width: 978px;\n }\n\n .source pre
2508
- {\n padding: 10px 0px;\n border: none;\n }\n\n .source .data
2509
- {\n font-size: 80%;\n overflow: auto;\n background-color: #FFF;\n
2510
- \ }\n\n .info {\n padding: 0.5em;\n }\n\n .source .data .line_numbers
2511
- {\n background-color: #ECECEC;\n color: #AAA;\n padding: 1em
2512
- .5em;\n border-right: 1px solid #DDD;\n text-align: right;\n }\n\n
2513
- \ .line {\n padding-left: 10px;\n }\n\n .line:hover {\n background-color:
2514
- #F6F6F6;\n }\n\n .line.active {\n background-color: #FFCCCC;\n
2515
- \ }\n\n .hidden {\n display: none;\n }\n\n a { color: #980905;
2516
- }\n a:visited { color: #666; }\n a.trace-frames { color: #666; }\n a:hover
2517
- { color: #C52F24; }\n a.trace-frames.selected { color: #C52F24 }\n\n \n
2518
- \ </style>\n\n <script>\n var toggle = function(id) {\n var s = document.getElementById(id).style;\n
2519
- \ s.display = s.display == 'none' ? 'block' : 'none';\n return false;\n
2520
- \ }\n var show = function(id) {\n document.getElementById(id).style.display
2521
- = 'block';\n }\n var hide = function(id) {\n document.getElementById(id).style.display
2522
- = 'none';\n }\n var toggleTrace = function() {\n return toggle('blame_trace');\n
2523
- \ }\n var toggleSessionDump = function() {\n return toggle('session_dump');\n
2524
- \ }\n var toggleEnvDump = function() {\n return toggle('env_dump');\n
2525
- \ }\n </script>\n</head>\n<body>\n\n<header>\n <h1>\n ActionController::UnknownFormat\n
2526
- \ in Triannon::AnnotationsController#show\n </h1>\n</header>\n\n<div
2527
- id=\"container\">\n <h2>ActionController::UnknownFormat</h2>\n\n <div
2528
- class=\"source \" id=\"frame-source-0\">\n <div class=\"info\">\n Extracted
2529
- source (around line <strong>#217</strong>):\n </div>\n <div class=\"data\">\n
2530
- \ <table cellpadding=\"0\" cellspacing=\"0\" class=\"lines\">\n <tr>\n
2531
- \ <td>\n <pre class=\"line_numbers\">\n<span>215</span>\n<span>216</span>\n<span>217</span>\n<span>218</span>\n<span>219</span>\n<span>220</span>\n
2532
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
2533
- class=\"line\"> response ? response.call : render({})\n</div><div class=\"line\">
2534
- \ else\n</div><div class=\"line active\"> raise ActionController::UnknownFormat\n</div><div
2535
- class=\"line\"> end\n</div><div class=\"line\"> end\n</div><div class=\"line\">\n</div>\n</pre>\n</td>\n
2536
- \ </tr>\n </table>\n </div>\n </div>\n <div class=\"source
2537
- hidden\" id=\"frame-source-1\">\n <div class=\"info\">\n Extracted
2538
- source (around line <strong>#26</strong>):\n </div>\n <div class=\"data\">\n
2539
- \ <table cellpadding=\"0\" cellspacing=\"0\" class=\"lines\">\n <tr>\n
2540
- \ <td>\n <pre class=\"line_numbers\">\n<span>24</span>\n<span>25</span>\n<span>26</span>\n<span>27</span>\n<span>28</span>\n<span>29</span>\n
2541
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
2542
- class=\"line\"> def show\n</div><div class=\"line\"> # TODO: json.set!
2543
- &quot;@context&quot;, OA::Graph::OA_DATED_CONTEXT_URL - would this work?\n</div><div
2544
- class=\"line active\"> respond_to do |format|\n</div><div class=\"line\">
2545
- \ format.jsonld {\n</div><div class=\"line\"> context_url =
2546
- context_url_from_accept ? context_url_from_accept : context_url_from_link\n</div><div
2547
- class=\"line\"> if context_url &amp;&amp; context_url == OA::Graph::IIIF_CONTEXT_URL\n</div>\n</pre>\n</td>\n
2548
- \ </tr>\n </table>\n </div>\n </div>\n <div class=\"source
2549
- hidden\" id=\"frame-source-2\">\n <div class=\"info\">\n Extracted
2550
- source (around line <strong>#4</strong>):\n </div>\n <div class=\"data\">\n
2551
- \ <table cellpadding=\"0\" cellspacing=\"0\" class=\"lines\">\n <tr>\n
2552
- \ <td>\n <pre class=\"line_numbers\">\n<span>2</span>\n<span>3</span>\n<span>4</span>\n<span>5</span>\n<span>6</span>\n<span>7</span>\n
2553
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
2554
- class=\"line\"> module ImplicitRender\n</div><div class=\"line\"> def
2555
- send_action(method, *args)\n</div><div class=\"line active\"> ret = super\n</div><div
2556
- class=\"line\"> default_render unless performed?\n</div><div class=\"line\">
2557
- \ ret\n</div><div class=\"line\"> end\n</div>\n</pre>\n</td>\n </tr>\n
2558
- \ </table>\n </div>\n </div>\n <div class=\"source hidden\"
2559
- id=\"frame-source-3\">\n <div class=\"info\">\n Extracted source
2560
- (around line <strong>#198</strong>):\n </div>\n <div class=\"data\">\n
2561
- \ <table cellpadding=\"0\" cellspacing=\"0\" class=\"lines\">\n <tr>\n
2562
- \ <td>\n <pre class=\"line_numbers\">\n<span>196</span>\n<span>197</span>\n<span>198</span>\n<span>199</span>\n<span>200</span>\n<span>201</span>\n
2563
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
2564
- class=\"line\"> # which is *not* necessarily the same as the action name.\n</div><div
2565
- class=\"line\"> def process_action(method_name, *args)\n</div><div class=\"line
2566
- active\"> send_action(method_name, *args)\n</div><div class=\"line\">
2567
- \ end\n</div><div class=\"line\">\n</div><div class=\"line\"> # Actually
2568
- call the method associated with the action. Override\n</div>\n</pre>\n</td>\n
2569
- \ </tr>\n </table>\n </div>\n </div>\n <div class=\"source
2570
- hidden\" id=\"frame-source-4\">\n <div class=\"info\">\n Extracted
2571
- source (around line <strong>#10</strong>):\n </div>\n <div class=\"data\">\n
2572
- \ <table cellpadding=\"0\" cellspacing=\"0\" class=\"lines\">\n <tr>\n
2573
- \ <td>\n <pre class=\"line_numbers\">\n<span>8</span>\n<span>9</span>\n<span>10</span>\n<span>11</span>\n<span>12</span>\n<span>13</span>\n
2574
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
2575
- class=\"line\"> def process_action(*) #:nodoc:\n</div><div class=\"line\">
2576
- \ self.formats = request.formats.map(&amp;:ref).compact\n</div><div class=\"line
2577
- active\"> super\n</div><div class=\"line\"> end\n</div><div class=\"line\">\n</div><div
2578
- class=\"line\"> # Check for double render errors and set the content_type
2579
- after rendering.\n</div>\n</pre>\n</td>\n </tr>\n </table>\n
2580
- \ </div>\n </div>\n <div class=\"source hidden\" id=\"frame-source-5\">\n
2581
- \ <div class=\"info\">\n Extracted source (around line <strong>#20</strong>):\n
2582
- \ </div>\n <div class=\"data\">\n <table cellpadding=\"0\"
2583
- cellspacing=\"0\" class=\"lines\">\n <tr>\n <td>\n <pre
2584
- class=\"line_numbers\">\n<span>18</span>\n<span>19</span>\n<span>20</span>\n<span>21</span>\n<span>22</span>\n<span>23</span>\n
2585
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
2586
- class=\"line\"> def process_action(*args)\n</div><div class=\"line\"> run_callbacks(:process_action)
2587
- do\n</div><div class=\"line active\"> super\n</div><div class=\"line\">
2588
- \ end\n</div><div class=\"line\"> end\n</div><div class=\"line\">\n</div>\n</pre>\n</td>\n
2589
- \ </tr>\n </table>\n </div>\n </div>\n <div class=\"source
2590
- hidden\" id=\"frame-source-6\">\n <div class=\"info\">\n Extracted
2591
- source (around line <strong>#117</strong>):\n </div>\n <div class=\"data\">\n
2592
- \ <table cellpadding=\"0\" cellspacing=\"0\" class=\"lines\">\n <tr>\n
2593
- \ <td>\n <pre class=\"line_numbers\">\n<span>115</span>\n<span>116</span>\n<span>117</span>\n<span>118</span>\n<span>119</span>\n<span>120</span>\n
2594
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
2595
- class=\"line\"> def call(env)\n</div><div class=\"line\"> block
2596
- = env.run_block\n</div><div class=\"line active\"> env.value = !env.halted
2597
- &amp;&amp; (!block || block.call)\n</div><div class=\"line\"> env\n</div><div
2598
- class=\"line\"> end\n</div><div class=\"line\"> end\n</div>\n</pre>\n</td>\n
2599
- \ </tr>\n </table>\n </div>\n </div>\n <div class=\"source
2600
- hidden\" id=\"frame-source-7\">\n <div class=\"info\">\n Extracted
2601
- source (around line <strong>#117</strong>):\n </div>\n <div class=\"data\">\n
2602
- \ <table cellpadding=\"0\" cellspacing=\"0\" class=\"lines\">\n <tr>\n
2603
- \ <td>\n <pre class=\"line_numbers\">\n<span>115</span>\n<span>116</span>\n<span>117</span>\n<span>118</span>\n<span>119</span>\n<span>120</span>\n
2604
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
2605
- class=\"line\"> def call(env)\n</div><div class=\"line\"> block
2606
- = env.run_block\n</div><div class=\"line active\"> env.value = !env.halted
2607
- &amp;&amp; (!block || block.call)\n</div><div class=\"line\"> env\n</div><div
2608
- class=\"line\"> end\n</div><div class=\"line\"> end\n</div>\n</pre>\n</td>\n
2609
- \ </tr>\n </table>\n </div>\n </div>\n <div class=\"source
2610
- hidden\" id=\"frame-source-8\">\n <div class=\"info\">\n Extracted
2611
- source (around line <strong>#555</strong>):\n </div>\n <div class=\"data\">\n
2612
- \ <table cellpadding=\"0\" cellspacing=\"0\" class=\"lines\">\n <tr>\n
2613
- \ <td>\n <pre class=\"line_numbers\">\n<span>553</span>\n<span>554</span>\n<span>555</span>\n<span>556</span>\n<span>557</span>\n<span>558</span>\n
2614
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
2615
- class=\"line\"> def compile\n</div><div class=\"line\"> @callbacks
2616
- || @mutex.synchronize do\n</div><div class=\"line active\"> final_sequence
2617
- = CallbackSequence.new { |env| Filters::ENDING.call(env) }\n</div><div class=\"line\">
2618
- \ @callbacks ||= @chain.reverse.inject(final_sequence) do |callback_sequence,
2619
- callback|\n</div><div class=\"line\"> callback.apply callback_sequence\n</div><div
2620
- class=\"line\"> end\n</div>\n</pre>\n</td>\n </tr>\n </table>\n
2621
- \ </div>\n </div>\n <div class=\"source hidden\" id=\"frame-source-9\">\n
2622
- \ <div class=\"info\">\n Extracted source (around line <strong>#505</strong>):\n
2623
- \ </div>\n <div class=\"data\">\n <table cellpadding=\"0\"
2624
- cellspacing=\"0\" class=\"lines\">\n <tr>\n <td>\n <pre
2625
- class=\"line_numbers\">\n<span>503</span>\n<span>504</span>\n<span>505</span>\n<span>506</span>\n<span>507</span>\n<span>508</span>\n
2626
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
2627
- class=\"line\"> def call(*args)\n</div><div class=\"line\"> @before.each
2628
- { |b| b.call(*args) }\n</div><div class=\"line active\"> value = @call.call(*args)\n</div><div
2629
- class=\"line\"> @after.each { |a| a.call(*args) }\n</div><div class=\"line\">
2630
- \ value\n</div><div class=\"line\"> end\n</div>\n</pre>\n</td>\n
2631
- \ </tr>\n </table>\n </div>\n </div>\n <div class=\"source
2632
- hidden\" id=\"frame-source-10\">\n <div class=\"info\">\n Extracted
2633
- source (around line <strong>#505</strong>):\n </div>\n <div class=\"data\">\n
2634
- \ <table cellpadding=\"0\" cellspacing=\"0\" class=\"lines\">\n <tr>\n
2635
- \ <td>\n <pre class=\"line_numbers\">\n<span>503</span>\n<span>504</span>\n<span>505</span>\n<span>506</span>\n<span>507</span>\n<span>508</span>\n
2636
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
2637
- class=\"line\"> def call(*args)\n</div><div class=\"line\"> @before.each
2638
- { |b| b.call(*args) }\n</div><div class=\"line active\"> value = @call.call(*args)\n</div><div
2639
- class=\"line\"> @after.each { |a| a.call(*args) }\n</div><div class=\"line\">
2640
- \ value\n</div><div class=\"line\"> end\n</div>\n</pre>\n</td>\n
2641
- \ </tr>\n </table>\n </div>\n </div>\n <div class=\"source
2642
- hidden\" id=\"frame-source-11\">\n <div class=\"info\">\n Extracted
2643
- source (around line <strong>#92</strong>):\n </div>\n <div class=\"data\">\n
2644
- \ <table cellpadding=\"0\" cellspacing=\"0\" class=\"lines\">\n <tr>\n
2645
- \ <td>\n <pre class=\"line_numbers\">\n<span>90</span>\n<span>91</span>\n<span>92</span>\n<span>93</span>\n<span>94</span>\n<span>95</span>\n
2646
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
2647
- class=\"line\"> runner = callbacks.compile\n</div><div class=\"line\">
2648
- \ e = Filters::Environment.new(self, false, nil, block)\n</div><div
2649
- class=\"line active\"> runner.call(e).value\n</div><div class=\"line\">
2650
- \ end\n</div><div class=\"line\"> end\n</div><div class=\"line\">\n</div>\n</pre>\n</td>\n
2651
- \ </tr>\n </table>\n </div>\n </div>\n <div class=\"source
2652
- hidden\" id=\"frame-source-12\">\n <div class=\"info\">\n Extracted
2653
- source (around line <strong>#776</strong>):\n </div>\n <div class=\"data\">\n
2654
- \ <table cellpadding=\"0\" cellspacing=\"0\" class=\"lines\">\n <tr>\n
2655
- \ <td>\n <pre class=\"line_numbers\">\n<span>774</span>\n<span>775</span>\n<span>776</span>\n<span>777</span>\n<span>778</span>\n<span>779</span>\n
2656
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
2657
- class=\"line\"> module_eval &lt;&lt;-RUBY, __FILE__, __LINE__ + 1\n</div><div
2658
- class=\"line\"> def _run_#{name}_callbacks(&amp;block)\n</div><div
2659
- class=\"line active\"> _run_callbacks(_#{name}_callbacks, &amp;block)\n</div><div
2660
- class=\"line\"> end\n</div><div class=\"line\"> RUBY\n</div><div
2661
- class=\"line\"> end\n</div>\n</pre>\n</td>\n </tr>\n </table>\n
2662
- \ </div>\n </div>\n <div class=\"source hidden\" id=\"frame-source-13\">\n
2663
- \ <div class=\"info\">\n Extracted source (around line <strong>#81</strong>):\n
2664
- \ </div>\n <div class=\"data\">\n <table cellpadding=\"0\"
2665
- cellspacing=\"0\" class=\"lines\">\n <tr>\n <td>\n <pre
2666
- class=\"line_numbers\">\n<span>79</span>\n<span>80</span>\n<span>81</span>\n<span>82</span>\n<span>83</span>\n<span>84</span>\n
2667
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
2668
- class=\"line\"> # end\n</div><div class=\"line\"> def run_callbacks(kind,
2669
- &amp;block)\n</div><div class=\"line active\"> send &quot;_run_#{kind}_callbacks&quot;,
2670
- &amp;block\n</div><div class=\"line\"> end\n</div><div class=\"line\">\n</div><div
2671
- class=\"line\"> private\n</div>\n</pre>\n</td>\n </tr>\n </table>\n
2672
- \ </div>\n </div>\n <div class=\"source hidden\" id=\"frame-source-14\">\n
2673
- \ <div class=\"info\">\n Extracted source (around line <strong>#19</strong>):\n
2674
- \ </div>\n <div class=\"data\">\n <table cellpadding=\"0\"
2675
- cellspacing=\"0\" class=\"lines\">\n <tr>\n <td>\n <pre
2676
- class=\"line_numbers\">\n<span>17</span>\n<span>18</span>\n<span>19</span>\n<span>20</span>\n<span>21</span>\n<span>22</span>\n
2677
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
2678
- class=\"line\"> # process_action callbacks around the normal behavior.\n</div><div
2679
- class=\"line\"> def process_action(*args)\n</div><div class=\"line active\">
2680
- \ run_callbacks(:process_action) do\n</div><div class=\"line\"> super\n</div><div
2681
- class=\"line\"> end\n</div><div class=\"line\"> end\n</div>\n</pre>\n</td>\n
2682
- \ </tr>\n </table>\n </div>\n </div>\n <div class=\"source
2683
- hidden\" id=\"frame-source-15\">\n <div class=\"info\">\n Extracted
2684
- source (around line <strong>#29</strong>):\n </div>\n <div class=\"data\">\n
2685
- \ <table cellpadding=\"0\" cellspacing=\"0\" class=\"lines\">\n <tr>\n
2686
- \ <td>\n <pre class=\"line_numbers\">\n<span>27</span>\n<span>28</span>\n<span>29</span>\n<span>30</span>\n<span>31</span>\n<span>32</span>\n
2687
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
2688
- class=\"line\"> private\n</div><div class=\"line\"> def process_action(*args)\n</div><div
2689
- class=\"line active\"> super\n</div><div class=\"line\"> rescue
2690
- Exception =&gt; exception\n</div><div class=\"line\"> request.env[&#39;action_dispatch.show_detailed_exceptions&#39;]
2691
- ||= show_detailed_exceptions?\n</div><div class=\"line\"> rescue_with_handler(exception)
2692
- || raise(exception)\n</div>\n</pre>\n</td>\n </tr>\n </table>\n
2693
- \ </div>\n </div>\n <div class=\"source hidden\" id=\"frame-source-16\">\n
2694
- \ <div class=\"info\">\n Extracted source (around line <strong>#32</strong>):\n
2695
- \ </div>\n <div class=\"data\">\n <table cellpadding=\"0\"
2696
- cellspacing=\"0\" class=\"lines\">\n <tr>\n <td>\n <pre
2697
- class=\"line_numbers\">\n<span>30</span>\n<span>31</span>\n<span>32</span>\n<span>33</span>\n<span>34</span>\n<span>35</span>\n
2698
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
2699
- class=\"line\"> ActiveSupport::Notifications.instrument(&quot;process_action.action_controller&quot;,
2700
- raw_payload) do |payload|\n</div><div class=\"line\"> begin\n</div><div
2701
- class=\"line active\"> result = super\n</div><div class=\"line\">
2702
- \ payload[:status] = response.status\n</div><div class=\"line\"> result\n</div><div
2703
- class=\"line\"> ensure\n</div>\n</pre>\n</td>\n </tr>\n </table>\n
2704
- \ </div>\n </div>\n <div class=\"source hidden\" id=\"frame-source-17\">\n
2705
- \ <div class=\"info\">\n Extracted source (around line <strong>#164</strong>):\n
2706
- \ </div>\n <div class=\"data\">\n <table cellpadding=\"0\"
2707
- cellspacing=\"0\" class=\"lines\">\n <tr>\n <td>\n <pre
2708
- class=\"line_numbers\">\n<span>162</span>\n<span>163</span>\n<span>164</span>\n<span>165</span>\n<span>166</span>\n<span>167</span>\n
2709
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
2710
- class=\"line\"> def instrument(name, payload = {})\n</div><div class=\"line\">
2711
- \ if notifier.listening?(name)\n</div><div class=\"line active\"> instrumenter.instrument(name,
2712
- payload) { yield payload if block_given? }\n</div><div class=\"line\"> else\n</div><div
2713
- class=\"line\"> yield payload if block_given?\n</div><div class=\"line\">
2714
- \ end\n</div>\n</pre>\n</td>\n </tr>\n </table>\n </div>\n
2715
- \ </div>\n <div class=\"source hidden\" id=\"frame-source-18\">\n <div
2716
- class=\"info\">\n Extracted source (around line <strong>#20</strong>):\n
2717
- \ </div>\n <div class=\"data\">\n <table cellpadding=\"0\"
2718
- cellspacing=\"0\" class=\"lines\">\n <tr>\n <td>\n <pre
2719
- class=\"line_numbers\">\n<span>18</span>\n<span>19</span>\n<span>20</span>\n<span>21</span>\n<span>22</span>\n<span>23</span>\n
2720
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
2721
- class=\"line\"> start name, payload\n</div><div class=\"line\"> begin\n</div><div
2722
- class=\"line active\"> yield payload\n</div><div class=\"line\">
2723
- \ rescue Exception =&gt; e\n</div><div class=\"line\"> payload[:exception]
2724
- = [e.class.name, e.message]\n</div><div class=\"line\"> raise e\n</div>\n</pre>\n</td>\n
2725
- \ </tr>\n </table>\n </div>\n </div>\n <div class=\"source
2726
- hidden\" id=\"frame-source-19\">\n <div class=\"info\">\n Extracted
2727
- source (around line <strong>#164</strong>):\n </div>\n <div class=\"data\">\n
2728
- \ <table cellpadding=\"0\" cellspacing=\"0\" class=\"lines\">\n <tr>\n
2729
- \ <td>\n <pre class=\"line_numbers\">\n<span>162</span>\n<span>163</span>\n<span>164</span>\n<span>165</span>\n<span>166</span>\n<span>167</span>\n
2730
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
2731
- class=\"line\"> def instrument(name, payload = {})\n</div><div class=\"line\">
2732
- \ if notifier.listening?(name)\n</div><div class=\"line active\"> instrumenter.instrument(name,
2733
- payload) { yield payload if block_given? }\n</div><div class=\"line\"> else\n</div><div
2734
- class=\"line\"> yield payload if block_given?\n</div><div class=\"line\">
2735
- \ end\n</div>\n</pre>\n</td>\n </tr>\n </table>\n </div>\n
2736
- \ </div>\n <div class=\"source hidden\" id=\"frame-source-20\">\n <div
2737
- class=\"info\">\n Extracted source (around line <strong>#30</strong>):\n
2738
- \ </div>\n <div class=\"data\">\n <table cellpadding=\"0\"
2739
- cellspacing=\"0\" class=\"lines\">\n <tr>\n <td>\n <pre
2740
- class=\"line_numbers\">\n<span>28</span>\n<span>29</span>\n<span>30</span>\n<span>31</span>\n<span>32</span>\n<span>33</span>\n
2741
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
2742
- class=\"line\"> ActiveSupport::Notifications.instrument(&quot;start_processing.action_controller&quot;,
2743
- raw_payload.dup)\n</div><div class=\"line\">\n</div><div class=\"line active\">
2744
- \ ActiveSupport::Notifications.instrument(&quot;process_action.action_controller&quot;,
2745
- raw_payload) do |payload|\n</div><div class=\"line\"> begin\n</div><div
2746
- class=\"line\"> result = super\n</div><div class=\"line\"> payload[:status]
2747
- = response.status\n</div>\n</pre>\n</td>\n </tr>\n </table>\n
2748
- \ </div>\n </div>\n <div class=\"source hidden\" id=\"frame-source-21\">\n
2749
- \ <div class=\"info\">\n Extracted source (around line <strong>#250</strong>):\n
2750
- \ </div>\n <div class=\"data\">\n <table cellpadding=\"0\"
2751
- cellspacing=\"0\" class=\"lines\">\n <tr>\n <td>\n <pre
2752
- class=\"line_numbers\">\n<span>248</span>\n<span>249</span>\n<span>250</span>\n<span>251</span>\n<span>252</span>\n<span>253</span>\n
2753
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
2754
- class=\"line\"> request.filtered_parameters.merge! wrapped_filtered_hash\n</div><div
2755
- class=\"line\"> end\n</div><div class=\"line active\"> super\n</div><div
2756
- class=\"line\"> end\n</div><div class=\"line\">\n</div><div class=\"line\">
2757
- \ private\n</div>\n</pre>\n</td>\n </tr>\n </table>\n </div>\n
2758
- \ </div>\n <div class=\"source hidden\" id=\"frame-source-22\">\n <div
2759
- class=\"info\">\n Extracted source (around line <strong>#18</strong>):\n
2760
- \ </div>\n <div class=\"data\">\n <table cellpadding=\"0\"
2761
- cellspacing=\"0\" class=\"lines\">\n <tr>\n <td>\n <pre
2762
- class=\"line_numbers\">\n<span>16</span>\n<span>17</span>\n<span>18</span>\n<span>19</span>\n<span>20</span>\n<span>21</span>\n
2763
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
2764
- class=\"line\"> # and it won&#39;t be cleaned up by the method below.\n</div><div
2765
- class=\"line\"> ActiveRecord::LogSubscriber.reset_runtime\n</div><div
2766
- class=\"line active\"> super\n</div><div class=\"line\"> end\n</div><div
2767
- class=\"line\">\n</div><div class=\"line\"> def cleanup_view_runtime\n</div>\n</pre>\n</td>\n
2768
- \ </tr>\n </table>\n </div>\n </div>\n <div class=\"source
2769
- hidden\" id=\"frame-source-23\">\n <div class=\"info\">\n Extracted
2770
- source (around line <strong>#137</strong>):\n </div>\n <div class=\"data\">\n
2771
- \ <table cellpadding=\"0\" cellspacing=\"0\" class=\"lines\">\n <tr>\n
2772
- \ <td>\n <pre class=\"line_numbers\">\n<span>135</span>\n<span>136</span>\n<span>137</span>\n<span>138</span>\n<span>139</span>\n<span>140</span>\n
2773
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
2774
- class=\"line\"> @_response_body = nil\n</div><div class=\"line\">\n</div><div
2775
- class=\"line active\"> process_action(action_name, *args)\n</div><div
2776
- class=\"line\"> end\n</div><div class=\"line\">\n</div><div class=\"line\">
2777
- \ # Delegates to the class&#39; #controller_path\n</div>\n</pre>\n</td>\n
2778
- \ </tr>\n </table>\n </div>\n </div>\n <div class=\"source
2779
- hidden\" id=\"frame-source-24\">\n <div class=\"info\">\n Extracted
2780
- source (around line <strong>#30</strong>):\n </div>\n <div class=\"data\">\n
2781
- \ <table cellpadding=\"0\" cellspacing=\"0\" class=\"lines\">\n <tr>\n
2782
- \ <td>\n <pre class=\"line_numbers\">\n<span>28</span>\n<span>29</span>\n<span>30</span>\n<span>31</span>\n<span>32</span>\n<span>33</span>\n
2783
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
2784
- class=\"line\"> def process(*) #:nodoc:\n</div><div class=\"line\"> old_config,
2785
- I18n.config = I18n.config, I18nProxy.new(I18n.config, lookup_context)\n</div><div
2786
- class=\"line active\"> super\n</div><div class=\"line\"> ensure\n</div><div
2787
- class=\"line\"> I18n.config = old_config\n</div><div class=\"line\">
2788
- \ end\n</div>\n</pre>\n</td>\n </tr>\n </table>\n </div>\n
2789
- \ </div>\n <div class=\"source hidden\" id=\"frame-source-25\">\n <div
2790
- class=\"info\">\n Extracted source (around line <strong>#196</strong>):\n
2791
- \ </div>\n <div class=\"data\">\n <table cellpadding=\"0\"
2792
- cellspacing=\"0\" class=\"lines\">\n <tr>\n <td>\n <pre
2793
- class=\"line_numbers\">\n<span>194</span>\n<span>195</span>\n<span>196</span>\n<span>197</span>\n<span>198</span>\n<span>199</span>\n
2794
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
2795
- class=\"line\"> @_env = request.env\n</div><div class=\"line\"> @_env[&#39;action_controller.instance&#39;]
2796
- = self\n</div><div class=\"line active\"> process(name)\n</div><div class=\"line\">
2797
- \ to_a\n</div><div class=\"line\"> end\n</div><div class=\"line\">\n</div>\n</pre>\n</td>\n
2798
- \ </tr>\n </table>\n </div>\n </div>\n <div class=\"source
2799
- hidden\" id=\"frame-source-26\">\n <div class=\"info\">\n Extracted
2800
- source (around line <strong>#13</strong>):\n </div>\n <div class=\"data\">\n
2801
- \ <table cellpadding=\"0\" cellspacing=\"0\" class=\"lines\">\n <tr>\n
2802
- \ <td>\n <pre class=\"line_numbers\">\n<span>11</span>\n<span>12</span>\n<span>13</span>\n<span>14</span>\n<span>15</span>\n<span>16</span>\n
2803
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
2804
- class=\"line\"> def dispatch(action, request)\n</div><div class=\"line\">
2805
- \ set_response!(request)\n</div><div class=\"line active\"> super(action,
2806
- request)\n</div><div class=\"line\"> end\n</div><div class=\"line\">\n</div><div
2807
- class=\"line\"> def response_body=(body)\n</div>\n</pre>\n</td>\n </tr>\n
2808
- \ </table>\n </div>\n </div>\n <div class=\"source hidden\"
2809
- id=\"frame-source-27\">\n <div class=\"info\">\n Extracted source
2810
- (around line <strong>#237</strong>):\n </div>\n <div class=\"data\">\n
2811
- \ <table cellpadding=\"0\" cellspacing=\"0\" class=\"lines\">\n <tr>\n
2812
- \ <td>\n <pre class=\"line_numbers\">\n<span>235</span>\n<span>236</span>\n<span>237</span>\n<span>238</span>\n<span>239</span>\n<span>240</span>\n
2813
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
2814
- class=\"line\"> end\n</div><div class=\"line\"> else\n</div><div
2815
- class=\"line active\"> lambda { |env| new.dispatch(name, klass.new(env))
2816
- }\n</div><div class=\"line\"> end\n</div><div class=\"line\"> end\n</div><div
2817
- class=\"line\"> end\n</div>\n</pre>\n</td>\n </tr>\n </table>\n
2818
- \ </div>\n </div>\n <div class=\"source hidden\" id=\"frame-source-28\">\n
2819
- \ <div class=\"info\">\n Extracted source (around line <strong>#74</strong>):\n
2820
- \ </div>\n <div class=\"data\">\n <table cellpadding=\"0\"
2821
- cellspacing=\"0\" class=\"lines\">\n <tr>\n <td>\n <pre
2822
- class=\"line_numbers\">\n<span>72</span>\n<span>73</span>\n<span>74</span>\n<span>75</span>\n<span>76</span>\n<span>77</span>\n
2823
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
2824
- class=\"line\">\n</div><div class=\"line\"> def dispatch(controller,
2825
- action, env)\n</div><div class=\"line active\"> controller.action(action).call(env)\n</div><div
2826
- class=\"line\"> end\n</div><div class=\"line\">\n</div><div class=\"line\">
2827
- \ def normalize_controller!(params)\n</div>\n</pre>\n</td>\n </tr>\n
2828
- \ </table>\n </div>\n </div>\n <div class=\"source hidden\"
2829
- id=\"frame-source-29\">\n <div class=\"info\">\n Extracted source
2830
- (around line <strong>#74</strong>):\n </div>\n <div class=\"data\">\n
2831
- \ <table cellpadding=\"0\" cellspacing=\"0\" class=\"lines\">\n <tr>\n
2832
- \ <td>\n <pre class=\"line_numbers\">\n<span>72</span>\n<span>73</span>\n<span>74</span>\n<span>75</span>\n<span>76</span>\n<span>77</span>\n
2833
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
2834
- class=\"line\">\n</div><div class=\"line\"> def dispatch(controller,
2835
- action, env)\n</div><div class=\"line active\"> controller.action(action).call(env)\n</div><div
2836
- class=\"line\"> end\n</div><div class=\"line\">\n</div><div class=\"line\">
2837
- \ def normalize_controller!(params)\n</div>\n</pre>\n</td>\n </tr>\n
2838
- \ </table>\n </div>\n </div>\n <div class=\"source hidden\"
2839
- id=\"frame-source-30\">\n <div class=\"info\">\n Extracted source
2840
- (around line <strong>#43</strong>):\n </div>\n <div class=\"data\">\n
2841
- \ <table cellpadding=\"0\" cellspacing=\"0\" class=\"lines\">\n <tr>\n
2842
- \ <td>\n <pre class=\"line_numbers\">\n<span>41</span>\n<span>42</span>\n<span>43</span>\n<span>44</span>\n<span>45</span>\n<span>46</span>\n
2843
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
2844
- class=\"line\"> end\n</div><div class=\"line\">\n</div><div class=\"line
2845
- active\"> dispatch(controller, params[:action], req.env)\n</div><div
2846
- class=\"line\"> end\n</div><div class=\"line\">\n</div><div class=\"line\">
2847
- \ def prepare_params!(params)\n</div>\n</pre>\n</td>\n </tr>\n
2848
- \ </table>\n </div>\n </div>\n <div class=\"source hidden\"
2849
- id=\"frame-source-31\">\n <div class=\"info\">\n Extracted source
2850
- (around line <strong>#49</strong>):\n </div>\n <div class=\"data\">\n
2851
- \ <table cellpadding=\"0\" cellspacing=\"0\" class=\"lines\">\n <tr>\n
2852
- \ <td>\n <pre class=\"line_numbers\">\n<span>47</span>\n<span>48</span>\n<span>49</span>\n<span>50</span>\n<span>51</span>\n<span>52</span>\n
2853
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
2854
- class=\"line\">\n</div><div class=\"line\"> if dispatcher?\n</div><div
2855
- class=\"line active\"> @app.serve req\n</div><div class=\"line\">
2856
- \ else\n</div><div class=\"line\"> @app.call req.env\n</div><div
2857
- class=\"line\"> end\n</div>\n</pre>\n</td>\n </tr>\n </table>\n
2858
- \ </div>\n </div>\n <div class=\"source hidden\" id=\"frame-source-32\">\n
2859
- \ <div class=\"info\">\n Extracted source (around line <strong>#43</strong>):\n
2860
- \ </div>\n <div class=\"data\">\n <table cellpadding=\"0\"
2861
- cellspacing=\"0\" class=\"lines\">\n <tr>\n <td>\n <pre
2862
- class=\"line_numbers\">\n<span>41</span>\n<span>42</span>\n<span>43</span>\n<span>44</span>\n<span>45</span>\n<span>46</span>\n
2863
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
2864
- class=\"line\"> req.path_parameters = set_params.merge parameters\n</div><div
2865
- class=\"line\">\n</div><div class=\"line active\"> status, headers,
2866
- body = route.app.serve(req)\n</div><div class=\"line\">\n</div><div class=\"line\">
2867
- \ if &#39;pass&#39; == headers[&#39;X-Cascade&#39;]\n</div><div class=\"line\">
2868
- \ req.script_name = script_name\n</div>\n</pre>\n</td>\n </tr>\n
2869
- \ </table>\n </div>\n </div>\n <div class=\"source hidden\"
2870
- id=\"frame-source-33\">\n <div class=\"info\">\n Extracted source
2871
- (around line <strong>#30</strong>):\n </div>\n <div class=\"data\">\n
2872
- \ <table cellpadding=\"0\" cellspacing=\"0\" class=\"lines\">\n <tr>\n
2873
- \ <td>\n <pre class=\"line_numbers\">\n<span>28</span>\n<span>29</span>\n<span>30</span>\n<span>31</span>\n<span>32</span>\n<span>33</span>\n
2874
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
2875
- class=\"line\">\n</div><div class=\"line\"> def serve(req)\n</div><div
2876
- class=\"line active\"> find_routes(req).each do |match, parameters,
2877
- route|\n</div><div class=\"line\"> set_params = req.path_parameters\n</div><div
2878
- class=\"line\"> path_info = req.path_info\n</div><div class=\"line\">
2879
- \ script_name = req.script_name\n</div>\n</pre>\n</td>\n </tr>\n
2880
- \ </table>\n </div>\n </div>\n <div class=\"source hidden\"
2881
- id=\"frame-source-34\">\n <div class=\"info\">\n Extracted source
2882
- (around line <strong>#30</strong>):\n </div>\n <div class=\"data\">\n
2883
- \ <table cellpadding=\"0\" cellspacing=\"0\" class=\"lines\">\n <tr>\n
2884
- \ <td>\n <pre class=\"line_numbers\">\n<span>28</span>\n<span>29</span>\n<span>30</span>\n<span>31</span>\n<span>32</span>\n<span>33</span>\n
2885
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
2886
- class=\"line\">\n</div><div class=\"line\"> def serve(req)\n</div><div
2887
- class=\"line active\"> find_routes(req).each do |match, parameters,
2888
- route|\n</div><div class=\"line\"> set_params = req.path_parameters\n</div><div
2889
- class=\"line\"> path_info = req.path_info\n</div><div class=\"line\">
2890
- \ script_name = req.script_name\n</div>\n</pre>\n</td>\n </tr>\n
2891
- \ </table>\n </div>\n </div>\n <div class=\"source hidden\"
2892
- id=\"frame-source-35\">\n <div class=\"info\">\n Extracted source
2893
- (around line <strong>#819</strong>):\n </div>\n <div class=\"data\">\n
2894
- \ <table cellpadding=\"0\" cellspacing=\"0\" class=\"lines\">\n <tr>\n
2895
- \ <td>\n <pre class=\"line_numbers\">\n<span>817</span>\n<span>818</span>\n<span>819</span>\n<span>820</span>\n<span>821</span>\n<span>822</span>\n
2896
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
2897
- class=\"line\"> req = request_class.new(env)\n</div><div class=\"line\">
2898
- \ req.path_info = Journey::Router::Utils.normalize_path(req.path_info)\n</div><div
2899
- class=\"line active\"> @router.serve(req)\n</div><div class=\"line\">
2900
- \ end\n</div><div class=\"line\">\n</div><div class=\"line\"> def
2901
- recognize_path(path, environment = {})\n</div>\n</pre>\n</td>\n </tr>\n
2902
- \ </table>\n </div>\n </div>\n <div class=\"source hidden\"
2903
- id=\"frame-source-36\">\n <div class=\"info\">\n Extracted source
2904
- (around line <strong>#518</strong>):\n </div>\n <div class=\"data\">\n
2905
- \ <table cellpadding=\"0\" cellspacing=\"0\" class=\"lines\">\n <tr>\n
2906
- \ <td>\n <pre class=\"line_numbers\">\n<span>516</span>\n<span>517</span>\n<span>518</span>\n<span>519</span>\n<span>520</span>\n<span>521</span>\n
2907
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
2908
- class=\"line\"> env[&quot;ROUTES_#{routes.object_id}_SCRIPT_NAME&quot;]
2909
- = env[&#39;SCRIPT_NAME&#39;].dup\n</div><div class=\"line\"> end\n</div><div
2910
- class=\"line active\"> app.call(env)\n</div><div class=\"line\"> end\n</div><div
2911
- class=\"line\">\n</div><div class=\"line\"> # Defines additional Rack env
2912
- configuration that is added on each call.\n</div>\n</pre>\n</td>\n </tr>\n
2913
- \ </table>\n </div>\n </div>\n <div class=\"source hidden\"
2914
- id=\"frame-source-37\">\n <div class=\"info\">\n Extracted source
2915
- (around line <strong>#194</strong>):\n </div>\n <div class=\"data\">\n
2916
- \ <table cellpadding=\"0\" cellspacing=\"0\" class=\"lines\">\n <tr>\n
2917
- \ <td>\n <pre class=\"line_numbers\">\n<span>192</span>\n<span>193</span>\n<span>194</span>\n<span>195</span>\n<span>196</span>\n<span>197</span>\n
2918
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
2919
- class=\"line\"> def method_missing(name, *args, &amp;block)\n</div><div
2920
- class=\"line\"> if instance.respond_to?(name)\n</div><div class=\"line
2921
- active\"> instance.public_send(name, *args, &amp;block)\n</div><div
2922
- class=\"line\"> else\n</div><div class=\"line\"> super\n</div><div
2923
- class=\"line\"> end\n</div>\n</pre>\n</td>\n </tr>\n </table>\n
2924
- \ </div>\n </div>\n <div class=\"source hidden\" id=\"frame-source-38\">\n
2925
- \ <div class=\"info\">\n Extracted source (around line <strong>#194</strong>):\n
2926
- \ </div>\n <div class=\"data\">\n <table cellpadding=\"0\"
2927
- cellspacing=\"0\" class=\"lines\">\n <tr>\n <td>\n <pre
2928
- class=\"line_numbers\">\n<span>192</span>\n<span>193</span>\n<span>194</span>\n<span>195</span>\n<span>196</span>\n<span>197</span>\n
2929
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
2930
- class=\"line\"> def method_missing(name, *args, &amp;block)\n</div><div
2931
- class=\"line\"> if instance.respond_to?(name)\n</div><div class=\"line
2932
- active\"> instance.public_send(name, *args, &amp;block)\n</div><div
2933
- class=\"line\"> else\n</div><div class=\"line\"> super\n</div><div
2934
- class=\"line\"> end\n</div>\n</pre>\n</td>\n </tr>\n </table>\n
2935
- \ </div>\n </div>\n <div class=\"source hidden\" id=\"frame-source-39\">\n
2936
- \ <div class=\"info\">\n Extracted source (around line <strong>#51</strong>):\n
2937
- \ </div>\n <div class=\"data\">\n <table cellpadding=\"0\"
2938
- cellspacing=\"0\" class=\"lines\">\n <tr>\n <td>\n <pre
2939
- class=\"line_numbers\">\n<span>49</span>\n<span>50</span>\n<span>51</span>\n<span>52</span>\n<span>53</span>\n<span>54</span>\n
2940
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
2941
- class=\"line\"> @app.serve req\n</div><div class=\"line\"> else\n</div><div
2942
- class=\"line active\"> @app.call req.env\n</div><div class=\"line\">
2943
- \ end\n</div><div class=\"line\"> end\n</div><div class=\"line\">\n</div>\n</pre>\n</td>\n
2944
- \ </tr>\n </table>\n </div>\n </div>\n <div class=\"source
2945
- hidden\" id=\"frame-source-40\">\n <div class=\"info\">\n Extracted
2946
- source (around line <strong>#43</strong>):\n </div>\n <div class=\"data\">\n
2947
- \ <table cellpadding=\"0\" cellspacing=\"0\" class=\"lines\">\n <tr>\n
2948
- \ <td>\n <pre class=\"line_numbers\">\n<span>41</span>\n<span>42</span>\n<span>43</span>\n<span>44</span>\n<span>45</span>\n<span>46</span>\n
2949
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
2950
- class=\"line\"> req.path_parameters = set_params.merge parameters\n</div><div
2951
- class=\"line\">\n</div><div class=\"line active\"> status, headers,
2952
- body = route.app.serve(req)\n</div><div class=\"line\">\n</div><div class=\"line\">
2953
- \ if &#39;pass&#39; == headers[&#39;X-Cascade&#39;]\n</div><div class=\"line\">
2954
- \ req.script_name = script_name\n</div>\n</pre>\n</td>\n </tr>\n
2955
- \ </table>\n </div>\n </div>\n <div class=\"source hidden\"
2956
- id=\"frame-source-41\">\n <div class=\"info\">\n Extracted source
2957
- (around line <strong>#30</strong>):\n </div>\n <div class=\"data\">\n
2958
- \ <table cellpadding=\"0\" cellspacing=\"0\" class=\"lines\">\n <tr>\n
2959
- \ <td>\n <pre class=\"line_numbers\">\n<span>28</span>\n<span>29</span>\n<span>30</span>\n<span>31</span>\n<span>32</span>\n<span>33</span>\n
2960
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
2961
- class=\"line\">\n</div><div class=\"line\"> def serve(req)\n</div><div
2962
- class=\"line active\"> find_routes(req).each do |match, parameters,
2963
- route|\n</div><div class=\"line\"> set_params = req.path_parameters\n</div><div
2964
- class=\"line\"> path_info = req.path_info\n</div><div class=\"line\">
2965
- \ script_name = req.script_name\n</div>\n</pre>\n</td>\n </tr>\n
2966
- \ </table>\n </div>\n </div>\n <div class=\"source hidden\"
2967
- id=\"frame-source-42\">\n <div class=\"info\">\n Extracted source
2968
- (around line <strong>#30</strong>):\n </div>\n <div class=\"data\">\n
2969
- \ <table cellpadding=\"0\" cellspacing=\"0\" class=\"lines\">\n <tr>\n
2970
- \ <td>\n <pre class=\"line_numbers\">\n<span>28</span>\n<span>29</span>\n<span>30</span>\n<span>31</span>\n<span>32</span>\n<span>33</span>\n
2971
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
2972
- class=\"line\">\n</div><div class=\"line\"> def serve(req)\n</div><div
2973
- class=\"line active\"> find_routes(req).each do |match, parameters,
2974
- route|\n</div><div class=\"line\"> set_params = req.path_parameters\n</div><div
2975
- class=\"line\"> path_info = req.path_info\n</div><div class=\"line\">
2976
- \ script_name = req.script_name\n</div>\n</pre>\n</td>\n </tr>\n
2977
- \ </table>\n </div>\n </div>\n <div class=\"source hidden\"
2978
- id=\"frame-source-43\">\n <div class=\"info\">\n Extracted source
2979
- (around line <strong>#819</strong>):\n </div>\n <div class=\"data\">\n
2980
- \ <table cellpadding=\"0\" cellspacing=\"0\" class=\"lines\">\n <tr>\n
2981
- \ <td>\n <pre class=\"line_numbers\">\n<span>817</span>\n<span>818</span>\n<span>819</span>\n<span>820</span>\n<span>821</span>\n<span>822</span>\n
2982
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
2983
- class=\"line\"> req = request_class.new(env)\n</div><div class=\"line\">
2984
- \ req.path_info = Journey::Router::Utils.normalize_path(req.path_info)\n</div><div
2985
- class=\"line active\"> @router.serve(req)\n</div><div class=\"line\">
2986
- \ end\n</div><div class=\"line\">\n</div><div class=\"line\"> def
2987
- recognize_path(path, environment = {})\n</div>\n</pre>\n</td>\n </tr>\n
2988
- \ </table>\n </div>\n </div>\n <div class=\"source hidden\"
2989
- id=\"frame-source-44\">\n <div class=\"info\">\n Extracted source
2990
- (around line <strong>#24</strong>):\n </div>\n <div class=\"data\">\n
2991
- \ <table cellpadding=\"0\" cellspacing=\"0\" class=\"lines\">\n <tr>\n
2992
- \ <td>\n <pre class=\"line_numbers\">\n<span>22</span>\n<span>23</span>\n<span>24</span>\n<span>25</span>\n<span>26</span>\n<span>27</span>\n
2993
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
2994
- class=\"line\">\n</div><div class=\"line\"> def call(env)\n</div><div class=\"line
2995
- active\"> status, headers, body = @app.call(env)\n</div><div class=\"line\">\n</div><div
2996
- class=\"line\"> if etag_status?(status) &amp;&amp; etag_body?(body) &amp;&amp;
2997
- !skip_caching?(headers)\n</div><div class=\"line\"> original_body =
2998
- body\n</div>\n</pre>\n</td>\n </tr>\n </table>\n </div>\n
2999
- \ </div>\n <div class=\"source hidden\" id=\"frame-source-45\">\n <div
3000
- class=\"info\">\n Extracted source (around line <strong>#25</strong>):\n
3001
- \ </div>\n <div class=\"data\">\n <table cellpadding=\"0\"
3002
- cellspacing=\"0\" class=\"lines\">\n <tr>\n <td>\n <pre
3003
- class=\"line_numbers\">\n<span>23</span>\n<span>24</span>\n<span>25</span>\n<span>26</span>\n<span>27</span>\n<span>28</span>\n
3004
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
3005
- class=\"line\"> case env[REQUEST_METHOD]\n</div><div class=\"line\">
3006
- \ when &quot;GET&quot;, &quot;HEAD&quot;\n</div><div class=\"line active\">
3007
- \ status, headers, body = @app.call(env)\n</div><div class=\"line\">
3008
- \ headers = Utils::HeaderHash.new(headers)\n</div><div class=\"line\">
3009
- \ if status == 200 &amp;&amp; fresh?(env, headers)\n</div><div class=\"line\">
3010
- \ status = 304\n</div>\n</pre>\n</td>\n </tr>\n </table>\n
3011
- \ </div>\n </div>\n <div class=\"source hidden\" id=\"frame-source-46\">\n
3012
- \ <div class=\"info\">\n Extracted source (around line <strong>#13</strong>):\n
3013
- \ </div>\n <div class=\"data\">\n <table cellpadding=\"0\"
3014
- cellspacing=\"0\" class=\"lines\">\n <tr>\n <td>\n <pre
3015
- class=\"line_numbers\">\n<span>11</span>\n<span>12</span>\n<span>13</span>\n<span>14</span>\n<span>15</span>\n<span>16</span>\n
3016
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
3017
- class=\"line\">\n</div><div class=\"line\"> def call(env)\n</div><div class=\"line
3018
- active\"> status, headers, body = @app.call(env)\n</div><div class=\"line\">\n</div><div
3019
- class=\"line\"> if env[REQUEST_METHOD] == HEAD\n</div><div class=\"line\">
3020
- \ [\n</div>\n</pre>\n</td>\n </tr>\n </table>\n </div>\n
3021
- \ </div>\n <div class=\"source hidden\" id=\"frame-source-47\">\n <div
3022
- class=\"info\">\n Extracted source (around line <strong>#27</strong>):\n
3023
- \ </div>\n <div class=\"data\">\n <table cellpadding=\"0\"
3024
- cellspacing=\"0\" class=\"lines\">\n <tr>\n <td>\n <pre
3025
- class=\"line_numbers\">\n<span>25</span>\n<span>26</span>\n<span>27</span>\n<span>28</span>\n<span>29</span>\n<span>30</span>\n
3026
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
3027
- class=\"line\"> end\n</div><div class=\"line\">\n</div><div class=\"line
3028
- active\"> @app.call(env)\n</div><div class=\"line\"> end\n</div><div
3029
- class=\"line\">\n</div><div class=\"line\"> private\n</div>\n</pre>\n</td>\n
3030
- \ </tr>\n </table>\n </div>\n </div>\n <div class=\"source
3031
- hidden\" id=\"frame-source-48\">\n <div class=\"info\">\n Extracted
3032
- source (around line <strong>#260</strong>):\n </div>\n <div class=\"data\">\n
3033
- \ <table cellpadding=\"0\" cellspacing=\"0\" class=\"lines\">\n <tr>\n
3034
- \ <td>\n <pre class=\"line_numbers\">\n<span>258</span>\n<span>259</span>\n<span>260</span>\n<span>261</span>\n<span>262</span>\n<span>263</span>\n
3035
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
3036
- class=\"line\">\n</div><div class=\"line\"> def call(env)\n</div><div class=\"line
3037
- active\"> @app.call(env)\n</div><div class=\"line\"> ensure\n</div><div
3038
- class=\"line\"> session = Request::Session.find(env) || {}\n</div><div
3039
- class=\"line\"> flash_hash = env[KEY]\n</div>\n</pre>\n</td>\n </tr>\n
3040
- \ </table>\n </div>\n </div>\n <div class=\"source hidden\"
3041
- id=\"frame-source-49\">\n <div class=\"info\">\n Extracted source
3042
- (around line <strong>#225</strong>):\n </div>\n <div class=\"data\">\n
3043
- \ <table cellpadding=\"0\" cellspacing=\"0\" class=\"lines\">\n <tr>\n
3044
- \ <td>\n <pre class=\"line_numbers\">\n<span>223</span>\n<span>224</span>\n<span>225</span>\n<span>226</span>\n<span>227</span>\n<span>228</span>\n
3045
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
3046
- class=\"line\"> def context(env, app=@app)\n</div><div class=\"line\">
3047
- \ prepare_session(env)\n</div><div class=\"line active\"> status,
3048
- headers, body = app.call(env)\n</div><div class=\"line\"> commit_session(env,
3049
- status, headers, body)\n</div><div class=\"line\"> end\n</div><div
3050
- class=\"line\">\n</div>\n</pre>\n</td>\n </tr>\n </table>\n
3051
- \ </div>\n </div>\n <div class=\"source hidden\" id=\"frame-source-50\">\n
3052
- \ <div class=\"info\">\n Extracted source (around line <strong>#220</strong>):\n
3053
- \ </div>\n <div class=\"data\">\n <table cellpadding=\"0\"
3054
- cellspacing=\"0\" class=\"lines\">\n <tr>\n <td>\n <pre
3055
- class=\"line_numbers\">\n<span>218</span>\n<span>219</span>\n<span>220</span>\n<span>221</span>\n<span>222</span>\n<span>223</span>\n
3056
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
3057
- class=\"line\">\n</div><div class=\"line\"> def call(env)\n</div><div
3058
- class=\"line active\"> context(env)\n</div><div class=\"line\"> end\n</div><div
3059
- class=\"line\">\n</div><div class=\"line\"> def context(env, app=@app)\n</div>\n</pre>\n</td>\n
3060
- \ </tr>\n </table>\n </div>\n </div>\n <div class=\"source
3061
- hidden\" id=\"frame-source-51\">\n <div class=\"info\">\n Extracted
3062
- source (around line <strong>#560</strong>):\n </div>\n <div class=\"data\">\n
3063
- \ <table cellpadding=\"0\" cellspacing=\"0\" class=\"lines\">\n <tr>\n
3064
- \ <td>\n <pre class=\"line_numbers\">\n<span>558</span>\n<span>559</span>\n<span>560</span>\n<span>561</span>\n<span>562</span>\n<span>563</span>\n
3065
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
3066
- class=\"line\">\n</div><div class=\"line\"> def call(env)\n</div><div class=\"line
3067
- active\"> status, headers, body = @app.call(env)\n</div><div class=\"line\">\n</div><div
3068
- class=\"line\"> if cookie_jar = env[&#39;action_dispatch.cookies&#39;]\n</div><div
3069
- class=\"line\"> unless cookie_jar.committed?\n</div>\n</pre>\n</td>\n
3070
- \ </tr>\n </table>\n </div>\n </div>\n <div class=\"source
3071
- hidden\" id=\"frame-source-52\">\n <div class=\"info\">\n Extracted
3072
- source (around line <strong>#36</strong>):\n </div>\n <div class=\"data\">\n
3073
- \ <table cellpadding=\"0\" cellspacing=\"0\" class=\"lines\">\n <tr>\n
3074
- \ <td>\n <pre class=\"line_numbers\">\n<span>34</span>\n<span>35</span>\n<span>36</span>\n<span>37</span>\n<span>38</span>\n<span>39</span>\n
3075
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
3076
- class=\"line\"> connection.enable_query_cache!\n</div><div class=\"line\">\n</div><div
3077
- class=\"line active\"> response = @app.call(env)\n</div><div class=\"line\">
3078
- \ response[2] = Rack::BodyProxy.new(response[2]) do\n</div><div class=\"line\">
3079
- \ restore_query_cache_settings(connection_id, enabled)\n</div><div class=\"line\">
3080
- \ end\n</div>\n</pre>\n</td>\n </tr>\n </table>\n </div>\n
3081
- \ </div>\n <div class=\"source hidden\" id=\"frame-source-53\">\n <div
3082
- class=\"info\">\n Extracted source (around line <strong>#649</strong>):\n
3083
- \ </div>\n <div class=\"data\">\n <table cellpadding=\"0\"
3084
- cellspacing=\"0\" class=\"lines\">\n <tr>\n <td>\n <pre
3085
- class=\"line_numbers\">\n<span>647</span>\n<span>648</span>\n<span>649</span>\n<span>650</span>\n<span>651</span>\n<span>652</span>\n
3086
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
3087
- class=\"line\"> testing = env[&#39;rack.test&#39;]\n</div><div class=\"line\">\n</div><div
3088
- class=\"line active\"> response = @app.call(env)\n</div><div class=\"line\">
3089
- \ response[2] = ::Rack::BodyProxy.new(response[2]) do\n</div><div class=\"line\">
3090
- \ ActiveRecord::Base.clear_active_connections! unless testing\n</div><div
3091
- class=\"line\"> end\n</div>\n</pre>\n</td>\n </tr>\n </table>\n
3092
- \ </div>\n </div>\n <div class=\"source hidden\" id=\"frame-source-54\">\n
3093
- \ <div class=\"info\">\n Extracted source (around line <strong>#378</strong>):\n
3094
- \ </div>\n <div class=\"data\">\n <table cellpadding=\"0\"
3095
- cellspacing=\"0\" class=\"lines\">\n <tr>\n <td>\n <pre
3096
- class=\"line_numbers\">\n<span>376</span>\n<span>377</span>\n<span>378</span>\n<span>379</span>\n<span>380</span>\n<span>381</span>\n
3097
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
3098
- class=\"line\"> end\n</div><div class=\"line\"> end\n</div><div
3099
- class=\"line active\"> @app.call(env)\n</div><div class=\"line\"> end\n</div><div
3100
- class=\"line\">\n</div><div class=\"line\"> private\n</div>\n</pre>\n</td>\n
3101
- \ </tr>\n </table>\n </div>\n </div>\n <div class=\"source
3102
- hidden\" id=\"frame-source-55\">\n <div class=\"info\">\n Extracted
3103
- source (around line <strong>#29</strong>):\n </div>\n <div class=\"data\">\n
3104
- \ <table cellpadding=\"0\" cellspacing=\"0\" class=\"lines\">\n <tr>\n
3105
- \ <td>\n <pre class=\"line_numbers\">\n<span>27</span>\n<span>28</span>\n<span>29</span>\n<span>30</span>\n<span>31</span>\n<span>32</span>\n
3106
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
3107
- class=\"line\"> result = run_callbacks :call do\n</div><div class=\"line\">
3108
- \ begin\n</div><div class=\"line active\"> @app.call(env)\n</div><div
3109
- class=\"line\"> rescue =&gt; error\n</div><div class=\"line\"> end\n</div><div
3110
- class=\"line\"> end\n</div>\n</pre>\n</td>\n </tr>\n </table>\n
3111
- \ </div>\n </div>\n <div class=\"source hidden\" id=\"frame-source-56\">\n
3112
- \ <div class=\"info\">\n Extracted source (around line <strong>#88</strong>):\n
3113
- \ </div>\n <div class=\"data\">\n <table cellpadding=\"0\"
3114
- cellspacing=\"0\" class=\"lines\">\n <tr>\n <td>\n <pre
3115
- class=\"line_numbers\">\n<span>86</span>\n<span>87</span>\n<span>88</span>\n<span>89</span>\n<span>90</span>\n<span>91</span>\n
3116
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
3117
- class=\"line\"> def _run_callbacks(callbacks, &amp;block)\n</div><div class=\"line\">
3118
- \ if callbacks.empty?\n</div><div class=\"line active\"> block.call
3119
- if block\n</div><div class=\"line\"> else\n</div><div class=\"line\">
3120
- \ runner = callbacks.compile\n</div><div class=\"line\"> e =
3121
- Filters::Environment.new(self, false, nil, block)\n</div>\n</pre>\n</td>\n
3122
- \ </tr>\n </table>\n </div>\n </div>\n <div class=\"source
3123
- hidden\" id=\"frame-source-57\">\n <div class=\"info\">\n Extracted
3124
- source (around line <strong>#88</strong>):\n </div>\n <div class=\"data\">\n
3125
- \ <table cellpadding=\"0\" cellspacing=\"0\" class=\"lines\">\n <tr>\n
3126
- \ <td>\n <pre class=\"line_numbers\">\n<span>86</span>\n<span>87</span>\n<span>88</span>\n<span>89</span>\n<span>90</span>\n<span>91</span>\n
3127
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
3128
- class=\"line\"> def _run_callbacks(callbacks, &amp;block)\n</div><div class=\"line\">
3129
- \ if callbacks.empty?\n</div><div class=\"line active\"> block.call
3130
- if block\n</div><div class=\"line\"> else\n</div><div class=\"line\">
3131
- \ runner = callbacks.compile\n</div><div class=\"line\"> e =
3132
- Filters::Environment.new(self, false, nil, block)\n</div>\n</pre>\n</td>\n
3133
- \ </tr>\n </table>\n </div>\n </div>\n <div class=\"source
3134
- hidden\" id=\"frame-source-58\">\n <div class=\"info\">\n Extracted
3135
- source (around line <strong>#776</strong>):\n </div>\n <div class=\"data\">\n
3136
- \ <table cellpadding=\"0\" cellspacing=\"0\" class=\"lines\">\n <tr>\n
3137
- \ <td>\n <pre class=\"line_numbers\">\n<span>774</span>\n<span>775</span>\n<span>776</span>\n<span>777</span>\n<span>778</span>\n<span>779</span>\n
3138
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
3139
- class=\"line\"> module_eval &lt;&lt;-RUBY, __FILE__, __LINE__ + 1\n</div><div
3140
- class=\"line\"> def _run_#{name}_callbacks(&amp;block)\n</div><div
3141
- class=\"line active\"> _run_callbacks(_#{name}_callbacks, &amp;block)\n</div><div
3142
- class=\"line\"> end\n</div><div class=\"line\"> RUBY\n</div><div
3143
- class=\"line\"> end\n</div>\n</pre>\n</td>\n </tr>\n </table>\n
3144
- \ </div>\n </div>\n <div class=\"source hidden\" id=\"frame-source-59\">\n
3145
- \ <div class=\"info\">\n Extracted source (around line <strong>#81</strong>):\n
3146
- \ </div>\n <div class=\"data\">\n <table cellpadding=\"0\"
3147
- cellspacing=\"0\" class=\"lines\">\n <tr>\n <td>\n <pre
3148
- class=\"line_numbers\">\n<span>79</span>\n<span>80</span>\n<span>81</span>\n<span>82</span>\n<span>83</span>\n<span>84</span>\n
3149
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
3150
- class=\"line\"> # end\n</div><div class=\"line\"> def run_callbacks(kind,
3151
- &amp;block)\n</div><div class=\"line active\"> send &quot;_run_#{kind}_callbacks&quot;,
3152
- &amp;block\n</div><div class=\"line\"> end\n</div><div class=\"line\">\n</div><div
3153
- class=\"line\"> private\n</div>\n</pre>\n</td>\n </tr>\n </table>\n
3154
- \ </div>\n </div>\n <div class=\"source hidden\" id=\"frame-source-60\">\n
3155
- \ <div class=\"info\">\n Extracted source (around line <strong>#27</strong>):\n
3156
- \ </div>\n <div class=\"data\">\n <table cellpadding=\"0\"
3157
- cellspacing=\"0\" class=\"lines\">\n <tr>\n <td>\n <pre
3158
- class=\"line_numbers\">\n<span>25</span>\n<span>26</span>\n<span>27</span>\n<span>28</span>\n<span>29</span>\n<span>30</span>\n
3159
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
3160
- class=\"line\"> def call(env)\n</div><div class=\"line\"> error =
3161
- nil\n</div><div class=\"line active\"> result = run_callbacks :call do\n</div><div
3162
- class=\"line\"> begin\n</div><div class=\"line\"> @app.call(env)\n</div><div
3163
- class=\"line\"> rescue =&gt; error\n</div>\n</pre>\n</td>\n </tr>\n
3164
- \ </table>\n </div>\n </div>\n <div class=\"source hidden\"
3165
- id=\"frame-source-61\">\n <div class=\"info\">\n Extracted source
3166
- (around line <strong>#73</strong>):\n </div>\n <div class=\"data\">\n
3167
- \ <table cellpadding=\"0\" cellspacing=\"0\" class=\"lines\">\n <tr>\n
3168
- \ <td>\n <pre class=\"line_numbers\">\n<span>71</span>\n<span>72</span>\n<span>73</span>\n<span>74</span>\n<span>75</span>\n<span>76</span>\n
3169
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
3170
- class=\"line\"> prepare!\n</div><div class=\"line\">\n</div><div class=\"line
3171
- active\"> response = @app.call(env)\n</div><div class=\"line\"> response[2]
3172
- = ::Rack::BodyProxy.new(response[2]) { cleanup! }\n</div><div class=\"line\">\n</div><div
3173
- class=\"line\"> response\n</div>\n</pre>\n</td>\n </tr>\n </table>\n
3174
- \ </div>\n </div>\n <div class=\"source hidden\" id=\"frame-source-62\">\n
3175
- \ <div class=\"info\">\n Extracted source (around line <strong>#78</strong>):\n
3176
- \ </div>\n <div class=\"data\">\n <table cellpadding=\"0\"
3177
- cellspacing=\"0\" class=\"lines\">\n <tr>\n <td>\n <pre
3178
- class=\"line_numbers\">\n<span>76</span>\n<span>77</span>\n<span>78</span>\n<span>79</span>\n<span>80</span>\n<span>81</span>\n
3179
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
3180
- class=\"line\"> def call(env)\n</div><div class=\"line\"> env[&quot;action_dispatch.remote_ip&quot;]
3181
- = GetIp.new(env, self)\n</div><div class=\"line active\"> @app.call(env)\n</div><div
3182
- class=\"line\"> end\n</div><div class=\"line\">\n</div><div class=\"line\">
3183
- \ # The GetIp class exists as a way to defer processing of the request data\n</div>\n</pre>\n</td>\n
3184
- \ </tr>\n </table>\n </div>\n </div>\n <div class=\"source
3185
- hidden\" id=\"frame-source-63\">\n <div class=\"info\">\n Extracted
3186
- source (around line <strong>#17</strong>):\n </div>\n <div class=\"data\">\n
3187
- \ <table cellpadding=\"0\" cellspacing=\"0\" class=\"lines\">\n <tr>\n
3188
- \ <td>\n <pre class=\"line_numbers\">\n<span>15</span>\n<span>16</span>\n<span>17</span>\n<span>18</span>\n<span>19</span>\n<span>20</span>\n
3189
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
3190
- class=\"line\">\n</div><div class=\"line\"> def call(env)\n</div><div class=\"line
3191
- active\"> _, headers, body = response = @app.call(env)\n</div><div class=\"line\">\n</div><div
3192
- class=\"line\"> if headers[&#39;X-Cascade&#39;] == &#39;pass&#39;\n</div><div
3193
- class=\"line\"> body.close if body.respond_to?(:close)\n</div>\n</pre>\n</td>\n
3194
- \ </tr>\n </table>\n </div>\n </div>\n <div class=\"source
3195
- hidden\" id=\"frame-source-64\">\n <div class=\"info\">\n Extracted
3196
- source (around line <strong>#37</strong>):\n </div>\n <div class=\"data\">\n
3197
- \ <table cellpadding=\"0\" cellspacing=\"0\" class=\"lines\">\n <tr>\n
3198
- \ <td>\n <pre class=\"line_numbers\">\n<span>35</span>\n<span>36</span>\n<span>37</span>\n<span>38</span>\n<span>39</span>\n<span>40</span>\n
3199
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
3200
- class=\"line\"> end\n</div><div class=\"line\">\n</div><div class=\"line
3201
- active\"> status, headers, body = @app.call(env)\n</div><div class=\"line\">\n</div><div
3202
- class=\"line\"> if exception = env[&#39;web_console.exception&#39;]\n</div><div
3203
- class=\"line\"> session = Session.from_exception(exception)\n</div>\n</pre>\n</td>\n
3204
- \ </tr>\n </table>\n </div>\n </div>\n <div class=\"source
3205
- hidden\" id=\"frame-source-65\">\n <div class=\"info\">\n Extracted
3206
- source (around line <strong>#30</strong>):\n </div>\n <div class=\"data\">\n
3207
- \ <table cellpadding=\"0\" cellspacing=\"0\" class=\"lines\">\n <tr>\n
3208
- \ <td>\n <pre class=\"line_numbers\">\n<span>28</span>\n<span>29</span>\n<span>30</span>\n<span>31</span>\n<span>32</span>\n<span>33</span>\n
3209
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
3210
- class=\"line\">\n</div><div class=\"line\"> def call(env)\n</div><div class=\"line
3211
- active\"> @app.call(env)\n</div><div class=\"line\"> rescue Exception
3212
- =&gt; exception\n</div><div class=\"line\"> if env[&#39;action_dispatch.show_exceptions&#39;]
3213
- == false\n</div><div class=\"line\"> raise exception\n</div>\n</pre>\n</td>\n
3214
- \ </tr>\n </table>\n </div>\n </div>\n <div class=\"source
3215
- hidden\" id=\"frame-source-66\">\n <div class=\"info\">\n Extracted
3216
- source (around line <strong>#38</strong>):\n </div>\n <div class=\"data\">\n
3217
- \ <table cellpadding=\"0\" cellspacing=\"0\" class=\"lines\">\n <tr>\n
3218
- \ <td>\n <pre class=\"line_numbers\">\n<span>36</span>\n<span>37</span>\n<span>38</span>\n<span>39</span>\n<span>40</span>\n<span>41</span>\n
3219
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
3220
- class=\"line\"> instrumenter.start &#39;request.action_dispatch&#39;,
3221
- request: request\n</div><div class=\"line\"> logger.info { started_request_message(request)
3222
- }\n</div><div class=\"line active\"> resp = @app.call(env)\n</div><div
3223
- class=\"line\"> resp[2] = ::Rack::BodyProxy.new(resp[2]) { finish(request)
3224
- }\n</div><div class=\"line\"> resp\n</div><div class=\"line\"> rescue
3225
- Exception\n</div>\n</pre>\n</td>\n </tr>\n </table>\n </div>\n
3226
- \ </div>\n <div class=\"source hidden\" id=\"frame-source-67\">\n <div
3227
- class=\"info\">\n Extracted source (around line <strong>#20</strong>):\n
3228
- \ </div>\n <div class=\"data\">\n <table cellpadding=\"0\"
3229
- cellspacing=\"0\" class=\"lines\">\n <tr>\n <td>\n <pre
3230
- class=\"line_numbers\">\n<span>18</span>\n<span>19</span>\n<span>20</span>\n<span>21</span>\n<span>22</span>\n<span>23</span>\n
3231
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
3232
- class=\"line\">\n</div><div class=\"line\"> if logger.respond_to?(:tagged)\n</div><div
3233
- class=\"line active\"> logger.tagged(compute_tags(request)) { call_app(request,
3234
- env) }\n</div><div class=\"line\"> else\n</div><div class=\"line\">
3235
- \ call_app(request, env)\n</div><div class=\"line\"> end\n</div>\n</pre>\n</td>\n
3236
- \ </tr>\n </table>\n </div>\n </div>\n <div class=\"source
3237
- hidden\" id=\"frame-source-68\">\n <div class=\"info\">\n Extracted
3238
- source (around line <strong>#68</strong>):\n </div>\n <div class=\"data\">\n
3239
- \ <table cellpadding=\"0\" cellspacing=\"0\" class=\"lines\">\n <tr>\n
3240
- \ <td>\n <pre class=\"line_numbers\">\n<span>66</span>\n<span>67</span>\n<span>68</span>\n<span>69</span>\n<span>70</span>\n<span>71</span>\n
3241
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
3242
- class=\"line\">\n</div><div class=\"line\"> def tagged(*tags)\n</div><div
3243
- class=\"line active\"> formatter.tagged(*tags) { yield self }\n</div><div
3244
- class=\"line\"> end\n</div><div class=\"line\">\n</div><div class=\"line\">
3245
- \ def flush\n</div>\n</pre>\n</td>\n </tr>\n </table>\n
3246
- \ </div>\n </div>\n <div class=\"source hidden\" id=\"frame-source-69\">\n
3247
- \ <div class=\"info\">\n Extracted source (around line <strong>#26</strong>):\n
3248
- \ </div>\n <div class=\"data\">\n <table cellpadding=\"0\"
3249
- cellspacing=\"0\" class=\"lines\">\n <tr>\n <td>\n <pre
3250
- class=\"line_numbers\">\n<span>24</span>\n<span>25</span>\n<span>26</span>\n<span>27</span>\n<span>28</span>\n<span>29</span>\n
3251
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
3252
- class=\"line\"> def tagged(*tags)\n</div><div class=\"line\"> new_tags
3253
- = push_tags(*tags)\n</div><div class=\"line active\"> yield self\n</div><div
3254
- class=\"line\"> ensure\n</div><div class=\"line\"> pop_tags(new_tags.size)\n</div><div
3255
- class=\"line\"> end\n</div>\n</pre>\n</td>\n </tr>\n </table>\n
3256
- \ </div>\n </div>\n <div class=\"source hidden\" id=\"frame-source-70\">\n
3257
- \ <div class=\"info\">\n Extracted source (around line <strong>#68</strong>):\n
3258
- \ </div>\n <div class=\"data\">\n <table cellpadding=\"0\"
3259
- cellspacing=\"0\" class=\"lines\">\n <tr>\n <td>\n <pre
3260
- class=\"line_numbers\">\n<span>66</span>\n<span>67</span>\n<span>68</span>\n<span>69</span>\n<span>70</span>\n<span>71</span>\n
3261
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
3262
- class=\"line\">\n</div><div class=\"line\"> def tagged(*tags)\n</div><div
3263
- class=\"line active\"> formatter.tagged(*tags) { yield self }\n</div><div
3264
- class=\"line\"> end\n</div><div class=\"line\">\n</div><div class=\"line\">
3265
- \ def flush\n</div>\n</pre>\n</td>\n </tr>\n </table>\n
3266
- \ </div>\n </div>\n <div class=\"source hidden\" id=\"frame-source-71\">\n
3267
- \ <div class=\"info\">\n Extracted source (around line <strong>#20</strong>):\n
3268
- \ </div>\n <div class=\"data\">\n <table cellpadding=\"0\"
3269
- cellspacing=\"0\" class=\"lines\">\n <tr>\n <td>\n <pre
3270
- class=\"line_numbers\">\n<span>18</span>\n<span>19</span>\n<span>20</span>\n<span>21</span>\n<span>22</span>\n<span>23</span>\n
3271
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
3272
- class=\"line\">\n</div><div class=\"line\"> if logger.respond_to?(:tagged)\n</div><div
3273
- class=\"line active\"> logger.tagged(compute_tags(request)) { call_app(request,
3274
- env) }\n</div><div class=\"line\"> else\n</div><div class=\"line\">
3275
- \ call_app(request, env)\n</div><div class=\"line\"> end\n</div>\n</pre>\n</td>\n
3276
- \ </tr>\n </table>\n </div>\n </div>\n <div class=\"source
3277
- hidden\" id=\"frame-source-72\">\n <div class=\"info\">\n Extracted
3278
- source (around line <strong>#21</strong>):\n </div>\n <div class=\"data\">\n
3279
- \ <table cellpadding=\"0\" cellspacing=\"0\" class=\"lines\">\n <tr>\n
3280
- \ <td>\n <pre class=\"line_numbers\">\n<span>19</span>\n<span>20</span>\n<span>21</span>\n<span>22</span>\n<span>23</span>\n<span>24</span>\n
3281
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
3282
- class=\"line\"> def call(env)\n</div><div class=\"line\"> env[&quot;action_dispatch.request_id&quot;]
3283
- = external_request_id(env) || internal_request_id\n</div><div class=\"line
3284
- active\"> @app.call(env).tap { |_status, headers, _body| headers[&quot;X-Request-Id&quot;]
3285
- = env[&quot;action_dispatch.request_id&quot;] }\n</div><div class=\"line\">
3286
- \ end\n</div><div class=\"line\">\n</div><div class=\"line\"> private\n</div>\n</pre>\n</td>\n
3287
- \ </tr>\n </table>\n </div>\n </div>\n <div class=\"source
3288
- hidden\" id=\"frame-source-73\">\n <div class=\"info\">\n Extracted
3289
- source (around line <strong>#22</strong>):\n </div>\n <div class=\"data\">\n
3290
- \ <table cellpadding=\"0\" cellspacing=\"0\" class=\"lines\">\n <tr>\n
3291
- \ <td>\n <pre class=\"line_numbers\">\n<span>20</span>\n<span>21</span>\n<span>22</span>\n<span>23</span>\n<span>24</span>\n<span>25</span>\n
3292
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
3293
- class=\"line\"> end\n</div><div class=\"line\">\n</div><div class=\"line
3294
- active\"> @app.call(env)\n</div><div class=\"line\"> end\n</div><div
3295
- class=\"line\">\n</div><div class=\"line\"> def method_override(env)\n</div>\n</pre>\n</td>\n
3296
- \ </tr>\n </table>\n </div>\n </div>\n <div class=\"source
3297
- hidden\" id=\"frame-source-74\">\n <div class=\"info\">\n Extracted
3298
- source (around line <strong>#18</strong>):\n </div>\n <div class=\"data\">\n
3299
- \ <table cellpadding=\"0\" cellspacing=\"0\" class=\"lines\">\n <tr>\n
3300
- \ <td>\n <pre class=\"line_numbers\">\n<span>16</span>\n<span>17</span>\n<span>18</span>\n<span>19</span>\n<span>20</span>\n<span>21</span>\n
3301
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
3302
- class=\"line\"> def call(env)\n</div><div class=\"line\"> start_time
3303
- = clock_time\n</div><div class=\"line active\"> status, headers, body
3304
- = @app.call(env)\n</div><div class=\"line\"> request_time = clock_time
3305
- - start_time\n</div><div class=\"line\">\n</div><div class=\"line\"> if
3306
- !headers.has_key?(@header_name)\n</div>\n</pre>\n</td>\n </tr>\n
3307
- \ </table>\n </div>\n </div>\n <div class=\"source hidden\"
3308
- id=\"frame-source-75\">\n <div class=\"info\">\n Extracted source
3309
- (around line <strong>#28</strong>):\n </div>\n <div class=\"data\">\n
3310
- \ <table cellpadding=\"0\" cellspacing=\"0\" class=\"lines\">\n <tr>\n
3311
- \ <td>\n <pre class=\"line_numbers\">\n<span>26</span>\n<span>27</span>\n<span>28</span>\n<span>29</span>\n<span>30</span>\n<span>31</span>\n
3312
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
3313
- class=\"line\"> def call(env)\n</div><div class=\"line\"> LocalCacheRegistry.set_cache_for(local_cache_key,
3314
- LocalStore.new)\n</div><div class=\"line active\"> response = @app.call(env)\n</div><div
3315
- class=\"line\"> response[2] = ::Rack::BodyProxy.new(response[2])
3316
- do\n</div><div class=\"line\"> LocalCacheRegistry.set_cache_for(local_cache_key,
3317
- nil)\n</div><div class=\"line\"> end\n</div>\n</pre>\n</td>\n </tr>\n
3318
- \ </table>\n </div>\n </div>\n <div class=\"source hidden\"
3319
- id=\"frame-source-76\">\n <div class=\"info\">\n Extracted source
3320
- (around line <strong>#17</strong>):\n </div>\n <div class=\"data\">\n
3321
- \ <table cellpadding=\"0\" cellspacing=\"0\" class=\"lines\">\n <tr>\n
3322
- \ <td>\n <pre class=\"line_numbers\">\n<span>15</span>\n<span>16</span>\n<span>17</span>\n<span>18</span>\n<span>19</span>\n<span>20</span>\n
3323
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
3324
- class=\"line\"> old, env[FLAG] = env[FLAG], false\n</div><div class=\"line\">
3325
- \ @mutex.lock\n</div><div class=\"line active\"> response = @app.call(env)\n</div><div
3326
- class=\"line\"> body = BodyProxy.new(response[2]) { @mutex.unlock }\n</div><div
3327
- class=\"line\"> response[2] = body\n</div><div class=\"line\"> response\n</div>\n</pre>\n</td>\n
3328
- \ </tr>\n </table>\n </div>\n </div>\n <div class=\"source
3329
- hidden\" id=\"frame-source-77\">\n <div class=\"info\">\n Extracted
3330
- source (around line <strong>#113</strong>):\n </div>\n <div class=\"data\">\n
3331
- \ <table cellpadding=\"0\" cellspacing=\"0\" class=\"lines\">\n <tr>\n
3332
- \ <td>\n <pre class=\"line_numbers\">\n<span>111</span>\n<span>112</span>\n<span>113</span>\n<span>114</span>\n<span>115</span>\n<span>116</span>\n
3333
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
3334
- class=\"line\"> end\n</div><div class=\"line\">\n</div><div class=\"line
3335
- active\"> @app.call(env)\n</div><div class=\"line\"> end\n</div><div
3336
- class=\"line\"> end\n</div><div class=\"line\">end\n</div>\n</pre>\n</td>\n
3337
- \ </tr>\n </table>\n </div>\n </div>\n <div class=\"source
3338
- hidden\" id=\"frame-source-78\">\n <div class=\"info\">\n Extracted
3339
- source (around line <strong>#113</strong>):\n </div>\n <div class=\"data\">\n
3340
- \ <table cellpadding=\"0\" cellspacing=\"0\" class=\"lines\">\n <tr>\n
3341
- \ <td>\n <pre class=\"line_numbers\">\n<span>111</span>\n<span>112</span>\n<span>113</span>\n<span>114</span>\n<span>115</span>\n<span>116</span>\n
3342
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
3343
- class=\"line\">\n</div><div class=\"line\"> def call(env)\n</div><div class=\"line
3344
- active\"> status, headers, body = @app.call(env)\n</div><div class=\"line\">
3345
- \ if body.respond_to?(:to_path)\n</div><div class=\"line\"> case
3346
- type = variation(env)\n</div><div class=\"line\"> when &#39;X-Accel-Redirect&#39;\n</div>\n</pre>\n</td>\n
3347
- \ </tr>\n </table>\n </div>\n </div>\n <div class=\"source
3348
- hidden\" id=\"frame-source-79\">\n <div class=\"info\">\n Extracted
3349
- source (around line <strong>#518</strong>):\n </div>\n <div class=\"data\">\n
3350
- \ <table cellpadding=\"0\" cellspacing=\"0\" class=\"lines\">\n <tr>\n
3351
- \ <td>\n <pre class=\"line_numbers\">\n<span>516</span>\n<span>517</span>\n<span>518</span>\n<span>519</span>\n<span>520</span>\n<span>521</span>\n
3352
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
3353
- class=\"line\"> env[&quot;ROUTES_#{routes.object_id}_SCRIPT_NAME&quot;]
3354
- = env[&#39;SCRIPT_NAME&#39;].dup\n</div><div class=\"line\"> end\n</div><div
3355
- class=\"line active\"> app.call(env)\n</div><div class=\"line\"> end\n</div><div
3356
- class=\"line\">\n</div><div class=\"line\"> # Defines additional Rack env
3357
- configuration that is added on each call.\n</div>\n</pre>\n</td>\n </tr>\n
3358
- \ </table>\n </div>\n </div>\n <div class=\"source hidden\"
3359
- id=\"frame-source-80\">\n <div class=\"info\">\n Extracted source
3360
- (around line <strong>#164</strong>):\n </div>\n <div class=\"data\">\n
3361
- \ <table cellpadding=\"0\" cellspacing=\"0\" class=\"lines\">\n <tr>\n
3362
- \ <td>\n <pre class=\"line_numbers\">\n<span>162</span>\n<span>163</span>\n<span>164</span>\n<span>165</span>\n<span>166</span>\n<span>167</span>\n
3363
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
3364
- class=\"line\"> env[&quot;ORIGINAL_FULLPATH&quot;] = build_original_fullpath(env)\n</div><div
3365
- class=\"line\"> env[&quot;ORIGINAL_SCRIPT_NAME&quot;] = env[&quot;SCRIPT_NAME&quot;]\n</div><div
3366
- class=\"line active\"> super(env)\n</div><div class=\"line\"> end\n</div><div
3367
- class=\"line\">\n</div><div class=\"line\"> # Reload application routes
3368
- regardless if they changed or not.\n</div>\n</pre>\n</td>\n </tr>\n
3369
- \ </table>\n </div>\n </div>\n <div class=\"source hidden\"
3370
- id=\"frame-source-81\">\n <div class=\"info\">\n Extracted source
3371
- (around line <strong>#17</strong>):\n </div>\n <div class=\"data\">\n
3372
- \ <table cellpadding=\"0\" cellspacing=\"0\" class=\"lines\">\n <tr>\n
3373
- \ <td>\n <pre class=\"line_numbers\">\n<span>15</span>\n<span>16</span>\n<span>17</span>\n<span>18</span>\n<span>19</span>\n<span>20</span>\n
3374
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
3375
- class=\"line\"> old, env[FLAG] = env[FLAG], false\n</div><div class=\"line\">
3376
- \ @mutex.lock\n</div><div class=\"line active\"> response = @app.call(env)\n</div><div
3377
- class=\"line\"> body = BodyProxy.new(response[2]) { @mutex.unlock }\n</div><div
3378
- class=\"line\"> response[2] = body\n</div><div class=\"line\"> response\n</div>\n</pre>\n</td>\n
3379
- \ </tr>\n </table>\n </div>\n </div>\n <div class=\"source
3380
- hidden\" id=\"frame-source-82\">\n <div class=\"info\">\n Extracted
3381
- source (around line <strong>#15</strong>):\n </div>\n <div class=\"data\">\n
3382
- \ <table cellpadding=\"0\" cellspacing=\"0\" class=\"lines\">\n <tr>\n
3383
- \ <td>\n <pre class=\"line_numbers\">\n<span>13</span>\n<span>14</span>\n<span>15</span>\n<span>16</span>\n<span>17</span>\n<span>18</span>\n
3384
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
3385
- class=\"line\">\n</div><div class=\"line\"> def call(env)\n</div><div class=\"line
3386
- active\"> status, headers, body = @app.call(env)\n</div><div class=\"line\">
3387
- \ headers = HeaderHash.new(headers)\n</div><div class=\"line\">\n</div><div
3388
- class=\"line\"> if !STATUS_WITH_NO_ENTITY_BODY.include?(status.to_i)
3389
- &amp;&amp;\n</div>\n</pre>\n</td>\n </tr>\n </table>\n </div>\n
3390
- \ </div>\n <div class=\"source hidden\" id=\"frame-source-83\">\n <div
3391
- class=\"info\">\n Extracted source (around line <strong>#88</strong>):\n
3392
- \ </div>\n <div class=\"data\">\n <table cellpadding=\"0\"
3393
- cellspacing=\"0\" class=\"lines\">\n <tr>\n <td>\n <pre
3394
- class=\"line_numbers\">\n<span>86</span>\n<span>87</span>\n<span>88</span>\n<span>89</span>\n<span>90</span>\n<span>91</span>\n
3395
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
3396
- class=\"line\"> env[&quot;REQUEST_PATH&quot;] ||= [env[&quot;SCRIPT_NAME&quot;],
3397
- env[PATH_INFO]].join\n</div><div class=\"line\">\n</div><div class=\"line
3398
- active\"> status, headers, body = @app.call(env)\n</div><div class=\"line\">
3399
- \ begin\n</div><div class=\"line\"> res.status = status.to_i\n</div><div
3400
- class=\"line\"> headers.each { |k, vs|\n</div>\n</pre>\n</td>\n </tr>\n
3401
- \ </table>\n </div>\n </div>\n <div class=\"source hidden\"
3402
- id=\"frame-source-84\">\n <div class=\"info\">\n Extracted source
3403
- (around line <strong>#138</strong>):\n </div>\n <div class=\"data\">\n
3404
- \ <table cellpadding=\"0\" cellspacing=\"0\" class=\"lines\">\n <tr>\n
3405
- \ <td>\n <pre class=\"line_numbers\">\n<span>136</span>\n<span>137</span>\n<span>138</span>\n<span>139</span>\n<span>140</span>\n<span>141</span>\n
3406
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
3407
- class=\"line\"> si = servlet.get_instance(self, *options)\n</div><div
3408
- class=\"line\"> @logger.debug(format(&quot;%s is invoked.&quot;, si.class.name))\n</div><div
3409
- class=\"line active\"> si.service(req, res)\n</div><div class=\"line\">
3410
- \ end\n</div><div class=\"line\">\n</div><div class=\"line\"> ##\n</div>\n</pre>\n</td>\n
3411
- \ </tr>\n </table>\n </div>\n </div>\n <div class=\"source
3412
- hidden\" id=\"frame-source-85\">\n <div class=\"info\">\n Extracted
3413
- source (around line <strong>#94</strong>):\n </div>\n <div class=\"data\">\n
3414
- \ <table cellpadding=\"0\" cellspacing=\"0\" class=\"lines\">\n <tr>\n
3415
- \ <td>\n <pre class=\"line_numbers\">\n<span>92</span>\n<span>93</span>\n<span>94</span>\n<span>95</span>\n<span>96</span>\n<span>97</span>\n
3416
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
3417
- class=\"line\"> callback.call(req, res)\n</div><div class=\"line\">
3418
- \ end\n</div><div class=\"line active\"> server.service(req,
3419
- res)\n</div><div class=\"line\"> rescue HTTPStatus::EOFError, HTTPStatus::RequestTimeout
3420
- =&gt; ex\n</div><div class=\"line\"> res.set_error(ex)\n</div><div
3421
- class=\"line\"> rescue HTTPStatus::Error =&gt; ex\n</div>\n</pre>\n</td>\n
3422
- \ </tr>\n </table>\n </div>\n </div>\n <div class=\"source
3423
- hidden\" id=\"frame-source-86\">\n <div class=\"info\">\n Extracted
3424
- source (around line <strong>#294</strong>):\n </div>\n <div class=\"data\">\n
3425
- \ <table cellpadding=\"0\" cellspacing=\"0\" class=\"lines\">\n <tr>\n
3426
- \ <td>\n <pre class=\"line_numbers\">\n<span>292</span>\n<span>293</span>\n<span>294</span>\n<span>295</span>\n<span>296</span>\n<span>297</span>\n
3427
- \ </pre>\n </td>\n<td width=\"100%\">\n<pre>\n<div
3428
- class=\"line\"> end\n</div><div class=\"line\"> call_callback(:AcceptCallback,
3429
- sock)\n</div><div class=\"line active\"> block ? block.call(sock)
3430
- : run(sock)\n</div><div class=\"line\"> rescue Errno::ENOTCONN\n</div><div
3431
- class=\"line\"> @logger.debug &quot;Errno::ENOTCONN raised&quot;\n</div><div
3432
- class=\"line\"> rescue ServerError =&gt; ex\n</div>\n</pre>\n</td>\n
3433
- \ </tr>\n </table>\n </div>\n </div>\n\n \n<p><code>Rails.root:
3434
- /data/src/dlss/ld4l_data/annotations/triannon/spec/internal</code></p>\n\n<div
3435
- id=\"traces\">\n <a href=\"#\" onclick=\"hide(&#39;Framework-Trace&#39;);hide(&#39;Full-Trace&#39;);show(&#39;Application-Trace&#39;);;
3436
- return false;\">Application Trace</a> |\n <a href=\"#\" onclick=\"hide(&#39;Application-Trace&#39;);hide(&#39;Full-Trace&#39;);show(&#39;Framework-Trace&#39;);;
3437
- return false;\">Framework Trace</a> |\n <a href=\"#\" onclick=\"hide(&#39;Application-Trace&#39;);hide(&#39;Framework-Trace&#39;);show(&#39;Full-Trace&#39;);;
3438
- return false;\">Full Trace</a> \n\n <div id=\"Application-Trace\" style=\"display:
3439
- none;\">\n <pre><code></code></pre>\n </div>\n <div id=\"Framework-Trace\"
3440
- style=\"display: none;\">\n <pre><code><a class=\"trace-frames\" data-frame-id=\"0\"
3441
- href=\"#\">actionpack (4.2.2) lib/action_controller/metal/mime_responds.rb:217:in
3442
- `respond_to&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"1\" href=\"#\">/data/src/dlss/ld4l_data/annotations/triannon/app/controllers/triannon/annotations_controller.rb:26:in
3443
- `show&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"2\" href=\"#\">actionpack
3444
- (4.2.2) lib/action_controller/metal/implicit_render.rb:4:in `send_action&#39;</a><br><a
3445
- class=\"trace-frames\" data-frame-id=\"3\" href=\"#\">actionpack (4.2.2) lib/abstract_controller/base.rb:198:in
3446
- `process_action&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"4\"
3447
- href=\"#\">actionpack (4.2.2) lib/action_controller/metal/rendering.rb:10:in
3448
- `process_action&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"5\"
3449
- href=\"#\">actionpack (4.2.2) lib/abstract_controller/callbacks.rb:20:in `block
3450
- in process_action&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"6\"
3451
- href=\"#\">activesupport (4.2.2) lib/active_support/callbacks.rb:117:in `call&#39;</a><br><a
3452
- class=\"trace-frames\" data-frame-id=\"7\" href=\"#\">activesupport (4.2.2)
3453
- lib/active_support/callbacks.rb:117:in `call&#39;</a><br><a class=\"trace-frames\"
3454
- data-frame-id=\"8\" href=\"#\">activesupport (4.2.2) lib/active_support/callbacks.rb:555:in
3455
- `block (2 levels) in compile&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"9\"
3456
- href=\"#\">activesupport (4.2.2) lib/active_support/callbacks.rb:505:in `call&#39;</a><br><a
3457
- class=\"trace-frames\" data-frame-id=\"10\" href=\"#\">activesupport (4.2.2)
3458
- lib/active_support/callbacks.rb:505:in `call&#39;</a><br><a class=\"trace-frames\"
3459
- data-frame-id=\"11\" href=\"#\">activesupport (4.2.2) lib/active_support/callbacks.rb:92:in
3460
- `_run_callbacks&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"12\"
3461
- href=\"#\">activesupport (4.2.2) lib/active_support/callbacks.rb:776:in `_run_process_action_callbacks&#39;</a><br><a
3462
- class=\"trace-frames\" data-frame-id=\"13\" href=\"#\">activesupport (4.2.2)
3463
- lib/active_support/callbacks.rb:81:in `run_callbacks&#39;</a><br><a class=\"trace-frames\"
3464
- data-frame-id=\"14\" href=\"#\">actionpack (4.2.2) lib/abstract_controller/callbacks.rb:19:in
3465
- `process_action&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"15\"
3466
- href=\"#\">actionpack (4.2.2) lib/action_controller/metal/rescue.rb:29:in
3467
- `process_action&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"16\"
3468
- href=\"#\">actionpack (4.2.2) lib/action_controller/metal/instrumentation.rb:32:in
3469
- `block in process_action&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"17\"
3470
- href=\"#\">activesupport (4.2.2) lib/active_support/notifications.rb:164:in
3471
- `block in instrument&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"18\"
3472
- href=\"#\">activesupport (4.2.2) lib/active_support/notifications/instrumenter.rb:20:in
3473
- `instrument&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"19\" href=\"#\">activesupport
3474
- (4.2.2) lib/active_support/notifications.rb:164:in `instrument&#39;</a><br><a
3475
- class=\"trace-frames\" data-frame-id=\"20\" href=\"#\">actionpack (4.2.2)
3476
- lib/action_controller/metal/instrumentation.rb:30:in `process_action&#39;</a><br><a
3477
- class=\"trace-frames\" data-frame-id=\"21\" href=\"#\">actionpack (4.2.2)
3478
- lib/action_controller/metal/params_wrapper.rb:250:in `process_action&#39;</a><br><a
3479
- class=\"trace-frames\" data-frame-id=\"22\" href=\"#\">activerecord (4.2.2)
3480
- lib/active_record/railties/controller_runtime.rb:18:in `process_action&#39;</a><br><a
3481
- class=\"trace-frames\" data-frame-id=\"23\" href=\"#\">actionpack (4.2.2)
3482
- lib/abstract_controller/base.rb:137:in `process&#39;</a><br><a class=\"trace-frames\"
3483
- data-frame-id=\"24\" href=\"#\">actionview (4.2.2) lib/action_view/rendering.rb:30:in
3484
- `process&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"25\" href=\"#\">actionpack
3485
- (4.2.2) lib/action_controller/metal.rb:196:in `dispatch&#39;</a><br><a class=\"trace-frames\"
3486
- data-frame-id=\"26\" href=\"#\">actionpack (4.2.2) lib/action_controller/metal/rack_delegation.rb:13:in
3487
- `dispatch&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"27\" href=\"#\">actionpack
3488
- (4.2.2) lib/action_controller/metal.rb:237:in `block in action&#39;</a><br><a
3489
- class=\"trace-frames\" data-frame-id=\"28\" href=\"#\">actionpack (4.2.2)
3490
- lib/action_dispatch/routing/route_set.rb:74:in `call&#39;</a><br><a class=\"trace-frames\"
3491
- data-frame-id=\"29\" href=\"#\">actionpack (4.2.2) lib/action_dispatch/routing/route_set.rb:74:in
3492
- `dispatch&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"30\" href=\"#\">actionpack
3493
- (4.2.2) lib/action_dispatch/routing/route_set.rb:43:in `serve&#39;</a><br><a
3494
- class=\"trace-frames\" data-frame-id=\"31\" href=\"#\">actionpack (4.2.2)
3495
- lib/action_dispatch/routing/mapper.rb:49:in `serve&#39;</a><br><a class=\"trace-frames\"
3496
- data-frame-id=\"32\" href=\"#\">actionpack (4.2.2) lib/action_dispatch/journey/router.rb:43:in
3497
- `block in serve&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"33\"
3498
- href=\"#\">actionpack (4.2.2) lib/action_dispatch/journey/router.rb:30:in
3499
- `each&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"34\" href=\"#\">actionpack
3500
- (4.2.2) lib/action_dispatch/journey/router.rb:30:in `serve&#39;</a><br><a
3501
- class=\"trace-frames\" data-frame-id=\"35\" href=\"#\">actionpack (4.2.2)
3502
- lib/action_dispatch/routing/route_set.rb:819:in `call&#39;</a><br><a class=\"trace-frames\"
3503
- data-frame-id=\"36\" href=\"#\">railties (4.2.2) lib/rails/engine.rb:518:in
3504
- `call&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"37\" href=\"#\">railties
3505
- (4.2.2) lib/rails/railtie.rb:194:in `public_send&#39;</a><br><a class=\"trace-frames\"
3506
- data-frame-id=\"38\" href=\"#\">railties (4.2.2) lib/rails/railtie.rb:194:in
3507
- `method_missing&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"39\"
3508
- href=\"#\">actionpack (4.2.2) lib/action_dispatch/routing/mapper.rb:51:in
3509
- `serve&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"40\" href=\"#\">actionpack
3510
- (4.2.2) lib/action_dispatch/journey/router.rb:43:in `block in serve&#39;</a><br><a
3511
- class=\"trace-frames\" data-frame-id=\"41\" href=\"#\">actionpack (4.2.2)
3512
- lib/action_dispatch/journey/router.rb:30:in `each&#39;</a><br><a class=\"trace-frames\"
3513
- data-frame-id=\"42\" href=\"#\">actionpack (4.2.2) lib/action_dispatch/journey/router.rb:30:in
3514
- `serve&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"43\" href=\"#\">actionpack
3515
- (4.2.2) lib/action_dispatch/routing/route_set.rb:819:in `call&#39;</a><br><a
3516
- class=\"trace-frames\" data-frame-id=\"44\" href=\"#\">rack (1.6.4) lib/rack/etag.rb:24:in
3517
- `call&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"45\" href=\"#\">rack
3518
- (1.6.4) lib/rack/conditionalget.rb:25:in `call&#39;</a><br><a class=\"trace-frames\"
3519
- data-frame-id=\"46\" href=\"#\">rack (1.6.4) lib/rack/head.rb:13:in `call&#39;</a><br><a
3520
- class=\"trace-frames\" data-frame-id=\"47\" href=\"#\">actionpack (4.2.2)
3521
- lib/action_dispatch/middleware/params_parser.rb:27:in `call&#39;</a><br><a
3522
- class=\"trace-frames\" data-frame-id=\"48\" href=\"#\">actionpack (4.2.2)
3523
- lib/action_dispatch/middleware/flash.rb:260:in `call&#39;</a><br><a class=\"trace-frames\"
3524
- data-frame-id=\"49\" href=\"#\">rack (1.6.4) lib/rack/session/abstract/id.rb:225:in
3525
- `context&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"50\" href=\"#\">rack
3526
- (1.6.4) lib/rack/session/abstract/id.rb:220:in `call&#39;</a><br><a class=\"trace-frames\"
3527
- data-frame-id=\"51\" href=\"#\">actionpack (4.2.2) lib/action_dispatch/middleware/cookies.rb:560:in
3528
- `call&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"52\" href=\"#\">activerecord
3529
- (4.2.2) lib/active_record/query_cache.rb:36:in `call&#39;</a><br><a class=\"trace-frames\"
3530
- data-frame-id=\"53\" href=\"#\">activerecord (4.2.2) lib/active_record/connection_adapters/abstract/connection_pool.rb:649:in
3531
- `call&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"54\" href=\"#\">activerecord
3532
- (4.2.2) lib/active_record/migration.rb:378:in `call&#39;</a><br><a class=\"trace-frames\"
3533
- data-frame-id=\"55\" href=\"#\">actionpack (4.2.2) lib/action_dispatch/middleware/callbacks.rb:29:in
3534
- `block in call&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"56\"
3535
- href=\"#\">activesupport (4.2.2) lib/active_support/callbacks.rb:88:in `call&#39;</a><br><a
3536
- class=\"trace-frames\" data-frame-id=\"57\" href=\"#\">activesupport (4.2.2)
3537
- lib/active_support/callbacks.rb:88:in `_run_callbacks&#39;</a><br><a class=\"trace-frames\"
3538
- data-frame-id=\"58\" href=\"#\">activesupport (4.2.2) lib/active_support/callbacks.rb:776:in
3539
- `_run_call_callbacks&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"59\"
3540
- href=\"#\">activesupport (4.2.2) lib/active_support/callbacks.rb:81:in `run_callbacks&#39;</a><br><a
3541
- class=\"trace-frames\" data-frame-id=\"60\" href=\"#\">actionpack (4.2.2)
3542
- lib/action_dispatch/middleware/callbacks.rb:27:in `call&#39;</a><br><a class=\"trace-frames\"
3543
- data-frame-id=\"61\" href=\"#\">actionpack (4.2.2) lib/action_dispatch/middleware/reloader.rb:73:in
3544
- `call&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"62\" href=\"#\">actionpack
3545
- (4.2.2) lib/action_dispatch/middleware/remote_ip.rb:78:in `call&#39;</a><br><a
3546
- class=\"trace-frames\" data-frame-id=\"63\" href=\"#\">actionpack (4.2.2)
3547
- lib/action_dispatch/middleware/debug_exceptions.rb:17:in `call&#39;</a><br><a
3548
- class=\"trace-frames\" data-frame-id=\"64\" href=\"#\">web-console (2.1.3)
3549
- lib/web_console/middleware.rb:37:in `call&#39;</a><br><a class=\"trace-frames\"
3550
- data-frame-id=\"65\" href=\"#\">actionpack (4.2.2) lib/action_dispatch/middleware/show_exceptions.rb:30:in
3551
- `call&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"66\" href=\"#\">railties
3552
- (4.2.2) lib/rails/rack/logger.rb:38:in `call_app&#39;</a><br><a class=\"trace-frames\"
3553
- data-frame-id=\"67\" href=\"#\">railties (4.2.2) lib/rails/rack/logger.rb:20:in
3554
- `block in call&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"68\"
3555
- href=\"#\">activesupport (4.2.2) lib/active_support/tagged_logging.rb:68:in
3556
- `block in tagged&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"69\"
3557
- href=\"#\">activesupport (4.2.2) lib/active_support/tagged_logging.rb:26:in
3558
- `tagged&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"70\" href=\"#\">activesupport
3559
- (4.2.2) lib/active_support/tagged_logging.rb:68:in `tagged&#39;</a><br><a
3560
- class=\"trace-frames\" data-frame-id=\"71\" href=\"#\">railties (4.2.2) lib/rails/rack/logger.rb:20:in
3561
- `call&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"72\" href=\"#\">actionpack
3562
- (4.2.2) lib/action_dispatch/middleware/request_id.rb:21:in `call&#39;</a><br><a
3563
- class=\"trace-frames\" data-frame-id=\"73\" href=\"#\">rack (1.6.4) lib/rack/methodoverride.rb:22:in
3564
- `call&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"74\" href=\"#\">rack
3565
- (1.6.4) lib/rack/runtime.rb:18:in `call&#39;</a><br><a class=\"trace-frames\"
3566
- data-frame-id=\"75\" href=\"#\">activesupport (4.2.2) lib/active_support/cache/strategy/local_cache_middleware.rb:28:in
3567
- `call&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"76\" href=\"#\">rack
3568
- (1.6.4) lib/rack/lock.rb:17:in `call&#39;</a><br><a class=\"trace-frames\"
3569
- data-frame-id=\"77\" href=\"#\">actionpack (4.2.2) lib/action_dispatch/middleware/static.rb:113:in
3570
- `call&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"78\" href=\"#\">rack
3571
- (1.6.4) lib/rack/sendfile.rb:113:in `call&#39;</a><br><a class=\"trace-frames\"
3572
- data-frame-id=\"79\" href=\"#\">railties (4.2.2) lib/rails/engine.rb:518:in
3573
- `call&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"80\" href=\"#\">railties
3574
- (4.2.2) lib/rails/application.rb:164:in `call&#39;</a><br><a class=\"trace-frames\"
3575
- data-frame-id=\"81\" href=\"#\">rack (1.6.4) lib/rack/lock.rb:17:in `call&#39;</a><br><a
3576
- class=\"trace-frames\" data-frame-id=\"82\" href=\"#\">rack (1.6.4) lib/rack/content_length.rb:15:in
3577
- `call&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"83\" href=\"#\">rack
3578
- (1.6.4) lib/rack/handler/webrick.rb:88:in `service&#39;</a><br><a class=\"trace-frames\"
3579
- data-frame-id=\"84\" href=\"#\">/home/dlweber/.rbenv/versions/2.2.2/lib/ruby/2.2.0/webrick/httpserver.rb:138:in
3580
- `service&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"85\" href=\"#\">/home/dlweber/.rbenv/versions/2.2.2/lib/ruby/2.2.0/webrick/httpserver.rb:94:in
3581
- `run&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"86\" href=\"#\">/home/dlweber/.rbenv/versions/2.2.2/lib/ruby/2.2.0/webrick/server.rb:294:in
3582
- `block in start_thread&#39;</a><br></code></pre>\n </div>\n <div id=\"Full-Trace\"
3583
- style=\"display: block;\">\n <pre><code><a class=\"trace-frames\" data-frame-id=\"0\"
3584
- href=\"#\">actionpack (4.2.2) lib/action_controller/metal/mime_responds.rb:217:in
3585
- `respond_to&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"1\" href=\"#\">/data/src/dlss/ld4l_data/annotations/triannon/app/controllers/triannon/annotations_controller.rb:26:in
3586
- `show&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"2\" href=\"#\">actionpack
3587
- (4.2.2) lib/action_controller/metal/implicit_render.rb:4:in `send_action&#39;</a><br><a
3588
- class=\"trace-frames\" data-frame-id=\"3\" href=\"#\">actionpack (4.2.2) lib/abstract_controller/base.rb:198:in
3589
- `process_action&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"4\"
3590
- href=\"#\">actionpack (4.2.2) lib/action_controller/metal/rendering.rb:10:in
3591
- `process_action&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"5\"
3592
- href=\"#\">actionpack (4.2.2) lib/abstract_controller/callbacks.rb:20:in `block
3593
- in process_action&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"6\"
3594
- href=\"#\">activesupport (4.2.2) lib/active_support/callbacks.rb:117:in `call&#39;</a><br><a
3595
- class=\"trace-frames\" data-frame-id=\"7\" href=\"#\">activesupport (4.2.2)
3596
- lib/active_support/callbacks.rb:117:in `call&#39;</a><br><a class=\"trace-frames\"
3597
- data-frame-id=\"8\" href=\"#\">activesupport (4.2.2) lib/active_support/callbacks.rb:555:in
3598
- `block (2 levels) in compile&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"9\"
3599
- href=\"#\">activesupport (4.2.2) lib/active_support/callbacks.rb:505:in `call&#39;</a><br><a
3600
- class=\"trace-frames\" data-frame-id=\"10\" href=\"#\">activesupport (4.2.2)
3601
- lib/active_support/callbacks.rb:505:in `call&#39;</a><br><a class=\"trace-frames\"
3602
- data-frame-id=\"11\" href=\"#\">activesupport (4.2.2) lib/active_support/callbacks.rb:92:in
3603
- `_run_callbacks&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"12\"
3604
- href=\"#\">activesupport (4.2.2) lib/active_support/callbacks.rb:776:in `_run_process_action_callbacks&#39;</a><br><a
3605
- class=\"trace-frames\" data-frame-id=\"13\" href=\"#\">activesupport (4.2.2)
3606
- lib/active_support/callbacks.rb:81:in `run_callbacks&#39;</a><br><a class=\"trace-frames\"
3607
- data-frame-id=\"14\" href=\"#\">actionpack (4.2.2) lib/abstract_controller/callbacks.rb:19:in
3608
- `process_action&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"15\"
3609
- href=\"#\">actionpack (4.2.2) lib/action_controller/metal/rescue.rb:29:in
3610
- `process_action&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"16\"
3611
- href=\"#\">actionpack (4.2.2) lib/action_controller/metal/instrumentation.rb:32:in
3612
- `block in process_action&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"17\"
3613
- href=\"#\">activesupport (4.2.2) lib/active_support/notifications.rb:164:in
3614
- `block in instrument&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"18\"
3615
- href=\"#\">activesupport (4.2.2) lib/active_support/notifications/instrumenter.rb:20:in
3616
- `instrument&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"19\" href=\"#\">activesupport
3617
- (4.2.2) lib/active_support/notifications.rb:164:in `instrument&#39;</a><br><a
3618
- class=\"trace-frames\" data-frame-id=\"20\" href=\"#\">actionpack (4.2.2)
3619
- lib/action_controller/metal/instrumentation.rb:30:in `process_action&#39;</a><br><a
3620
- class=\"trace-frames\" data-frame-id=\"21\" href=\"#\">actionpack (4.2.2)
3621
- lib/action_controller/metal/params_wrapper.rb:250:in `process_action&#39;</a><br><a
3622
- class=\"trace-frames\" data-frame-id=\"22\" href=\"#\">activerecord (4.2.2)
3623
- lib/active_record/railties/controller_runtime.rb:18:in `process_action&#39;</a><br><a
3624
- class=\"trace-frames\" data-frame-id=\"23\" href=\"#\">actionpack (4.2.2)
3625
- lib/abstract_controller/base.rb:137:in `process&#39;</a><br><a class=\"trace-frames\"
3626
- data-frame-id=\"24\" href=\"#\">actionview (4.2.2) lib/action_view/rendering.rb:30:in
3627
- `process&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"25\" href=\"#\">actionpack
3628
- (4.2.2) lib/action_controller/metal.rb:196:in `dispatch&#39;</a><br><a class=\"trace-frames\"
3629
- data-frame-id=\"26\" href=\"#\">actionpack (4.2.2) lib/action_controller/metal/rack_delegation.rb:13:in
3630
- `dispatch&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"27\" href=\"#\">actionpack
3631
- (4.2.2) lib/action_controller/metal.rb:237:in `block in action&#39;</a><br><a
3632
- class=\"trace-frames\" data-frame-id=\"28\" href=\"#\">actionpack (4.2.2)
3633
- lib/action_dispatch/routing/route_set.rb:74:in `call&#39;</a><br><a class=\"trace-frames\"
3634
- data-frame-id=\"29\" href=\"#\">actionpack (4.2.2) lib/action_dispatch/routing/route_set.rb:74:in
3635
- `dispatch&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"30\" href=\"#\">actionpack
3636
- (4.2.2) lib/action_dispatch/routing/route_set.rb:43:in `serve&#39;</a><br><a
3637
- class=\"trace-frames\" data-frame-id=\"31\" href=\"#\">actionpack (4.2.2)
3638
- lib/action_dispatch/routing/mapper.rb:49:in `serve&#39;</a><br><a class=\"trace-frames\"
3639
- data-frame-id=\"32\" href=\"#\">actionpack (4.2.2) lib/action_dispatch/journey/router.rb:43:in
3640
- `block in serve&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"33\"
3641
- href=\"#\">actionpack (4.2.2) lib/action_dispatch/journey/router.rb:30:in
3642
- `each&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"34\" href=\"#\">actionpack
3643
- (4.2.2) lib/action_dispatch/journey/router.rb:30:in `serve&#39;</a><br><a
3644
- class=\"trace-frames\" data-frame-id=\"35\" href=\"#\">actionpack (4.2.2)
3645
- lib/action_dispatch/routing/route_set.rb:819:in `call&#39;</a><br><a class=\"trace-frames\"
3646
- data-frame-id=\"36\" href=\"#\">railties (4.2.2) lib/rails/engine.rb:518:in
3647
- `call&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"37\" href=\"#\">railties
3648
- (4.2.2) lib/rails/railtie.rb:194:in `public_send&#39;</a><br><a class=\"trace-frames\"
3649
- data-frame-id=\"38\" href=\"#\">railties (4.2.2) lib/rails/railtie.rb:194:in
3650
- `method_missing&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"39\"
3651
- href=\"#\">actionpack (4.2.2) lib/action_dispatch/routing/mapper.rb:51:in
3652
- `serve&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"40\" href=\"#\">actionpack
3653
- (4.2.2) lib/action_dispatch/journey/router.rb:43:in `block in serve&#39;</a><br><a
3654
- class=\"trace-frames\" data-frame-id=\"41\" href=\"#\">actionpack (4.2.2)
3655
- lib/action_dispatch/journey/router.rb:30:in `each&#39;</a><br><a class=\"trace-frames\"
3656
- data-frame-id=\"42\" href=\"#\">actionpack (4.2.2) lib/action_dispatch/journey/router.rb:30:in
3657
- `serve&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"43\" href=\"#\">actionpack
3658
- (4.2.2) lib/action_dispatch/routing/route_set.rb:819:in `call&#39;</a><br><a
3659
- class=\"trace-frames\" data-frame-id=\"44\" href=\"#\">rack (1.6.4) lib/rack/etag.rb:24:in
3660
- `call&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"45\" href=\"#\">rack
3661
- (1.6.4) lib/rack/conditionalget.rb:25:in `call&#39;</a><br><a class=\"trace-frames\"
3662
- data-frame-id=\"46\" href=\"#\">rack (1.6.4) lib/rack/head.rb:13:in `call&#39;</a><br><a
3663
- class=\"trace-frames\" data-frame-id=\"47\" href=\"#\">actionpack (4.2.2)
3664
- lib/action_dispatch/middleware/params_parser.rb:27:in `call&#39;</a><br><a
3665
- class=\"trace-frames\" data-frame-id=\"48\" href=\"#\">actionpack (4.2.2)
3666
- lib/action_dispatch/middleware/flash.rb:260:in `call&#39;</a><br><a class=\"trace-frames\"
3667
- data-frame-id=\"49\" href=\"#\">rack (1.6.4) lib/rack/session/abstract/id.rb:225:in
3668
- `context&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"50\" href=\"#\">rack
3669
- (1.6.4) lib/rack/session/abstract/id.rb:220:in `call&#39;</a><br><a class=\"trace-frames\"
3670
- data-frame-id=\"51\" href=\"#\">actionpack (4.2.2) lib/action_dispatch/middleware/cookies.rb:560:in
3671
- `call&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"52\" href=\"#\">activerecord
3672
- (4.2.2) lib/active_record/query_cache.rb:36:in `call&#39;</a><br><a class=\"trace-frames\"
3673
- data-frame-id=\"53\" href=\"#\">activerecord (4.2.2) lib/active_record/connection_adapters/abstract/connection_pool.rb:649:in
3674
- `call&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"54\" href=\"#\">activerecord
3675
- (4.2.2) lib/active_record/migration.rb:378:in `call&#39;</a><br><a class=\"trace-frames\"
3676
- data-frame-id=\"55\" href=\"#\">actionpack (4.2.2) lib/action_dispatch/middleware/callbacks.rb:29:in
3677
- `block in call&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"56\"
3678
- href=\"#\">activesupport (4.2.2) lib/active_support/callbacks.rb:88:in `call&#39;</a><br><a
3679
- class=\"trace-frames\" data-frame-id=\"57\" href=\"#\">activesupport (4.2.2)
3680
- lib/active_support/callbacks.rb:88:in `_run_callbacks&#39;</a><br><a class=\"trace-frames\"
3681
- data-frame-id=\"58\" href=\"#\">activesupport (4.2.2) lib/active_support/callbacks.rb:776:in
3682
- `_run_call_callbacks&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"59\"
3683
- href=\"#\">activesupport (4.2.2) lib/active_support/callbacks.rb:81:in `run_callbacks&#39;</a><br><a
3684
- class=\"trace-frames\" data-frame-id=\"60\" href=\"#\">actionpack (4.2.2)
3685
- lib/action_dispatch/middleware/callbacks.rb:27:in `call&#39;</a><br><a class=\"trace-frames\"
3686
- data-frame-id=\"61\" href=\"#\">actionpack (4.2.2) lib/action_dispatch/middleware/reloader.rb:73:in
3687
- `call&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"62\" href=\"#\">actionpack
3688
- (4.2.2) lib/action_dispatch/middleware/remote_ip.rb:78:in `call&#39;</a><br><a
3689
- class=\"trace-frames\" data-frame-id=\"63\" href=\"#\">actionpack (4.2.2)
3690
- lib/action_dispatch/middleware/debug_exceptions.rb:17:in `call&#39;</a><br><a
3691
- class=\"trace-frames\" data-frame-id=\"64\" href=\"#\">web-console (2.1.3)
3692
- lib/web_console/middleware.rb:37:in `call&#39;</a><br><a class=\"trace-frames\"
3693
- data-frame-id=\"65\" href=\"#\">actionpack (4.2.2) lib/action_dispatch/middleware/show_exceptions.rb:30:in
3694
- `call&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"66\" href=\"#\">railties
3695
- (4.2.2) lib/rails/rack/logger.rb:38:in `call_app&#39;</a><br><a class=\"trace-frames\"
3696
- data-frame-id=\"67\" href=\"#\">railties (4.2.2) lib/rails/rack/logger.rb:20:in
3697
- `block in call&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"68\"
3698
- href=\"#\">activesupport (4.2.2) lib/active_support/tagged_logging.rb:68:in
3699
- `block in tagged&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"69\"
3700
- href=\"#\">activesupport (4.2.2) lib/active_support/tagged_logging.rb:26:in
3701
- `tagged&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"70\" href=\"#\">activesupport
3702
- (4.2.2) lib/active_support/tagged_logging.rb:68:in `tagged&#39;</a><br><a
3703
- class=\"trace-frames\" data-frame-id=\"71\" href=\"#\">railties (4.2.2) lib/rails/rack/logger.rb:20:in
3704
- `call&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"72\" href=\"#\">actionpack
3705
- (4.2.2) lib/action_dispatch/middleware/request_id.rb:21:in `call&#39;</a><br><a
3706
- class=\"trace-frames\" data-frame-id=\"73\" href=\"#\">rack (1.6.4) lib/rack/methodoverride.rb:22:in
3707
- `call&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"74\" href=\"#\">rack
3708
- (1.6.4) lib/rack/runtime.rb:18:in `call&#39;</a><br><a class=\"trace-frames\"
3709
- data-frame-id=\"75\" href=\"#\">activesupport (4.2.2) lib/active_support/cache/strategy/local_cache_middleware.rb:28:in
3710
- `call&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"76\" href=\"#\">rack
3711
- (1.6.4) lib/rack/lock.rb:17:in `call&#39;</a><br><a class=\"trace-frames\"
3712
- data-frame-id=\"77\" href=\"#\">actionpack (4.2.2) lib/action_dispatch/middleware/static.rb:113:in
3713
- `call&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"78\" href=\"#\">rack
3714
- (1.6.4) lib/rack/sendfile.rb:113:in `call&#39;</a><br><a class=\"trace-frames\"
3715
- data-frame-id=\"79\" href=\"#\">railties (4.2.2) lib/rails/engine.rb:518:in
3716
- `call&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"80\" href=\"#\">railties
3717
- (4.2.2) lib/rails/application.rb:164:in `call&#39;</a><br><a class=\"trace-frames\"
3718
- data-frame-id=\"81\" href=\"#\">rack (1.6.4) lib/rack/lock.rb:17:in `call&#39;</a><br><a
3719
- class=\"trace-frames\" data-frame-id=\"82\" href=\"#\">rack (1.6.4) lib/rack/content_length.rb:15:in
3720
- `call&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"83\" href=\"#\">rack
3721
- (1.6.4) lib/rack/handler/webrick.rb:88:in `service&#39;</a><br><a class=\"trace-frames\"
3722
- data-frame-id=\"84\" href=\"#\">/home/dlweber/.rbenv/versions/2.2.2/lib/ruby/2.2.0/webrick/httpserver.rb:138:in
3723
- `service&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"85\" href=\"#\">/home/dlweber/.rbenv/versions/2.2.2/lib/ruby/2.2.0/webrick/httpserver.rb:94:in
3724
- `run&#39;</a><br><a class=\"trace-frames\" data-frame-id=\"86\" href=\"#\">/home/dlweber/.rbenv/versions/2.2.2/lib/ruby/2.2.0/webrick/server.rb:294:in
3725
- `block in start_thread&#39;</a><br></code></pre>\n </div>\n\n <script
3726
- type=\"text/javascript\">\n var traceFrames = document.getElementsByClassName('trace-frames');\n
3727
- \ var selectedFrame, currentSource = document.getElementById('frame-source-0');\n\n
3728
- \ // Add click listeners for all stack frames\n for (var i = 0; i < traceFrames.length;
3729
- i++) {\n traceFrames[i].addEventListener('click', function(e) {\n e.preventDefault();\n
3730
- \ var target = e.target;\n var frame_id = target.dataset.frameId;\n\n
3731
- \ if (selectedFrame) {\n selectedFrame.className = selectedFrame.className.replace(\"selected\",
3732
- \"\");\n }\n\n target.className += \" selected\";\n selectedFrame
3733
- = target;\n\n // Change the extracted source code\n changeSourceExtract(frame_id);\n
3734
- \ });\n\n function changeSourceExtract(frame_id) {\n var el
3735
- = document.getElementById('frame-source-' + frame_id);\n if (currentSource
3736
- && el) {\n currentSource.className += \" hidden\";\n el.className
3737
- = el.className.replace(\" hidden\", \"\");\n currentSource = el;\n
3738
- \ }\n }\n }\n </script>\n</div>\n\n \n\n<h2 style=\"margin-top:
3739
- 30px\">Request</h2>\n<p><b>Parameters</b>:</p> <pre>{&quot;anno_root&quot;=&gt;&quot;foo&quot;,\n
3740
- &quot;id&quot;=&gt;&quot;02/c8/79/24/02c87924-37bb-4005-b781-573d0dab7ce4&quot;}</pre>\n\n<div
3741
- class=\"details\">\n <div class=\"summary\"><a href=\"#\" onclick=\"return
3742
- toggleSessionDump()\">Toggle session dump</a></div>\n <div id=\"session_dump\"
3743
- style=\"display:none\"><pre></pre></div>\n</div>\n\n<div class=\"details\">\n
3744
- \ <div class=\"summary\"><a href=\"#\" onclick=\"return toggleEnvDump()\">Toggle
3745
- env dump</a></div>\n <div id=\"env_dump\" style=\"display:none\"><pre>GATEWAY_INTERFACE:
3746
- &quot;CGI/1.1&quot;\nHTTP_ACCEPT: &quot;application/trix&quot;\nHTTP_ACCEPT_ENCODING:
3747
- &quot;gzip, deflate&quot;\nREMOTE_ADDR: &quot;127.0.0.1&quot;\nREMOTE_HOST:
3748
- &quot;127.0.0.1&quot;\nSERVER_NAME: &quot;localhost&quot;\nSERVER_PROTOCOL:
3749
- &quot;HTTP/1.1&quot;</pre></div>\n</div>\n\n<h2 style=\"margin-top: 30px\">Response</h2>\n<p><b>Headers</b>:</p>
3750
- <pre>None</pre>\n\n</div>\n\n\n</body>\n</html>\n<div id=\"console\"\n data-remote-path='console/repl_sessions/c4cd0b5c3feb44861b7d0835301d43e9'\n
3751
- \ data-initial-prompt='>> '>\n</div>\n\n\n<script type=\"text/javascript\">\n(function()
3752
- {\n // DOM helpers\nfunction hasClass(el, className) {\n var regex = new
3753
- RegExp('(?:^|\\\\s)' + className + '(?!\\\\S)', 'g');\n return el.className.match(regex);\n}\n\nfunction
3754
- addClass(el, className) {\n el.className += \" \" + className;\n}\n\nfunction
3755
- removeClass(el, className) {\n var regex = new RegExp('(?:^|\\\\s)' + className
3756
- + '(?!\\\\S)', 'g');\n el.className = el.className.replace(regex, '');\n}\n\nfunction
3757
- removeAllChildren(el) {\n while (el.firstChild) {\n el.removeChild(el.firstChild);\n
3758
- \ }\n}\n\nfunction escapeHTML(html) {\n return html\n .replace(/&/g, '&amp;')\n
3759
- \ .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n .replace(/\"/g,
3760
- '&quot;')\n .replace(/'/g, '&#x27;')\n .replace(/`/g, '&#x60;');\n}\n\n//
3761
- Add CSS styles dynamically. This probably doesnt work for IE <8.\nvar style
3762
- = document.createElement('style');\nstyle.type = 'text/css';\nstyle.innerHTML
3763
- = \"#console { position: fixed; left: 0; bottom: 0; width: 100%; height: 148px;
3764
- border: 1px solid; padding: 0 0 4px 0; overflow: none; margin: 0; background:
3765
- none repeat scroll 0% 0% #333; z-index: 9999; }\\n#console div.console-inner
3766
- { font-family: monospace; font-size: 11px; height: 100%; overflow: auto; background:
3767
- #333; border: 0; padding: 0; margin: 0; }\\n#console div.console-prompt-box
3768
- { color: #FFF; }\\n#console pre.console-message { color: #1AD027; margin:
3769
- 0; border: 0; white-space: pre-wrap; background-color: #333; padding: 0; }\\n#console
3770
- div.console-focus span.console-cursor { background: #FEFEFE; color: #333;
3771
- font-weight: bold; }\\n#console div#resizer { width: 100%; height: 4px; cursor:
3772
- ns-resize; }\\n#console input#clipboard { height: 0px; padding: 0px; margin:
3773
- 0px; width: 0px; margin-left: -1000px; }\\n#console span.console-prompt-label
3774
- { display: inline; color: #FFF; background: none repeat scroll 0% 0% #333;
3775
- border: 0; padding: 0; }\\n#console pre.console-prompt-display { display:
3776
- inline; color: #FFF; background: none repeat scroll 0% 0% #333; border: 0;
3777
- padding: 0; }\\n\"\n;\ndocument.getElementsByTagName('head')[0].appendChild(style);\n\n/**\n
3778
- * Constructor for command storage.\n * It uses localStorage if available.
3779
- Otherwise fallback to normal JS array.\n */\nfunction CommandStorage() {\n
3780
- \ this.previousCommands = [];\n var previousCommandOffset = 0;\n var hasLocalStorage
3781
- = typeof window.localStorage !== 'undefined';\n var STORAGE_KEY = \"web_console_previous_commands\";\n
3782
- \ var MAX_STORAGE = 100;\n\n if (hasLocalStorage) {\n this.previousCommands
3783
- = JSON.parse(localStorage.getItem(STORAGE_KEY)) || [];\n previousCommandOffset
3784
- = this.previousCommands.length;\n }\n\n this.addCommand = function(command)
3785
- {\n previousCommandOffset = this.previousCommands.push(command);\n\n if
3786
- (previousCommandOffset > MAX_STORAGE) {\n this.previousCommands.splice(0,
3787
- 1);\n previousCommandOffset = MAX_STORAGE;\n }\n\n if (hasLocalStorage)
3788
- {\n localStorage.setItem(STORAGE_KEY, JSON.stringify(this.previousCommands));\n
3789
- \ }\n };\n\n this.navigate = function(offset) {\n previousCommandOffset
3790
- += offset;\n\n if (previousCommandOffset < 0) {\n previousCommandOffset
3791
- = -1;\n return null;\n }\n\n if (previousCommandOffset >= this.previousCommands.length)
3792
- {\n previousCommandOffset = this.previousCommands.length;\n return
3793
- null;\n }\n\n return this.previousCommands[previousCommandOffset];\n
3794
- \ }\n}\n\n// HTML strings for dynamic elements.\nvar consoleInnerHtml = \"<div
3795
- id=\\'resizer\\'><\\/div>\\n<div class=\\'console-inner\\'><\\/div>\\n<input
3796
- id=\\'clipboard\\' type=\\'text\\'>\\n\"\n;\nvar promptBoxHtml = \"<span class=\\'console-prompt-label\\'><\\/span>\\n<pre
3797
- class=\\'console-prompt-display\\'><\\/pre>\\n\"\n;\n\n// REPLConsole Constructor\nfunction
3798
- REPLConsole(config) {\n this.commandStorage = new CommandStorage();\n this.prompt
3799
- = config && config.promptLabel ? config.promptLabel : ' >>';\n this.commandHandle
3800
- = config && config.commandHandle ? config.commandHandle : function() { return
3801
- this; }\n}\n\n\nREPLConsole.prototype.install = function(container) {\n var
3802
- _this = this;\n\n document.onkeydown = function(ev) {\n if (_this.focused)
3803
- { _this.onKeyDown(ev); }\n };\n\n document.onkeypress = function(ev) {\n
3804
- \ if (_this.focused) { _this.onKeyPress(ev); }\n };\n\n document.addEventListener('mousedown',
3805
- function(ev) {\n var el = ev.target || ev.srcElement;\n\n if (el) {\n
3806
- \ do {\n if (el === container) {\n _this.focus();\n return;\n
3807
- \ }\n } while (el = el.parentNode);\n\n _this.blur();\n }\n
3808
- \ });\n\n // Render the console.\n container.innerHTML = consoleInnerHtml;\n\n
3809
- \ // Make the console resizable.\n document.getElementById('resizer').addEventListener('mousedown',
3810
- function(ev) {\n var startY = ev.clientY;\n var startHeight
3811
- \ = parseInt(document.defaultView.getComputedStyle(container).height,
3812
- 10);\n var consoleInner = document.getElementsByClassName('console-inner')[0];\n
3813
- \ var innerScrollTopStart = consoleInner.scrollTop;\n var innerClientHeightStart
3814
- \ = consoleInner.clientHeight;\n\n var doDrag = function(e) {\n container.style.height
3815
- = (startHeight + startY - e.clientY) + 'px';\n consoleInner.scrollTop
3816
- = innerScrollTopStart + (innerClientHeightStart - consoleInner.clientHeight);\n
3817
- \ };\n\n var stopDrag = function(e) {\n document.documentElement.removeEventListener('mousemove',
3818
- doDrag, false);\n document.documentElement.removeEventListener('mouseup',
3819
- stopDrag, false);\n };\n\n document.documentElement.addEventListener('mousemove',
3820
- doDrag, false);\n document.documentElement.addEventListener('mouseup',
3821
- stopDrag, false);\n });\n\n // Initialize\n this.inner = container.getElementsByClassName('console-inner')[0];\n
3822
- \ this.clipboard = document.getElementById('clipboard');\n this.newPromptBox();\n};\n\nREPLConsole.prototype.focus
3823
- = function() {\n if (! this.focused) {\n this.focused = true;\n if
3824
- (! hasClass(this.inner, \"console-focus\")) {\n addClass(this.inner,
3825
- \"console-focus\");\n }\n this.scrollToBottom();\n }\n};\n\nREPLConsole.prototype.blur
3826
- = function() {\n this.focused = false;\n removeClass(this.inner, \"console-focus\");\n};\n\n/**\n
3827
- * Add a new empty prompt box to the console.\n */\nREPLConsole.prototype.newPromptBox
3828
- = function() {\n // Remove the caret from previous prompt display if any.\n
3829
- \ if (this.promptDisplay) {\n this.removeCaretFromPrompt();\n }\n\n var
3830
- promptBox = document.createElement('div');\n promptBox.className = \"console-prompt-box\";\n
3831
- \ promptBox.innerHTML = promptBoxHtml;\n this.promptLabel = promptBox.getElementsByClassName('console-prompt-label')[0];\n
3832
- \ this.promptDisplay = promptBox.getElementsByClassName('console-prompt-display')[0];\n
3833
- \ // Render the prompt box\n this.setInput(\"\");\n this.promptLabel.innerHTML
3834
- = this.prompt;\n this.inner.appendChild(promptBox);\n this.scrollToBottom();\n};\n\n/**\n
3835
- * Remove the caret from the prompt box,\n * mainly before adding a new prompt
3836
- box.\n * For simplicity, just re-render the prompt box\n * with caret position
3837
- -1.\n */\nREPLConsole.prototype.removeCaretFromPrompt = function() {\n this.setInput(this._input,
3838
- -1);\n};\n\nREPLConsole.prototype.setInput = function(input, caretPos) {\n
3839
- \ this._caretPos = caretPos === undefined ? input.length : caretPos;\n this._input
3840
- = input;\n this.renderInput();\n};\n\n/**\n * Add some text to the existing
3841
- input.\n */\nREPLConsole.prototype.addToInput = function(val, caretPos) {\n
3842
- \ caretPos = caretPos || this._caretPos;\n var before = this._input.substring(0,
3843
- caretPos);\n var after = this._input.substring(caretPos, this._input.length);\n
3844
- \ var newInput = before + val + after;\n this.setInput(newInput, caretPos
3845
- + val.length);\n};\n\n/**\n * Render the input prompt. This is called whenever\n
3846
- * the user input changes, sometimes not very efficient.\n */\nREPLConsole.prototype.renderInput
3847
- = function() {\n // Clear the current input.\n removeAllChildren(this.promptDisplay);\n\n
3848
- \ var promptCursor = document.createElement('span');\n promptCursor.className
3849
- = \"console-cursor\";\n var before, current, after;\n\n if (this._caretPos
3850
- < 0) {\n before = this._input;\n current = after = \"\";\n } else if
3851
- (this._caretPos === this._input.length) {\n before = this._input;\n current
3852
- = \"\\u00A0\";\n after = \"\";\n } else {\n before = this._input.substring(0,
3853
- this._caretPos);\n current = this._input.charAt(this._caretPos);\n after
3854
- = this._input.substring(this._caretPos + 1, this._input.length);\n }\n\n
3855
- \ this.promptDisplay.appendChild(document.createTextNode(before));\n promptCursor.appendChild(document.createTextNode(current));\n
3856
- \ this.promptDisplay.appendChild(promptCursor);\n this.promptDisplay.appendChild(document.createTextNode(after));\n};\n\nREPLConsole.prototype.writeOutput
3857
- = function(output) {\n var consoleMessage = document.createElement('pre');\n
3858
- \ consoleMessage.className = \"console-message\";\n consoleMessage.innerHTML
3859
- = escapeHTML(output);\n this.inner.appendChild(consoleMessage);\n this.newPromptBox();\n};\n\nREPLConsole.prototype.onEnterKey
3860
- = function() {\n var input = this._input;\n\n if(input != \"\" && input
3861
- !== undefined) {\n this.commandStorage.addCommand(input);\n }\n\n this.commandHandle(input);\n};\n\nREPLConsole.prototype.onNavigateHistory
3862
- = function(offset) {\n var command = this.commandStorage.navigate(offset)
3863
- || \"\";\n this.setInput(command);\n};\n\n/**\n * Handle control keys like
3864
- up, down, left, right.\n */\nREPLConsole.prototype.onKeyDown = function(ev)
3865
- {\n switch (ev.keyCode) {\n case 13:\n // Enter key\n this.onEnterKey();\n
3866
- \ ev.preventDefault();\n break;\n case 80:\n // Ctrl-P\n
3867
- \ if (! ev.ctrlKey) break;\n case 38:\n // Up arrow\n this.onNavigateHistory(-1);\n
3868
- \ ev.preventDefault();\n break;\n case 78:\n // Ctrl-N\n
3869
- \ if (! ev.ctrlKey) break;\n case 40:\n // Down arrow\n this.onNavigateHistory(1);\n
3870
- \ ev.preventDefault();\n break;\n case 37:\n // Left arrow\n
3871
- \ var caretPos = this._caretPos > 0 ? this._caretPos - 1 : this._caretPos;\n
3872
- \ this.setInput(this._input, caretPos);\n ev.preventDefault();\n
3873
- \ break;\n case 39:\n // Right arrow\n var length = this._input.length;\n
3874
- \ var caretPos = this._caretPos < length ? this._caretPos + 1 : this._caretPos;\n
3875
- \ this.setInput(this._input, caretPos);\n ev.preventDefault();\n
3876
- \ break;\n case 8:\n // Delete\n this.deleteAtCurrent();\n
3877
- \ ev.preventDefault();\n break;\n default:\n break;\n }\n\n
3878
- \ if (ev.ctrlKey || ev.metaKey) {\n // Set focus to our clipboard in case
3879
- they hit the \"v\" key\n this.clipboard.focus();\n if (ev.keyCode ==
3880
- 86) {\n // Pasting to clipboard doesn't happen immediately,\n //
3881
- so we have to wait for a while to get the pasted text.\n var _this =
3882
- this;\n setTimeout(function() {\n _this.addToInput(_this.clipboard.value);\n
3883
- \ _this.clipboard.value = \"\";\n _this.clipboard.blur();\n },
3884
- 10);\n }\n }\n\n ev.stopPropagation();\n};\n\n/**\n * Handle input key
3885
- press.\n */\nREPLConsole.prototype.onKeyPress = function(ev) {\n // Only
3886
- write to the console if it's a single key press.\n if (ev.ctrlKey || ev.metaKey)
3887
- { return; }\n var keyCode = ev.keyCode || ev.which;\n this.insertAtCurrent(String.fromCharCode(keyCode));\n
3888
- \ ev.stopPropagation();\n ev.preventDefault();\n};\n\n/**\n * Delete a character
3889
- at the current position.\n */\nREPLConsole.prototype.deleteAtCurrent = function()
3890
- {\n if (this._caretPos > 0) {\n var caretPos = this._caretPos - 1;\n var
3891
- before = this._input.substring(0, caretPos);\n var after = this._input.substring(this._caretPos,
3892
- this._input.length);\n this.setInput(before + after, caretPos);\n }\n};\n\n/**\n
3893
- * Insert a character at the current position.\n */\nREPLConsole.prototype.insertAtCurrent
3894
- = function(char) {\n var before = this._input.substring(0, this._caretPos);\n
3895
- \ var after = this._input.substring(this._caretPos, this._input.length);\n
3896
- \ this.setInput(before + char + after, this._caretPos + 1);\n};\n\nREPLConsole.prototype.scrollToBottom
3897
- = function() {\n this.inner.scrollTop = this.inner.scrollHeight;\n};\n\nwindow.REPLConsole
3898
- = REPLConsole;\n\n}).call(this);\n</script>\n\n<script type=\"text/javascript\">\n(function()
3899
- {\n var consoleDiv = document.getElementById('console');\nvar replConsole
3900
- = new REPLConsole({\n promptLabel: consoleDiv.dataset.initialPrompt,\n commandHandle:
3901
- function(line) {\n var _this = this;\n var xhr = new XMLHttpRequest();\n
3902
- \ var url = consoleDiv.dataset.remotePath;\n var params = \"input=\"
3903
- + encodeURIComponent(line);\n\n xhr.open(\"PUT\", url, true);\n xhr.setRequestHeader(\"Content-Type\",
3904
- \"application/x-www-form-urlencoded\");\n xhr.setRequestHeader(\"X-Requested-With\",
3905
- \"XMLHttpRequest\");\n xhr.send(params);\n\n xhr.onreadystatechange
3906
- = function() {\n if (xhr.readyState === 4) {\n var response =
3907
- JSON.parse(xhr.responseText);\n _this.writeOutput(response.output);\n
3908
- \ }\n }\n }\n});\n\nreplConsole.install(consoleDiv);\n\n}).call(this);\n</script>\n\n\n
3909
- \ <script type=\"text/javascript\">\n(function() {\n // Try intercept traces
3910
- links in Rails 4.2.\nvar traceFrames = document.getElementsByClassName('trace-frames');\nvar
3911
- selectedFrame, currentSource = document.getElementById('frame-source-0');\n\n//
3912
- Add click listeners for all stack frames\nfor (var i = 0; i < traceFrames.length;
3913
- i++) {\n traceFrames[i].addEventListener('click', function(e) {\n e.preventDefault();\n
3914
- \ var target = e.target;\n var frameId = target.dataset.frameId;\n\n
3915
- \ // Change the binding of the console.\n changeBinding(frameId, function()
3916
- {\n if (selectedFrame) {\n selectedFrame.className = selectedFrame.className.replace(\"selected\",
3917
- \"\");\n }\n\n target.className += \" selected\";\n selectedFrame
3918
- = target;\n });\n\n // Change the extracted source code\n changeSourceExtract(frameId);\n
3919
- \ });\n}\n\nfunction changeBinding(frameId, callback) {\n var consoleEl =
3920
- document.getElementById('console');\n if (! consoleEl) { return; }\n var
3921
- url = consoleEl.dataset.remotePath + \"/trace\";\n var params = \"frame_id=\"
3922
- + encodeURIComponent(frameId);\n var xhr = new XMLHttpRequest();\n xhr.open(\"POST\",
3923
- url, true);\n xhr.setRequestHeader(\"Content-type\", \"application/x-www-form-urlencoded\");\n
3924
- \ xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n xhr.send(params);\n
3925
- \ xhr.onreadystatechange = function() {\n if (xhr.readyState === 4) {\n
3926
- \ callback();\n }\n }\n}\n\nfunction changeSourceExtract(frameId)
3927
- {\n var el = document.getElementById('frame-source-' + frameId);\n if (currentSource
3928
- && el) {\n currentSource.className += \" hidden\";\n el.className =
3929
- el.className.replace(\" hidden\", \"\");\n currentSource = el;\n }\n}\n\n//
3930
- Push the error page body upwards the size of the console.\n//\n// While, I
3931
- wouldn't like to do that on every custom page (so I don't screw\n// user's
3932
- layouts), I think a lot of developers want to see all of the content\n// on
3933
- the default Rails error page.\n//\n// Since it's quite special as is now,
3934
- being a bit more special in the name of\n// better user experience, won't
3935
- hurt.\ndocument.addEventListener('DOMContentLoaded', function() {\n var consoleElement
3936
- = document.getElementById('console');\n var resizerElement = document.getElementById('resizer')\n
3937
- \ var containerElement = document.getElementById('container');\n\n function
3938
- setContainerElementBottomMargin(pixels) {\n containerElement.style.marginBottom
3939
- = pixels + 'px';\n }\n\n var currentConsoleElementHeight = consoleElement.offsetHeight;\n
3940
- \ setContainerElementBottomMargin(currentConsoleElementHeight);\n\n resizerElement.addEventListener('mousedown',
3941
- function(event) {\n function recordConsoleElementHeight(event) {\n resizerElement.removeEventListener('mouseup',
3942
- recordConsoleElementHeight);\n\n var currentConsoleElementHeight = consoleElement.offsetHeight;\n
3943
- \ setContainerElementBottomMargin(currentConsoleElementHeight);\n }\n\n
3944
- \ resizerElement.addEventListener('mouseup', recordConsoleElementHeight);\n
3945
- \ });\n});\n\n}).call(this);\n</script>\n\n"
3946
- http_version:
3947
- recorded_at: Fri, 19 Jun 2015 18:40:05 GMT
3948
- - request:
3949
- method: delete
3950
- uri: http://localhost:3000/annotations/foo/02%2Fc8%2F79%2F24%2F02c87924-37bb-4005-b781-573d0dab7ce4
3951
- body:
3952
- encoding: US-ASCII
3953
- string: ''
3954
- headers:
3955
- Accept:
3956
- - "*/*; q=0.5, application/xml"
3957
- Accept-Encoding:
3958
- - gzip, deflate
3959
- User-Agent:
3960
- - Ruby
3961
- response:
3962
- status:
3963
- code: 204
3964
- message: 'No Content '
3965
- headers:
3966
- X-Frame-Options:
3967
- - SAMEORIGIN
3968
- X-Xss-Protection:
3969
- - 1; mode=block
3970
- X-Content-Type-Options:
3971
- - nosniff
3972
- Location:
3973
- - http://localhost:3000/annotations?anno_root=foo
3974
- Cache-Control:
3975
- - no-cache
3976
- X-Request-Id:
3977
- - 6bfaf3c3-97a6-4354-98ea-953e3a35cc1f
3978
- X-Runtime:
3979
- - '0.157156'
3980
- Server:
3981
- - WEBrick/1.3.1 (Ruby/2.2.2/2015-04-13)
3982
- Date:
3983
- - Fri, 19 Jun 2015 18:40:05 GMT
3984
- Connection:
3985
- - Keep-Alive
3986
- Set-Cookie:
3987
- - _internal_session=WTE0Nmd1eHk5ODcvWk9aUHVMNlZtWVFXbWFVejFxa1Znb0xJRmsreWVLcG5sVFVvRWtKVHROZHVYRklheWlUazh1aThLT1VJZWMzZVZaNWo5L3UzekRBTkR6R0RGQ0FiMXM2cU16V0VMVlBSMHZ1bHl1Sk1sOWRmem1tY0p2K0d0ZzJ1bWFNNWV6V3dHZ3VWVHBndjFyd1pGWjcyUC9MK1h6WTRRa3FqQ1pJK0N0d2YvOUF1ZWs0RllqSlpuQzRXLS12Rng1SUZFR0hRaUNtWnhqWkJJQzdRPT0%3D--678c1d6e682774e1a99f470438472706913c68fd;
3988
- path=/; HttpOnly
3989
- - request_method=DELETE; path=/
3990
- body:
3991
- encoding: UTF-8
3992
- string: ''
3993
- http_version:
3994
- recorded_at: Fri, 19 Jun 2015 18:40:05 GMT
3995
- recorded_with: VCR 2.9.3