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