hoodoo 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (216) hide show
  1. checksums.yaml +7 -0
  2. data/bin/hoodoo +5 -0
  3. data/lib/hoodoo.rb +27 -0
  4. data/lib/hoodoo/active.rb +32 -0
  5. data/lib/hoodoo/active/active_model/uuid_validator.rb +45 -0
  6. data/lib/hoodoo/active/active_record/base.rb +81 -0
  7. data/lib/hoodoo/active/active_record/creator.rb +134 -0
  8. data/lib/hoodoo/active/active_record/dated.rb +343 -0
  9. data/lib/hoodoo/active/active_record/error_mapping.rb +351 -0
  10. data/lib/hoodoo/active/active_record/finder.rb +606 -0
  11. data/lib/hoodoo/active/active_record/search_helper.rb +189 -0
  12. data/lib/hoodoo/active/active_record/secure.rb +431 -0
  13. data/lib/hoodoo/active/active_record/support.rb +106 -0
  14. data/lib/hoodoo/active/active_record/translated.rb +87 -0
  15. data/lib/hoodoo/active/active_record/uuid.rb +80 -0
  16. data/lib/hoodoo/active/active_record/writer.rb +321 -0
  17. data/lib/hoodoo/client.rb +23 -0
  18. data/lib/hoodoo/client/augmented_array.rb +29 -0
  19. data/lib/hoodoo/client/augmented_base.rb +168 -0
  20. data/lib/hoodoo/client/augmented_hash.rb +23 -0
  21. data/lib/hoodoo/client/client.rb +354 -0
  22. data/lib/hoodoo/client/endpoint/endpoint.rb +427 -0
  23. data/lib/hoodoo/client/endpoint/endpoints/amqp.rb +180 -0
  24. data/lib/hoodoo/client/endpoint/endpoints/auto_session.rb +194 -0
  25. data/lib/hoodoo/client/endpoint/endpoints/http.rb +203 -0
  26. data/lib/hoodoo/client/endpoint/endpoints/http_based.rb +367 -0
  27. data/lib/hoodoo/client/endpoint/endpoints/not_found.rb +59 -0
  28. data/lib/hoodoo/client/headers.rb +269 -0
  29. data/lib/hoodoo/communicators.rb +23 -0
  30. data/lib/hoodoo/communicators/fast.rb +44 -0
  31. data/lib/hoodoo/communicators/pool.rb +601 -0
  32. data/lib/hoodoo/communicators/slow.rb +84 -0
  33. data/lib/hoodoo/data.rb +51 -0
  34. data/lib/hoodoo/data/resources/caller.rb +39 -0
  35. data/lib/hoodoo/data/resources/errors.rb +28 -0
  36. data/lib/hoodoo/data/resources/log.rb +31 -0
  37. data/lib/hoodoo/data/resources/session.rb +26 -0
  38. data/lib/hoodoo/data/types/error_primitive.rb +27 -0
  39. data/lib/hoodoo/data/types/permissions.rb +40 -0
  40. data/lib/hoodoo/data/types/permissions_defaults.rb +32 -0
  41. data/lib/hoodoo/data/types/permissions_full.rb +28 -0
  42. data/lib/hoodoo/data/types/permissions_resources.rb +31 -0
  43. data/lib/hoodoo/discovery.rb +20 -0
  44. data/lib/hoodoo/errors.rb +19 -0
  45. data/lib/hoodoo/errors/error_descriptions.rb +229 -0
  46. data/lib/hoodoo/errors/errors.rb +322 -0
  47. data/lib/hoodoo/generator.rb +139 -0
  48. data/lib/hoodoo/logger.rb +23 -0
  49. data/lib/hoodoo/logger/fast_writer.rb +27 -0
  50. data/lib/hoodoo/logger/flattener_mixin.rb +36 -0
  51. data/lib/hoodoo/logger/logger.rb +387 -0
  52. data/lib/hoodoo/logger/slow_writer.rb +49 -0
  53. data/lib/hoodoo/logger/writer_mixin.rb +52 -0
  54. data/lib/hoodoo/logger/writers/file_writer.rb +45 -0
  55. data/lib/hoodoo/logger/writers/log_entries_dot_com_writer.rb +64 -0
  56. data/lib/hoodoo/logger/writers/stream_writer.rb +43 -0
  57. data/lib/hoodoo/middleware.rb +33 -0
  58. data/lib/hoodoo/presenters.rb +45 -0
  59. data/lib/hoodoo/presenters/base.rb +281 -0
  60. data/lib/hoodoo/presenters/base_dsl.rb +519 -0
  61. data/lib/hoodoo/presenters/common_resource_fields.rb +31 -0
  62. data/lib/hoodoo/presenters/embedding.rb +232 -0
  63. data/lib/hoodoo/presenters/types/array.rb +118 -0
  64. data/lib/hoodoo/presenters/types/boolean.rb +26 -0
  65. data/lib/hoodoo/presenters/types/date.rb +26 -0
  66. data/lib/hoodoo/presenters/types/date_time.rb +26 -0
  67. data/lib/hoodoo/presenters/types/decimal.rb +47 -0
  68. data/lib/hoodoo/presenters/types/enum.rb +55 -0
  69. data/lib/hoodoo/presenters/types/field.rb +158 -0
  70. data/lib/hoodoo/presenters/types/float.rb +26 -0
  71. data/lib/hoodoo/presenters/types/hash.rb +361 -0
  72. data/lib/hoodoo/presenters/types/integer.rb +26 -0
  73. data/lib/hoodoo/presenters/types/object.rb +117 -0
  74. data/lib/hoodoo/presenters/types/string.rb +53 -0
  75. data/lib/hoodoo/presenters/types/tags.rb +24 -0
  76. data/lib/hoodoo/presenters/types/text.rb +26 -0
  77. data/lib/hoodoo/presenters/types/uuid.rb +54 -0
  78. data/lib/hoodoo/services.rb +34 -0
  79. data/lib/hoodoo/services/discovery/discoverers/by_consul.rb +66 -0
  80. data/lib/hoodoo/services/discovery/discoverers/by_convention.rb +173 -0
  81. data/lib/hoodoo/services/discovery/discoverers/by_drb/by_drb.rb +195 -0
  82. data/lib/hoodoo/services/discovery/discoverers/by_drb/drb_server.rb +166 -0
  83. data/lib/hoodoo/services/discovery/discoverers/by_drb/drb_server_start.rb +37 -0
  84. data/lib/hoodoo/services/discovery/discovery.rb +186 -0
  85. data/lib/hoodoo/services/discovery/results/for_amqp.rb +58 -0
  86. data/lib/hoodoo/services/discovery/results/for_http.rb +85 -0
  87. data/lib/hoodoo/services/discovery/results/for_local.rb +85 -0
  88. data/lib/hoodoo/services/discovery/results/for_remote.rb +57 -0
  89. data/lib/hoodoo/services/middleware/amqp_log_message.rb +186 -0
  90. data/lib/hoodoo/services/middleware/amqp_log_writer.rb +119 -0
  91. data/lib/hoodoo/services/middleware/endpoints/inter_resource_local.rb +130 -0
  92. data/lib/hoodoo/services/middleware/endpoints/inter_resource_remote.rb +202 -0
  93. data/lib/hoodoo/services/middleware/exception_reporting/base_reporter.rb +105 -0
  94. data/lib/hoodoo/services/middleware/exception_reporting/exception_reporting.rb +115 -0
  95. data/lib/hoodoo/services/middleware/exception_reporting/reporters/airbrake_reporter.rb +64 -0
  96. data/lib/hoodoo/services/middleware/exception_reporting/reporters/raygun_reporter.rb +63 -0
  97. data/lib/hoodoo/services/middleware/interaction.rb +127 -0
  98. data/lib/hoodoo/services/middleware/middleware.rb +2705 -0
  99. data/lib/hoodoo/services/middleware/rack_monkey_patch.rb +73 -0
  100. data/lib/hoodoo/services/services/context.rb +153 -0
  101. data/lib/hoodoo/services/services/implementation.rb +132 -0
  102. data/lib/hoodoo/services/services/interface.rb +934 -0
  103. data/lib/hoodoo/services/services/permissions.rb +250 -0
  104. data/lib/hoodoo/services/services/request.rb +189 -0
  105. data/lib/hoodoo/services/services/response.rb +316 -0
  106. data/lib/hoodoo/services/services/service.rb +141 -0
  107. data/lib/hoodoo/services/services/session.rb +729 -0
  108. data/lib/hoodoo/utilities.rb +12 -0
  109. data/lib/hoodoo/utilities/string_inquirer.rb +54 -0
  110. data/lib/hoodoo/utilities/utilities.rb +380 -0
  111. data/lib/hoodoo/utilities/uuid.rb +44 -0
  112. data/lib/hoodoo/version.rb +17 -0
  113. data/spec/active/active_record/base_spec.rb +57 -0
  114. data/spec/active/active_record/creator_spec.rb +88 -0
  115. data/spec/active/active_record/dated_spec.rb +248 -0
  116. data/spec/active/active_record/error_mapping_spec.rb +360 -0
  117. data/spec/active/active_record/finder_spec.rb +744 -0
  118. data/spec/active/active_record/search_helper_spec.rb +384 -0
  119. data/spec/active/active_record/secure_spec.rb +435 -0
  120. data/spec/active/active_record/support_spec.rb +225 -0
  121. data/spec/active/active_record/translated_spec.rb +19 -0
  122. data/spec/active/active_record/uuid_spec.rb +72 -0
  123. data/spec/active/active_record/writer_spec.rb +272 -0
  124. data/spec/alchemy/alchemy-amq.rb +33 -0
  125. data/spec/client/augmented_array_spec.rb +15 -0
  126. data/spec/client/augmented_base_spec.rb +50 -0
  127. data/spec/client/augmented_hash_spec.rb +15 -0
  128. data/spec/client/client_spec.rb +955 -0
  129. data/spec/client/endpoint/endpoint_spec.rb +70 -0
  130. data/spec/client/endpoint/endpoints/amqp_spec.rb +16 -0
  131. data/spec/client/endpoint/endpoints/auto_session_spec.rb +9 -0
  132. data/spec/client/endpoint/endpoints/http_based_spec.rb +9 -0
  133. data/spec/client/endpoint/endpoints/http_spec.rb +103 -0
  134. data/spec/client/endpoint/endpoints/not_found_spec.rb +35 -0
  135. data/spec/client/headers_spec.rb +172 -0
  136. data/spec/communicators/fast_spec.rb +9 -0
  137. data/spec/communicators/pool_spec.rb +339 -0
  138. data/spec/communicators/slow_spec.rb +15 -0
  139. data/spec/data/resources/caller_spec.rb +156 -0
  140. data/spec/data/resources/errors_spec.rb +22 -0
  141. data/spec/data/resources/log_spec.rb +20 -0
  142. data/spec/data/resources/session_spec.rb +15 -0
  143. data/spec/data/types/error_primitive_spec.rb +15 -0
  144. data/spec/data/types/permissions_defaults_spec.rb +25 -0
  145. data/spec/data/types/permissions_full_spec.rb +44 -0
  146. data/spec/data/types/permissions_resources_spec.rb +34 -0
  147. data/spec/data/types/permissions_spec.rb +37 -0
  148. data/spec/errors/error_descriptions_spec.rb +98 -0
  149. data/spec/errors/errors_spec.rb +346 -0
  150. data/spec/integration/service_actions_spec.rb +112 -0
  151. data/spec/logger/fast_writer_spec.rb +18 -0
  152. data/spec/logger/logger_spec.rb +259 -0
  153. data/spec/logger/slow_writer_spec.rb +144 -0
  154. data/spec/logger/writers/file_writer_spec.rb +37 -0
  155. data/spec/logger/writers/log_entries_dot_com_writer_spec.rb +29 -0
  156. data/spec/logger/writers/stream_writer_spec.rb +38 -0
  157. data/spec/presenters/base_dsl_spec.rb +111 -0
  158. data/spec/presenters/base_spec.rb +871 -0
  159. data/spec/presenters/common_resource_fields_spec.rb +30 -0
  160. data/spec/presenters/embedding_spec.rb +87 -0
  161. data/spec/presenters/types/array_spec.rb +249 -0
  162. data/spec/presenters/types/boolean_spec.rb +51 -0
  163. data/spec/presenters/types/date_spec.rb +57 -0
  164. data/spec/presenters/types/date_time_spec.rb +59 -0
  165. data/spec/presenters/types/decimal_spec.rb +58 -0
  166. data/spec/presenters/types/enum_spec.rb +71 -0
  167. data/spec/presenters/types/field_spec.rb +77 -0
  168. data/spec/presenters/types/float_spec.rb +50 -0
  169. data/spec/presenters/types/hash_spec.rb +1069 -0
  170. data/spec/presenters/types/integer_spec.rb +50 -0
  171. data/spec/presenters/types/object_spec.rb +177 -0
  172. data/spec/presenters/types/string_spec.rb +65 -0
  173. data/spec/presenters/types/tags_spec.rb +56 -0
  174. data/spec/presenters/types/text_spec.rb +50 -0
  175. data/spec/presenters/types/uuid_spec.rb +46 -0
  176. data/spec/presenters/walk_spec.rb +198 -0
  177. data/spec/services/discovery/discoverers/by_consul_spec.rb +29 -0
  178. data/spec/services/discovery/discoverers/by_convention_spec.rb +67 -0
  179. data/spec/services/discovery/discoverers/by_drb/by_drb_spec.rb +80 -0
  180. data/spec/services/discovery/discoverers/by_drb/drb_server_spec.rb +205 -0
  181. data/spec/services/discovery/discovery_spec.rb +73 -0
  182. data/spec/services/discovery/results/for_amqp_spec.rb +17 -0
  183. data/spec/services/discovery/results/for_http_spec.rb +37 -0
  184. data/spec/services/discovery/results/for_local_spec.rb +21 -0
  185. data/spec/services/discovery/results/for_remote_spec.rb +15 -0
  186. data/spec/services/middleware/amqp_log_message_spec.rb +60 -0
  187. data/spec/services/middleware/amqp_log_writer_spec.rb +95 -0
  188. data/spec/services/middleware/endpoints/inter_resource_local_spec.rb +9 -0
  189. data/spec/services/middleware/endpoints/inter_resource_remote_spec.rb +9 -0
  190. data/spec/services/middleware/exception_reporting/base_reporter_spec.rb +16 -0
  191. data/spec/services/middleware/exception_reporting/exception_reporting_spec.rb +92 -0
  192. data/spec/services/middleware/exception_reporting/reporters/airbrake_reporter_spec.rb +24 -0
  193. data/spec/services/middleware/exception_reporting/reporters/raygun_reporter_spec.rb +23 -0
  194. data/spec/services/middleware/middleware_cors_spec.rb +93 -0
  195. data/spec/services/middleware/middleware_create_update_spec.rb +489 -0
  196. data/spec/services/middleware/middleware_dated_at_spec.rb +186 -0
  197. data/spec/services/middleware/middleware_exotic_communication_spec.rb +560 -0
  198. data/spec/services/middleware/middleware_logging_spec.rb +356 -0
  199. data/spec/services/middleware/middleware_multi_local_spec.rb +1094 -0
  200. data/spec/services/middleware/middleware_multi_remote_spec.rb +1440 -0
  201. data/spec/services/middleware/middleware_permissions_spec.rb +1014 -0
  202. data/spec/services/middleware/middleware_public_spec.rb +238 -0
  203. data/spec/services/middleware/middleware_spec.rb +1569 -0
  204. data/spec/services/middleware/string_inquirer_spec.rb +30 -0
  205. data/spec/services/services/application_spec.rb +74 -0
  206. data/spec/services/services/context_spec.rb +48 -0
  207. data/spec/services/services/implementation_spec.rb +45 -0
  208. data/spec/services/services/interface_spec.rb +262 -0
  209. data/spec/services/services/permissions_spec.rb +249 -0
  210. data/spec/services/services/request_spec.rb +95 -0
  211. data/spec/services/services/response_spec.rb +250 -0
  212. data/spec/services/services/session_spec.rb +432 -0
  213. data/spec/spec_helper.rb +298 -0
  214. data/spec/utilities/utilities_spec.rb +537 -0
  215. data/spec/utilities/uuid_spec.rb +20 -0
  216. metadata +615 -0
