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.
- checksums.yaml +7 -0
- data/bin/hoodoo +5 -0
- data/lib/hoodoo.rb +27 -0
- data/lib/hoodoo/active.rb +32 -0
- data/lib/hoodoo/active/active_model/uuid_validator.rb +45 -0
- data/lib/hoodoo/active/active_record/base.rb +81 -0
- data/lib/hoodoo/active/active_record/creator.rb +134 -0
- data/lib/hoodoo/active/active_record/dated.rb +343 -0
- data/lib/hoodoo/active/active_record/error_mapping.rb +351 -0
- data/lib/hoodoo/active/active_record/finder.rb +606 -0
- data/lib/hoodoo/active/active_record/search_helper.rb +189 -0
- data/lib/hoodoo/active/active_record/secure.rb +431 -0
- data/lib/hoodoo/active/active_record/support.rb +106 -0
- data/lib/hoodoo/active/active_record/translated.rb +87 -0
- data/lib/hoodoo/active/active_record/uuid.rb +80 -0
- data/lib/hoodoo/active/active_record/writer.rb +321 -0
- data/lib/hoodoo/client.rb +23 -0
- data/lib/hoodoo/client/augmented_array.rb +29 -0
- data/lib/hoodoo/client/augmented_base.rb +168 -0
- data/lib/hoodoo/client/augmented_hash.rb +23 -0
- data/lib/hoodoo/client/client.rb +354 -0
- data/lib/hoodoo/client/endpoint/endpoint.rb +427 -0
- data/lib/hoodoo/client/endpoint/endpoints/amqp.rb +180 -0
- data/lib/hoodoo/client/endpoint/endpoints/auto_session.rb +194 -0
- data/lib/hoodoo/client/endpoint/endpoints/http.rb +203 -0
- data/lib/hoodoo/client/endpoint/endpoints/http_based.rb +367 -0
- data/lib/hoodoo/client/endpoint/endpoints/not_found.rb +59 -0
- data/lib/hoodoo/client/headers.rb +269 -0
- data/lib/hoodoo/communicators.rb +23 -0
- data/lib/hoodoo/communicators/fast.rb +44 -0
- data/lib/hoodoo/communicators/pool.rb +601 -0
- data/lib/hoodoo/communicators/slow.rb +84 -0
- data/lib/hoodoo/data.rb +51 -0
- data/lib/hoodoo/data/resources/caller.rb +39 -0
- data/lib/hoodoo/data/resources/errors.rb +28 -0
- data/lib/hoodoo/data/resources/log.rb +31 -0
- data/lib/hoodoo/data/resources/session.rb +26 -0
- data/lib/hoodoo/data/types/error_primitive.rb +27 -0
- data/lib/hoodoo/data/types/permissions.rb +40 -0
- data/lib/hoodoo/data/types/permissions_defaults.rb +32 -0
- data/lib/hoodoo/data/types/permissions_full.rb +28 -0
- data/lib/hoodoo/data/types/permissions_resources.rb +31 -0
- data/lib/hoodoo/discovery.rb +20 -0
- data/lib/hoodoo/errors.rb +19 -0
- data/lib/hoodoo/errors/error_descriptions.rb +229 -0
- data/lib/hoodoo/errors/errors.rb +322 -0
- data/lib/hoodoo/generator.rb +139 -0
- data/lib/hoodoo/logger.rb +23 -0
- data/lib/hoodoo/logger/fast_writer.rb +27 -0
- data/lib/hoodoo/logger/flattener_mixin.rb +36 -0
- data/lib/hoodoo/logger/logger.rb +387 -0
- data/lib/hoodoo/logger/slow_writer.rb +49 -0
- data/lib/hoodoo/logger/writer_mixin.rb +52 -0
- data/lib/hoodoo/logger/writers/file_writer.rb +45 -0
- data/lib/hoodoo/logger/writers/log_entries_dot_com_writer.rb +64 -0
- data/lib/hoodoo/logger/writers/stream_writer.rb +43 -0
- data/lib/hoodoo/middleware.rb +33 -0
- data/lib/hoodoo/presenters.rb +45 -0
- data/lib/hoodoo/presenters/base.rb +281 -0
- data/lib/hoodoo/presenters/base_dsl.rb +519 -0
- data/lib/hoodoo/presenters/common_resource_fields.rb +31 -0
- data/lib/hoodoo/presenters/embedding.rb +232 -0
- data/lib/hoodoo/presenters/types/array.rb +118 -0
- data/lib/hoodoo/presenters/types/boolean.rb +26 -0
- data/lib/hoodoo/presenters/types/date.rb +26 -0
- data/lib/hoodoo/presenters/types/date_time.rb +26 -0
- data/lib/hoodoo/presenters/types/decimal.rb +47 -0
- data/lib/hoodoo/presenters/types/enum.rb +55 -0
- data/lib/hoodoo/presenters/types/field.rb +158 -0
- data/lib/hoodoo/presenters/types/float.rb +26 -0
- data/lib/hoodoo/presenters/types/hash.rb +361 -0
- data/lib/hoodoo/presenters/types/integer.rb +26 -0
- data/lib/hoodoo/presenters/types/object.rb +117 -0
- data/lib/hoodoo/presenters/types/string.rb +53 -0
- data/lib/hoodoo/presenters/types/tags.rb +24 -0
- data/lib/hoodoo/presenters/types/text.rb +26 -0
- data/lib/hoodoo/presenters/types/uuid.rb +54 -0
- data/lib/hoodoo/services.rb +34 -0
- data/lib/hoodoo/services/discovery/discoverers/by_consul.rb +66 -0
- data/lib/hoodoo/services/discovery/discoverers/by_convention.rb +173 -0
- data/lib/hoodoo/services/discovery/discoverers/by_drb/by_drb.rb +195 -0
- data/lib/hoodoo/services/discovery/discoverers/by_drb/drb_server.rb +166 -0
- data/lib/hoodoo/services/discovery/discoverers/by_drb/drb_server_start.rb +37 -0
- data/lib/hoodoo/services/discovery/discovery.rb +186 -0
- data/lib/hoodoo/services/discovery/results/for_amqp.rb +58 -0
- data/lib/hoodoo/services/discovery/results/for_http.rb +85 -0
- data/lib/hoodoo/services/discovery/results/for_local.rb +85 -0
- data/lib/hoodoo/services/discovery/results/for_remote.rb +57 -0
- data/lib/hoodoo/services/middleware/amqp_log_message.rb +186 -0
- data/lib/hoodoo/services/middleware/amqp_log_writer.rb +119 -0
- data/lib/hoodoo/services/middleware/endpoints/inter_resource_local.rb +130 -0
- data/lib/hoodoo/services/middleware/endpoints/inter_resource_remote.rb +202 -0
- data/lib/hoodoo/services/middleware/exception_reporting/base_reporter.rb +105 -0
- data/lib/hoodoo/services/middleware/exception_reporting/exception_reporting.rb +115 -0
- data/lib/hoodoo/services/middleware/exception_reporting/reporters/airbrake_reporter.rb +64 -0
- data/lib/hoodoo/services/middleware/exception_reporting/reporters/raygun_reporter.rb +63 -0
- data/lib/hoodoo/services/middleware/interaction.rb +127 -0
- data/lib/hoodoo/services/middleware/middleware.rb +2705 -0
- data/lib/hoodoo/services/middleware/rack_monkey_patch.rb +73 -0
- data/lib/hoodoo/services/services/context.rb +153 -0
- data/lib/hoodoo/services/services/implementation.rb +132 -0
- data/lib/hoodoo/services/services/interface.rb +934 -0
- data/lib/hoodoo/services/services/permissions.rb +250 -0
- data/lib/hoodoo/services/services/request.rb +189 -0
- data/lib/hoodoo/services/services/response.rb +316 -0
- data/lib/hoodoo/services/services/service.rb +141 -0
- data/lib/hoodoo/services/services/session.rb +729 -0
- data/lib/hoodoo/utilities.rb +12 -0
- data/lib/hoodoo/utilities/string_inquirer.rb +54 -0
- data/lib/hoodoo/utilities/utilities.rb +380 -0
- data/lib/hoodoo/utilities/uuid.rb +44 -0
- data/lib/hoodoo/version.rb +17 -0
- data/spec/active/active_record/base_spec.rb +57 -0
- data/spec/active/active_record/creator_spec.rb +88 -0
- data/spec/active/active_record/dated_spec.rb +248 -0
- data/spec/active/active_record/error_mapping_spec.rb +360 -0
- data/spec/active/active_record/finder_spec.rb +744 -0
- data/spec/active/active_record/search_helper_spec.rb +384 -0
- data/spec/active/active_record/secure_spec.rb +435 -0
- data/spec/active/active_record/support_spec.rb +225 -0
- data/spec/active/active_record/translated_spec.rb +19 -0
- data/spec/active/active_record/uuid_spec.rb +72 -0
- data/spec/active/active_record/writer_spec.rb +272 -0
- data/spec/alchemy/alchemy-amq.rb +33 -0
- data/spec/client/augmented_array_spec.rb +15 -0
- data/spec/client/augmented_base_spec.rb +50 -0
- data/spec/client/augmented_hash_spec.rb +15 -0
- data/spec/client/client_spec.rb +955 -0
- data/spec/client/endpoint/endpoint_spec.rb +70 -0
- data/spec/client/endpoint/endpoints/amqp_spec.rb +16 -0
- data/spec/client/endpoint/endpoints/auto_session_spec.rb +9 -0
- data/spec/client/endpoint/endpoints/http_based_spec.rb +9 -0
- data/spec/client/endpoint/endpoints/http_spec.rb +103 -0
- data/spec/client/endpoint/endpoints/not_found_spec.rb +35 -0
- data/spec/client/headers_spec.rb +172 -0
- data/spec/communicators/fast_spec.rb +9 -0
- data/spec/communicators/pool_spec.rb +339 -0
- data/spec/communicators/slow_spec.rb +15 -0
- data/spec/data/resources/caller_spec.rb +156 -0
- data/spec/data/resources/errors_spec.rb +22 -0
- data/spec/data/resources/log_spec.rb +20 -0
- data/spec/data/resources/session_spec.rb +15 -0
- data/spec/data/types/error_primitive_spec.rb +15 -0
- data/spec/data/types/permissions_defaults_spec.rb +25 -0
- data/spec/data/types/permissions_full_spec.rb +44 -0
- data/spec/data/types/permissions_resources_spec.rb +34 -0
- data/spec/data/types/permissions_spec.rb +37 -0
- data/spec/errors/error_descriptions_spec.rb +98 -0
- data/spec/errors/errors_spec.rb +346 -0
- data/spec/integration/service_actions_spec.rb +112 -0
- data/spec/logger/fast_writer_spec.rb +18 -0
- data/spec/logger/logger_spec.rb +259 -0
- data/spec/logger/slow_writer_spec.rb +144 -0
- data/spec/logger/writers/file_writer_spec.rb +37 -0
- data/spec/logger/writers/log_entries_dot_com_writer_spec.rb +29 -0
- data/spec/logger/writers/stream_writer_spec.rb +38 -0
- data/spec/presenters/base_dsl_spec.rb +111 -0
- data/spec/presenters/base_spec.rb +871 -0
- data/spec/presenters/common_resource_fields_spec.rb +30 -0
- data/spec/presenters/embedding_spec.rb +87 -0
- data/spec/presenters/types/array_spec.rb +249 -0
- data/spec/presenters/types/boolean_spec.rb +51 -0
- data/spec/presenters/types/date_spec.rb +57 -0
- data/spec/presenters/types/date_time_spec.rb +59 -0
- data/spec/presenters/types/decimal_spec.rb +58 -0
- data/spec/presenters/types/enum_spec.rb +71 -0
- data/spec/presenters/types/field_spec.rb +77 -0
- data/spec/presenters/types/float_spec.rb +50 -0
- data/spec/presenters/types/hash_spec.rb +1069 -0
- data/spec/presenters/types/integer_spec.rb +50 -0
- data/spec/presenters/types/object_spec.rb +177 -0
- data/spec/presenters/types/string_spec.rb +65 -0
- data/spec/presenters/types/tags_spec.rb +56 -0
- data/spec/presenters/types/text_spec.rb +50 -0
- data/spec/presenters/types/uuid_spec.rb +46 -0
- data/spec/presenters/walk_spec.rb +198 -0
- data/spec/services/discovery/discoverers/by_consul_spec.rb +29 -0
- data/spec/services/discovery/discoverers/by_convention_spec.rb +67 -0
- data/spec/services/discovery/discoverers/by_drb/by_drb_spec.rb +80 -0
- data/spec/services/discovery/discoverers/by_drb/drb_server_spec.rb +205 -0
- data/spec/services/discovery/discovery_spec.rb +73 -0
- data/spec/services/discovery/results/for_amqp_spec.rb +17 -0
- data/spec/services/discovery/results/for_http_spec.rb +37 -0
- data/spec/services/discovery/results/for_local_spec.rb +21 -0
- data/spec/services/discovery/results/for_remote_spec.rb +15 -0
- data/spec/services/middleware/amqp_log_message_spec.rb +60 -0
- data/spec/services/middleware/amqp_log_writer_spec.rb +95 -0
- data/spec/services/middleware/endpoints/inter_resource_local_spec.rb +9 -0
- data/spec/services/middleware/endpoints/inter_resource_remote_spec.rb +9 -0
- data/spec/services/middleware/exception_reporting/base_reporter_spec.rb +16 -0
- data/spec/services/middleware/exception_reporting/exception_reporting_spec.rb +92 -0
- data/spec/services/middleware/exception_reporting/reporters/airbrake_reporter_spec.rb +24 -0
- data/spec/services/middleware/exception_reporting/reporters/raygun_reporter_spec.rb +23 -0
- data/spec/services/middleware/middleware_cors_spec.rb +93 -0
- data/spec/services/middleware/middleware_create_update_spec.rb +489 -0
- data/spec/services/middleware/middleware_dated_at_spec.rb +186 -0
- data/spec/services/middleware/middleware_exotic_communication_spec.rb +560 -0
- data/spec/services/middleware/middleware_logging_spec.rb +356 -0
- data/spec/services/middleware/middleware_multi_local_spec.rb +1094 -0
- data/spec/services/middleware/middleware_multi_remote_spec.rb +1440 -0
- data/spec/services/middleware/middleware_permissions_spec.rb +1014 -0
- data/spec/services/middleware/middleware_public_spec.rb +238 -0
- data/spec/services/middleware/middleware_spec.rb +1569 -0
- data/spec/services/middleware/string_inquirer_spec.rb +30 -0
- data/spec/services/services/application_spec.rb +74 -0
- data/spec/services/services/context_spec.rb +48 -0
- data/spec/services/services/implementation_spec.rb +45 -0
- data/spec/services/services/interface_spec.rb +262 -0
- data/spec/services/services/permissions_spec.rb +249 -0
- data/spec/services/services/request_spec.rb +95 -0
- data/spec/services/services/response_spec.rb +250 -0
- data/spec/services/services/session_spec.rb +432 -0
- data/spec/spec_helper.rb +298 -0
- data/spec/utilities/utilities_spec.rb +537 -0
- data/spec/utilities/uuid_spec.rb +20 -0
- 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
|
data/lib/hoodoo/data.rb
ADDED
@@ -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'
|