hoodoo 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
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'