@@ -0,0 +1,84 @@
1
+ ########################################################################
2
+ # File:: s;pw.rb
3
+ # (C):: Loyalty New Zealand 2014
4
+ #
5
+ # Purpose:: A slow communication-orientated object intended to be called
6
+ # asynchronously via Hoodoo::Communicators::Pool.
7
+ # ----------------------------------------------------------------------
8
+ # 15-Dec-2014 (ADH): Created.
9
+ ########################################################################
10
+
11
+ module Hoodoo
12
+ module Communicators
13
+
14
+ # See Hoodoo::Communicators::Pool for details.
15
+ #
16
+ # A "slow communicator". Subclass this to create a class where instances
17
+ # are invoked via Hoodoo::Communicators::Slow#communicate with some
18
+ # parameter and, in response, they talk to some other piece of software to
19
+ # communicate information related to that parameter. The communication is
20
+ # expected to be slow and might involve blocking I/O network calls. An
21
+ # instance of the class is called from a Thread with this in mind.
22
+ #
23
+ # If you expect your communicator subclass to always perform very quickly,
24
+ # the Thread will introduce overhead that may actually slow down overall
25
+ # system performance. Avoid this by creating a subclass of
26
+ # Hoodoo::Communicators::Fast instead.
27
+ #
28
+ # Example: A communicator might be part of a logging scheme which talks to
29
+ # a network-based third party logging service. The parameter it expects
30
+ # would be a log message string.
31
+ #
32
+ # *IMPORTANT*: If you use ActiveRecord in a slow communicator class, beware
33
+ # that your writer runs in a ruby Thread. Unless you take steps to prevent
34
+ # it, ActiveRecord will implicitly check out a connection which stays with
35
+ # your Thread forever. This steals a connection from the pool. To prevent
36
+ # this issue, you must use the following pattern:
37
+ #
38
+ # def communicate( object )
39
+ # ActiveRecord::Base.connection_pool.with_connection do
40
+ # # ...Any AciveRecord code goes here...
41
+ # end
42
+ # end
43
+ #
44
+ # Code within the +with_connection+ block uses a temporary connection from
45
+ # the pool which is returned once the block has finished processing. Even
46
+ # if exceptions occur within your ActiveRecord code, the connection is
47
+ # still correctly returned to the pool using the above approach.
48
+ #
49
+ class Slow
50
+
51
+ # Communicate (possibly slowly) with the piece of external software for
52
+ # which your subclass is designed. Subclasses _must_ implement this
53
+ # method. There is no need to call +super+ in your implementation.
54
+ #
55
+ # If a slow communicator can't keep up with the incoming message rate,
56
+ # messages may be dropped. Implement #dropped if you want to detect this
57
+ # condition.
58
+ #
59
+ # +object+:: Parameter sent by the communication pool, in response to
60
+ # someone calling Hoodoo::Communicators::Pool#communicate
61
+ # with that value.
62
+ #
63
+ def communicate( object )
64
+ raise( 'Subclasses must implement #communicate' )
65
+ end
66
+
67
+ # This method is called _before_ #communicate if messages have been
68
+ # dropped prior to the one which #communicate is about to report. Should
69
+ # you care, your subclass can implement this method and take whatever
70
+ # action it wants (e.g. log that messages were discarded).
71
+ #
72
+ # The default implementation does nothing; there is no need to call
73
+ # +super+ in custom implementations.
74
+ #
75
+ # +count+:: Number of messages dropped between the previous call to
76
+ # #communicate and the call which is about to be made.
77
+ #
78
+ def dropped( count )
79
+ # This Implementation Intentionally Left Blank
80
+ end
81
+
82
+ end
83
+ end
84
+ end
@@ -0,0 +1,51 @@
1
+ ########################################################################
2
+ # File:: data.rb
3
+ # (C):: Loyalty New Zealand 2014
4
+ #
5
+ # Purpose:: Include common Type and Resource definitions.
6
+ # ----------------------------------------------------------------------
7
+ # 26-Jan-2015 (ADH): Split from top-level inclusion file.
8
+ ########################################################################
9
+
10
+ module Hoodoo
11
+
12
+ # This module provides a namespace for definitions of data types and
13
+ # formal resources which an API uses and implements through its various
14
+ # supporting services.
15
+ #
16
+ module Data
17
+
18
+ # Module used as a namespace to collect classes that represent
19
+ # Resources documented by the your platform's API. Each is an
20
+ # Hoodoo::Presenters::Base subclass, so can be used to render
21
+ # and validate JSON data.
22
+ #
23
+ module Resources
24
+ end
25
+
26
+ # Module used as a namespace to collect classes that represent
27
+ # Types documented by your platform's API. Each is an
28
+ # Hoodoo::Presenters::Base subclass, so can be used to render
29
+ # and validate JSON data.
30
+ #
31
+ module Types
32
+ end
33
+ end
34
+ end
35
+
36
+ # Dependencies
37
+
38
+ require 'hoodoo/presenters'
39
+
40
+ # Ordering matters, due to dependencies where one type references another
41
+
42
+ require 'hoodoo/data/types/error_primitive'
43
+ require 'hoodoo/data/types/permissions'
44
+ require 'hoodoo/data/types/permissions_defaults'
45
+ require 'hoodoo/data/types/permissions_resources'
46
+ require 'hoodoo/data/types/permissions_full'
47
+
48
+ require 'hoodoo/data/resources/caller'
49
+ require 'hoodoo/data/resources/errors'
50
+ require 'hoodoo/data/resources/log'
51
+ require 'hoodoo/data/resources/session'
@@ -0,0 +1,39 @@
1
+ ########################################################################
2
+ # File:: caller.rb
3
+ # (C):: Loyalty New Zealand 2015
4
+ #
5
+ # Purpose:: Define documented Platform API Resource 'Caller'.
6
+ # ----------------------------------------------------------------------
7
+ # 30-Jan-2015 (RJS): Created.
8
+ ########################################################################
9
+
10
+ module Hoodoo
11
+ module Data
12
+ module Resources
13
+
14
+ # Documented Platform API Resource 'Caller'.
15
+ #
16
+ class Caller < Hoodoo::Presenters::Base
17
+
18
+ schema do
19
+ internationalised
20
+
21
+ text :authentication_secret
22
+ text :name
23
+
24
+ hash :identity, :required => true do
25
+ end
26
+
27
+ object :permissions, :required => true do
28
+ type :PermissionsResources, :required => true
29
+ end
30
+
31
+ hash :scoping, :required => true do
32
+ end
33
+
34
+ end
35
+
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,28 @@
1
+ ########################################################################
2
+ # File:: errors.rb
3
+ # (C):: Loyalty New Zealand 2014
4
+ #
5
+ # Purpose:: Define documented Platform API Resource 'Errors'.
6
+ # ----------------------------------------------------------------------
7
+ # 23-Sep-2014 (ADH): Created.
8
+ ########################################################################
9
+
10
+ module Hoodoo
11
+ module Data
12
+ module Resources
13
+
14
+ # Documented Platform API Resource 'Errors'.
15
+ #
16
+ class Errors < Hoodoo::Presenters::Base
17
+
18
+ schema do
19
+ uuid :interaction_id
20
+ array :errors, :required => true do
21
+ type :ErrorPrimitive
22
+ end
23
+ end
24
+
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,31 @@
1
+ ########################################################################
2
+ # File:: log.rb
3
+ # (C):: Loyalty New Zealand 2014
4
+ #
5
+ # Purpose:: Define documented Platform API Resource 'Log'.
6
+ # ----------------------------------------------------------------------
7
+ # 25-Nov-2014 (ADH): Created.
8
+ # 01-Dec-2014 (ADH): Renamed resource from LogEntry to Log.
9
+ ########################################################################
10
+
11
+ module Hoodoo
12
+ module Data
13
+ module Resources
14
+
15
+ # Documented Platform API Resource 'Log'.
16
+ #
17
+ class Log < Hoodoo::Presenters::Base
18
+
19
+ schema do
20
+ text :level, :required => true
21
+ text :component, :required => true
22
+ text :code, :required => true
23
+
24
+ uuid :interaction_id
25
+ hash :data
26
+ end
27
+
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,26 @@
1
+ ########################################################################
2
+ # File:: session.rb
3
+ # (C):: Loyalty New Zealand 2015
4
+ #
5
+ # Purpose:: Define documented Platform API Resource 'Session'.
6
+ # ----------------------------------------------------------------------
7
+ # 30-Jan-2015 (RJS): Created.
8
+ ########################################################################
9
+
10
+ module Hoodoo
11
+ module Data
12
+ module Resources
13
+
14
+ # Documented Platform API Resource 'Session'.
15
+ #
16
+ class Session < Hoodoo::Presenters::Base
17
+
18
+ schema do
19
+ uuid :caller_id, :required => true, :resource => :Caller
20
+ datetime :expires_at, :required => true
21
+ end
22
+
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,27 @@
1
+ ########################################################################
2
+ # File:: error_primitive.rb
3
+ # (C):: Loyalty New Zealand 2014
4
+ #
5
+ # Purpose:: Define documented Platform API Type 'ErrorPrimitive'.
6
+ # ----------------------------------------------------------------------
7
+ # 22-Sep-2014 (ADH): Created.
8
+ ########################################################################
9
+
10
+ module Hoodoo
11
+ module Data
12
+ module Types
13
+
14
+ # Documented Platform API Type 'ErrorPrimitive'.
15
+ #
16
+ class ErrorPrimitive < Hoodoo::Presenters::Base
17
+
18
+ schema do
19
+ text :code, :required => true
20
+ text :message, :required => true
21
+ text :reference
22
+ end
23
+
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,40 @@
1
+ ########################################################################
2
+ # File:: permissions.rb
3
+ # (C):: Loyalty New Zealand 2015
4
+ #
5
+ # Purpose:: Define documented Platform API Type 'Permissions'.
6
+ # ----------------------------------------------------------------------
7
+ # 02-Feb-2015 (RJS): Created.
8
+ ########################################################################
9
+
10
+ require 'hoodoo/services/middleware/middleware'
11
+ require 'hoodoo/services/services/permissions'
12
+
13
+ module Hoodoo
14
+ module Data
15
+ module Types
16
+
17
+ # Documented Platform API Type 'Permissions'.
18
+ #
19
+ class Permissions < Hoodoo::Presenters::Base
20
+
21
+ schema do
22
+
23
+ object :actions do
24
+ Hoodoo::Services::Middleware::ALLOWED_ACTIONS.each do | action |
25
+ enum action,
26
+ :from => Hoodoo::Services::Permissions::ALLOWED_POLICIES,
27
+ :required => false
28
+ end
29
+ end
30
+
31
+ enum :else,
32
+ :from => Hoodoo::Services::Permissions::ALLOWED_POLICIES,
33
+ :required => false
34
+
35
+ end
36
+
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,32 @@
1
+ ########################################################################
2
+ # File:: permissions_defaults.rb
3
+ # (C):: Loyalty New Zealand 2015
4
+ #
5
+ # Purpose:: Define utility Type 'PermissionsDefaults'.
6
+ # ----------------------------------------------------------------------
7
+ # 02-Feb-2015 (RJS): Created.
8
+ ########################################################################
9
+
10
+ require 'hoodoo/services/services/permissions'
11
+
12
+ module Hoodoo
13
+ module Data
14
+ module Types
15
+
16
+ # Documented Platform API Type 'PermissionsDefaults'.
17
+ #
18
+ class PermissionsDefaults < Hoodoo::Presenters::Base
19
+
20
+ schema do
21
+
22
+ object :default,
23
+ :default => { 'else' => Hoodoo::Services::Permissions::DENY } do
24
+ type :Permissions
25
+ end
26
+
27
+ end
28
+
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,28 @@
1
+ ########################################################################
2
+ # File:: permissions_full.rb
3
+ # (C):: Loyalty New Zealand 2015
4
+ #
5
+ # Purpose:: Define utility Type 'PermissionsFull'.
6
+ # ----------------------------------------------------------------------
7
+ # 02-Feb-2015 (RJS): Created.
8
+ ########################################################################
9
+
10
+ module Hoodoo
11
+ module Data
12
+ module Types
13
+
14
+ # Documented Platform API Type 'PermissionsFull'.
15
+ #
16
+ class PermissionsFull < Hoodoo::Presenters::Base
17
+
18
+ schema do
19
+
20
+ type :PermissionsResources
21
+ type :PermissionsDefaults
22
+
23
+ end
24
+
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,31 @@
1
+ ########################################################################
2
+ # File:: permissions_resources.rb
3
+ # (C):: Loyalty New Zealand 2015
4
+ #
5
+ # Purpose:: Define documented Platform API Type 'PermissionsResources'.
6
+ # ----------------------------------------------------------------------
7
+ # 30-Jan-2015 (RJS): Created.
8
+ ########################################################################
9
+
10
+ module Hoodoo
11
+ module Data
12
+ module Types
13
+
14
+ # Documented Platform API Type 'PermissionsResources'.
15
+ #
16
+ class PermissionsResources < Hoodoo::Presenters::Base
17
+
18
+ schema do
19
+
20
+ hash :resources, :required => true do
21
+ keys do
22
+ type :Permissions
23
+ end
24
+ end
25
+
26
+ end
27
+
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,20 @@
1
+ ########################################################################
2
+ # File:: discovery.rb
3
+ # (C):: Loyalty New Zealand 2014
4
+ #
5
+ # Purpose:: Include code that helps with finding resource endpoints.
6
+ # ----------------------------------------------------------------------
7
+ # 02-Mar-2015 (ADH): Created
8
+ ########################################################################
9
+
10
+ require 'hoodoo/services/discovery/discovery'
11
+
12
+ require 'hoodoo/services/discovery/results/for_http'
13
+ require 'hoodoo/services/discovery/results/for_amqp'
14
+ require 'hoodoo/services/discovery/results/for_local'
15
+ require 'hoodoo/services/discovery/results/for_remote'
16
+
17
+ require 'hoodoo/services/discovery/discoverers/by_convention'
18
+ require 'hoodoo/services/discovery/discoverers/by_consul'
19
+ require 'hoodoo/services/discovery/discoverers/by_drb/drb_server'
20
+ require 'hoodoo/services/discovery/discoverers/by_drb/by_drb'