rsmp_schema 0.2.3 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/README.md +3 -3
- data/examples/validate.rb +1 -1
- data/lib/rsmp_schema/convert/export/json_schema.rb +1 -1
- data/lib/rsmp_schema/schema.rb +32 -12
- data/lib/rsmp_schema/version.rb +1 -1
- data/schemas/core/3.2/rsmp.json +2 -2
- data/schemas/core/3.2/status_response.json +30 -0
- data/schemas/core/3.2/status_update.json +30 -0
- data/schemas/tlc/1.0.10/{sxl.json → rsmp.json} +0 -0
- data/schemas/tlc/1.0.13/{sxl.json → rsmp.json} +0 -0
- data/schemas/tlc/1.0.14/{sxl.json → rsmp.json} +0 -0
- data/schemas/tlc/1.0.15/{sxl.json → rsmp.json} +0 -0
- data/schemas/tlc/1.0.7/{sxl.json → rsmp.json} +0 -0
- data/schemas/tlc/1.0.8/{sxl.json → rsmp.json} +0 -0
- data/schemas/tlc/1.0.9/{sxl.json → rsmp.json} +0 -0
- data/schemas/tlc/1.1/{sxl.json → rsmp.json} +0 -0
- metadata +12 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 575a89e29f57a294f101abea73f59c22c43d4156ad3b700f5c71bbda7dcbe79b
|
4
|
+
data.tar.gz: 2887c0c2f4ccb51ae60f41dfd499035d136317fd5086255c14f26a255d26b365
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 02b3e8b39f2eb04775a6c723bb9b6cffd5e2ab66e987ee77b16c5cfb895a47cf201c1efc557f0a2b90b7e035b8483905f08624999643bcaf823c1614dbefbceb
|
7
|
+
data.tar.gz: 99df31b79fe0b7f74f60b441d47d43ad6e8a2ca756907ec0d5f9a61783e5bb3ce4016aa448a731c5825714ea6eae4e62a0fe5e8c9cd684c1ffcce8796c4cb14a
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -13,14 +13,14 @@ The schema consists of a core schema shared by all equipment types, and an SXL s
|
|
13
13
|
|
14
14
|
Both core and SXL schemas exist in different version, for validation agaist a particular version of the spec.
|
15
15
|
|
16
|
-
For example, to validate against the SXL for Trafic Light Controllers (TLCs), version 1.0.15, use the file schemas/tcl/1.0.15/
|
16
|
+
For example, to validate against the SXL for Trafic Light Controllers (TLCs), version 1.0.15, use the file schemas/tcl/1.0.15/rsmp.json.
|
17
17
|
|
18
18
|
Depending on the message type, relevant JSON Schema elements will be included to validate the detailed parameters, arguments, etc.
|
19
19
|
|
20
20
|
For example, validating a CommandRequest M0001 message will include these parts:
|
21
21
|
|
22
22
|
```
|
23
|
-
|
23
|
+
rsmp.json
|
24
24
|
commands.json
|
25
25
|
M0001.json
|
26
26
|
```
|
@@ -52,7 +52,7 @@ message = {
|
|
52
52
|
}
|
53
53
|
|
54
54
|
# try validating a message against our schema
|
55
|
-
schema = Pathname.new('schemas/tlc/1.1/
|
55
|
+
schema = Pathname.new('schemas/tlc/1.1/rsmp.json')
|
56
56
|
schemer = JSONSchemer.schema(schema)
|
57
57
|
puts schemer.valid? message # => true
|
58
58
|
```
|
data/examples/validate.rb
CHANGED
data/lib/rsmp_schema/schema.rb
CHANGED
@@ -11,21 +11,41 @@ module RSMP::Schema
|
|
11
11
|
schemas_path = File.expand_path( File.join(__dir__,'..','..','schemas') )
|
12
12
|
Dir.glob("#{schemas_path}/*").select {|f| File.directory? f}.each do |type_path|
|
13
13
|
type = File.basename(type_path).to_sym
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
14
|
+
load_schema_type type, type_path
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
# load an schema from a folder. schemas are organized by version, and contain
|
19
|
+
# json schema files, with the entry point being rsmp.jspon, eg:
|
20
|
+
# tlc
|
21
|
+
# 1.0.7
|
22
|
+
# rsmp.json
|
23
|
+
# other jon schema files...
|
24
|
+
# 1.0.8
|
25
|
+
# ...
|
26
|
+
#
|
27
|
+
# an error is raised if the schema type already exists, and force is not set to true
|
28
|
+
def self.load_schema_type type, type_path, force:false
|
29
|
+
raise RuntimeError.new("Schema type #{type} already loaded") if @@schemas[type] && force!=true
|
30
|
+
@@schemas[type] = {}
|
31
|
+
Dir.glob("#{type_path}/*").select {|f| File.directory? f}.each do |schema_path|
|
32
|
+
version = File.basename(schema_path)
|
33
|
+
@@schemas[type][version] = JSONSchemer.schema(
|
34
|
+
Pathname.new(File.join(schema_path,'rsmp.json'))
|
35
|
+
)
|
26
36
|
end
|
27
37
|
end
|
28
38
|
|
39
|
+
# remove a schema type
|
40
|
+
def self.remove_schema_type type
|
41
|
+
schemas.delete type
|
42
|
+
end
|
43
|
+
|
44
|
+
# get schemas types
|
45
|
+
def self.schema_types
|
46
|
+
schemas.keys
|
47
|
+
end
|
48
|
+
|
29
49
|
# get all schemas, oganized by type and version
|
30
50
|
def self.schemas
|
31
51
|
raise RuntimeError.new("No schemas available, perhaps Schema.setup was never called?") unless @@schemas
|
data/lib/rsmp_schema/version.rb
CHANGED
data/schemas/core/3.2/rsmp.json
CHANGED
@@ -99,7 +99,7 @@
|
|
99
99
|
"properties": { "type": { "const": "StatusResponse" } }
|
100
100
|
},
|
101
101
|
"then": {
|
102
|
-
"$ref": "../3.
|
102
|
+
"$ref": "../3.2/status_response.json"
|
103
103
|
}
|
104
104
|
},
|
105
105
|
{
|
@@ -126,7 +126,7 @@
|
|
126
126
|
"properties": { "type": { "const": "StatusUpdate" } }
|
127
127
|
},
|
128
128
|
"then": {
|
129
|
-
"$ref": "../3.
|
129
|
+
"$ref": "../3.2/status_update.json"
|
130
130
|
}
|
131
131
|
}
|
132
132
|
]
|
@@ -0,0 +1,30 @@
|
|
1
|
+
{
|
2
|
+
"title" : "StatusResponse",
|
3
|
+
"description" : "Status response",
|
4
|
+
"properties" : {
|
5
|
+
"mId" : { "$ref": "../3.1.1/definitions.json#/message_id" },
|
6
|
+
"cId" : { "$ref": "../3.1.1/definitions.json#/component_id" },
|
7
|
+
"sTs" : { "$ref": "../3.1.1/definitions.json#/timestamp" },
|
8
|
+
"sS" : {
|
9
|
+
"description" : "Status response arguments",
|
10
|
+
"type" : "array",
|
11
|
+
"minItems": 1,
|
12
|
+
"items" : {
|
13
|
+
"type" : "object",
|
14
|
+
"properties": {
|
15
|
+
"sCI" : { "$ref": "../3.1.1/definitions.json#/status_code" },
|
16
|
+
"n" : { "description" : "Unique reference of the value", "type" : "string" },
|
17
|
+
"s" : { "description" : "Value", "type" : ["string"," array"] }, // 3.2 allow arrays
|
18
|
+
"q" : {
|
19
|
+
"description" : "Value",
|
20
|
+
"type" : "string",
|
21
|
+
"enum" : [ "recent", "old", "undefined", "unknown" ]
|
22
|
+
}
|
23
|
+
},
|
24
|
+
"required" : [ "sCI", "n", "s", "q" ],
|
25
|
+
"additionalProperties": false
|
26
|
+
}
|
27
|
+
}
|
28
|
+
},
|
29
|
+
"required" : [ "mId", "cId", "sTs", "sS" ]
|
30
|
+
}
|
@@ -0,0 +1,30 @@
|
|
1
|
+
{
|
2
|
+
"title" : "StatusUpdate",
|
3
|
+
"description" : "Status update",
|
4
|
+
"properties" : {
|
5
|
+
"mId" : { "$ref": "../3.1.1/definitions.json#/message_id" },
|
6
|
+
"cId" : { "$ref": "../3.1.1/definitions.json#/component_id" },
|
7
|
+
"sTs" : { "$ref": "../3.1.1/definitions.json#/timestamp" },
|
8
|
+
"sS" : {
|
9
|
+
"description" : "Status update arguments",
|
10
|
+
"type" : "array",
|
11
|
+
"minItems": 1,
|
12
|
+
"items" : {
|
13
|
+
"type" : "object",
|
14
|
+
"properties": {
|
15
|
+
"sCI" : { "$ref": "../3.1.1/definitions.json#/status_code" },
|
16
|
+
"n" : { "description" : "Unique reference of the value", "type" : "string" },
|
17
|
+
"s" : { "description" : "Value", "type" : ["string","array"] }, // array is allowed from 3.2
|
18
|
+
"q" : {
|
19
|
+
"description" : "Value",
|
20
|
+
"type" : "string",
|
21
|
+
"enum" : [ "recent", "old", "undefined", "unknown" ]
|
22
|
+
}
|
23
|
+
},
|
24
|
+
"required" : [ "sCI", "n", "s", "q" ],
|
25
|
+
"additionalProperties": false
|
26
|
+
}
|
27
|
+
}
|
28
|
+
},
|
29
|
+
"required" : [ "mId", "cId", "sTs", "sS" ]
|
30
|
+
}
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rsmp_schema
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Emil Tin
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-08-
|
11
|
+
date: 2022-08-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json_schemer
|
@@ -155,6 +155,8 @@ files:
|
|
155
155
|
- schemas/core/3.2/alarm.json
|
156
156
|
- schemas/core/3.2/core.json
|
157
157
|
- schemas/core/3.2/rsmp.json
|
158
|
+
- schemas/core/3.2/status_response.json
|
159
|
+
- schemas/core/3.2/status_update.json
|
158
160
|
- schemas/tlc/1.0.10/alarms/A0001.json
|
159
161
|
- schemas/tlc/1.0.10/alarms/A0002.json
|
160
162
|
- schemas/tlc/1.0.10/alarms/A0003.json
|
@@ -188,6 +190,7 @@ files:
|
|
188
190
|
- schemas/tlc/1.0.10/commands/command_requests.json
|
189
191
|
- schemas/tlc/1.0.10/commands/command_responses.json
|
190
192
|
- schemas/tlc/1.0.10/commands/commands.json
|
193
|
+
- schemas/tlc/1.0.10/rsmp.json
|
191
194
|
- schemas/tlc/1.0.10/statuses/S0001.json
|
192
195
|
- schemas/tlc/1.0.10/statuses/S0002.json
|
193
196
|
- schemas/tlc/1.0.10/statuses/S0003.json
|
@@ -218,7 +221,6 @@ files:
|
|
218
221
|
- schemas/tlc/1.0.10/statuses/S0203.json
|
219
222
|
- schemas/tlc/1.0.10/statuses/S0204.json
|
220
223
|
- schemas/tlc/1.0.10/statuses/statuses.json
|
221
|
-
- schemas/tlc/1.0.10/sxl.json
|
222
224
|
- schemas/tlc/1.0.10/sxl.yaml
|
223
225
|
- schemas/tlc/1.0.13/alarms/A0001.json
|
224
226
|
- schemas/tlc/1.0.13/alarms/A0002.json
|
@@ -258,6 +260,7 @@ files:
|
|
258
260
|
- schemas/tlc/1.0.13/commands/command_requests.json
|
259
261
|
- schemas/tlc/1.0.13/commands/command_responses.json
|
260
262
|
- schemas/tlc/1.0.13/commands/commands.json
|
263
|
+
- schemas/tlc/1.0.13/rsmp.json
|
261
264
|
- schemas/tlc/1.0.13/statuses/S0001.json
|
262
265
|
- schemas/tlc/1.0.13/statuses/S0002.json
|
263
266
|
- schemas/tlc/1.0.13/statuses/S0003.json
|
@@ -296,7 +299,6 @@ files:
|
|
296
299
|
- schemas/tlc/1.0.13/statuses/S0203.json
|
297
300
|
- schemas/tlc/1.0.13/statuses/S0204.json
|
298
301
|
- schemas/tlc/1.0.13/statuses/statuses.json
|
299
|
-
- schemas/tlc/1.0.13/sxl.json
|
300
302
|
- schemas/tlc/1.0.13/sxl.yaml
|
301
303
|
- schemas/tlc/1.0.14/alarms/A0001.json
|
302
304
|
- schemas/tlc/1.0.14/alarms/A0002.json
|
@@ -336,6 +338,7 @@ files:
|
|
336
338
|
- schemas/tlc/1.0.14/commands/command_requests.json
|
337
339
|
- schemas/tlc/1.0.14/commands/command_responses.json
|
338
340
|
- schemas/tlc/1.0.14/commands/commands.json
|
341
|
+
- schemas/tlc/1.0.14/rsmp.json
|
339
342
|
- schemas/tlc/1.0.14/statuses/S0001.json
|
340
343
|
- schemas/tlc/1.0.14/statuses/S0002.json
|
341
344
|
- schemas/tlc/1.0.14/statuses/S0003.json
|
@@ -378,7 +381,6 @@ files:
|
|
378
381
|
- schemas/tlc/1.0.14/statuses/S0207.json
|
379
382
|
- schemas/tlc/1.0.14/statuses/S0208.json
|
380
383
|
- schemas/tlc/1.0.14/statuses/statuses.json
|
381
|
-
- schemas/tlc/1.0.14/sxl.json
|
382
384
|
- schemas/tlc/1.0.14/sxl.yaml
|
383
385
|
- schemas/tlc/1.0.15/alarms/A0001.json
|
384
386
|
- schemas/tlc/1.0.15/alarms/A0002.json
|
@@ -421,6 +423,7 @@ files:
|
|
421
423
|
- schemas/tlc/1.0.15/commands/command_requests.json
|
422
424
|
- schemas/tlc/1.0.15/commands/command_responses.json
|
423
425
|
- schemas/tlc/1.0.15/commands/commands.json
|
426
|
+
- schemas/tlc/1.0.15/rsmp.json
|
424
427
|
- schemas/tlc/1.0.15/statuses/S0001.json
|
425
428
|
- schemas/tlc/1.0.15/statuses/S0002.json
|
426
429
|
- schemas/tlc/1.0.15/statuses/S0003.json
|
@@ -467,7 +470,6 @@ files:
|
|
467
470
|
- schemas/tlc/1.0.15/statuses/S0207.json
|
468
471
|
- schemas/tlc/1.0.15/statuses/S0208.json
|
469
472
|
- schemas/tlc/1.0.15/statuses/statuses.json
|
470
|
-
- schemas/tlc/1.0.15/sxl.json
|
471
473
|
- schemas/tlc/1.0.15/sxl.yaml
|
472
474
|
- schemas/tlc/1.0.7/alarms/A0001.json
|
473
475
|
- schemas/tlc/1.0.7/alarms/A0002.json
|
@@ -500,6 +502,7 @@ files:
|
|
500
502
|
- schemas/tlc/1.0.7/commands/command_requests.json
|
501
503
|
- schemas/tlc/1.0.7/commands/command_responses.json
|
502
504
|
- schemas/tlc/1.0.7/commands/commands.json
|
505
|
+
- schemas/tlc/1.0.7/rsmp.json
|
503
506
|
- schemas/tlc/1.0.7/statuses/S0001.json
|
504
507
|
- schemas/tlc/1.0.7/statuses/S0002.json
|
505
508
|
- schemas/tlc/1.0.7/statuses/S0003.json
|
@@ -531,7 +534,6 @@ files:
|
|
531
534
|
- schemas/tlc/1.0.7/statuses/S0203.json
|
532
535
|
- schemas/tlc/1.0.7/statuses/S0204.json
|
533
536
|
- schemas/tlc/1.0.7/statuses/statuses.json
|
534
|
-
- schemas/tlc/1.0.7/sxl.json
|
535
537
|
- schemas/tlc/1.0.7/sxl.yaml
|
536
538
|
- schemas/tlc/1.0.8/alarms/A0001.json
|
537
539
|
- schemas/tlc/1.0.8/alarms/A0002.json
|
@@ -566,6 +568,7 @@ files:
|
|
566
568
|
- schemas/tlc/1.0.8/commands/command_requests.json
|
567
569
|
- schemas/tlc/1.0.8/commands/command_responses.json
|
568
570
|
- schemas/tlc/1.0.8/commands/commands.json
|
571
|
+
- schemas/tlc/1.0.8/rsmp.json
|
569
572
|
- schemas/tlc/1.0.8/statuses/S0001.json
|
570
573
|
- schemas/tlc/1.0.8/statuses/S0002.json
|
571
574
|
- schemas/tlc/1.0.8/statuses/S0003.json
|
@@ -597,7 +600,6 @@ files:
|
|
597
600
|
- schemas/tlc/1.0.8/statuses/S0203.json
|
598
601
|
- schemas/tlc/1.0.8/statuses/S0204.json
|
599
602
|
- schemas/tlc/1.0.8/statuses/statuses.json
|
600
|
-
- schemas/tlc/1.0.8/sxl.json
|
601
603
|
- schemas/tlc/1.0.8/sxl.yaml
|
602
604
|
- schemas/tlc/1.0.9/alarms/A0001.json
|
603
605
|
- schemas/tlc/1.0.9/alarms/A0002.json
|
@@ -632,6 +634,7 @@ files:
|
|
632
634
|
- schemas/tlc/1.0.9/commands/command_requests.json
|
633
635
|
- schemas/tlc/1.0.9/commands/command_responses.json
|
634
636
|
- schemas/tlc/1.0.9/commands/commands.json
|
637
|
+
- schemas/tlc/1.0.9/rsmp.json
|
635
638
|
- schemas/tlc/1.0.9/statuses/S0001.json
|
636
639
|
- schemas/tlc/1.0.9/statuses/S0002.json
|
637
640
|
- schemas/tlc/1.0.9/statuses/S0003.json
|
@@ -663,7 +666,6 @@ files:
|
|
663
666
|
- schemas/tlc/1.0.9/statuses/S0203.json
|
664
667
|
- schemas/tlc/1.0.9/statuses/S0204.json
|
665
668
|
- schemas/tlc/1.0.9/statuses/statuses.json
|
666
|
-
- schemas/tlc/1.0.9/sxl.json
|
667
669
|
- schemas/tlc/1.0.9/sxl.yaml
|
668
670
|
- schemas/tlc/1.1/alarms/A0001.json
|
669
671
|
- schemas/tlc/1.1/alarms/A0002.json
|
@@ -710,6 +712,7 @@ files:
|
|
710
712
|
- schemas/tlc/1.1/commands/command_requests.json
|
711
713
|
- schemas/tlc/1.1/commands/command_responses.json
|
712
714
|
- schemas/tlc/1.1/commands/commands.json
|
715
|
+
- schemas/tlc/1.1/rsmp.json
|
713
716
|
- schemas/tlc/1.1/statuses/S0001.json
|
714
717
|
- schemas/tlc/1.1/statuses/S0002.json
|
715
718
|
- schemas/tlc/1.1/statuses/S0003.json
|
@@ -759,7 +762,6 @@ files:
|
|
759
762
|
- schemas/tlc/1.1/statuses/S0207.json
|
760
763
|
- schemas/tlc/1.1/statuses/S0208.json
|
761
764
|
- schemas/tlc/1.1/statuses/statuses.json
|
762
|
-
- schemas/tlc/1.1/sxl.json
|
763
765
|
- schemas/tlc/1.1/sxl.yaml
|
764
766
|
homepage: https://github.com/rsmp-nordic/rsmp_schema
|
765
767
|
licenses:
|