rsmp_schema 0.2.4 → 0.3.1
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 +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 +1 -1
- 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 +11 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fda24f8e280bdeeb92c3cb80b62901bfc7215b1612b10d8bfc429d59313bd973
|
4
|
+
data.tar.gz: b9845dfc72855ff12949949c85d63c88cbd3d3d9c7e11971e4ed6d02e09bb43b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bb9ffbae5e2533a9a4cfcd3d5d3fc4791aa2d3b9798f5d30098cf42996b0e18f44176f59b9573a24570634e691c9bf8d9ab48175a66308f8ac9587f201b61aab
|
7
|
+
data.tar.gz: 9e0554e11ab58a89b33d349683a66362b7fb4d1a8780cf0f7beca74306a935454441d1990cd6683bcaeb44443540f718e19af7d1e42fa5171ad25e82ffb776a6
|
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
@@ -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.1
|
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-
|
11
|
+
date: 2022-09-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json_schemer
|
@@ -156,6 +156,7 @@ files:
|
|
156
156
|
- schemas/core/3.2/core.json
|
157
157
|
- schemas/core/3.2/rsmp.json
|
158
158
|
- schemas/core/3.2/status_response.json
|
159
|
+
- schemas/core/3.2/status_update.json
|
159
160
|
- schemas/tlc/1.0.10/alarms/A0001.json
|
160
161
|
- schemas/tlc/1.0.10/alarms/A0002.json
|
161
162
|
- schemas/tlc/1.0.10/alarms/A0003.json
|
@@ -189,6 +190,7 @@ files:
|
|
189
190
|
- schemas/tlc/1.0.10/commands/command_requests.json
|
190
191
|
- schemas/tlc/1.0.10/commands/command_responses.json
|
191
192
|
- schemas/tlc/1.0.10/commands/commands.json
|
193
|
+
- schemas/tlc/1.0.10/rsmp.json
|
192
194
|
- schemas/tlc/1.0.10/statuses/S0001.json
|
193
195
|
- schemas/tlc/1.0.10/statuses/S0002.json
|
194
196
|
- schemas/tlc/1.0.10/statuses/S0003.json
|
@@ -219,7 +221,6 @@ files:
|
|
219
221
|
- schemas/tlc/1.0.10/statuses/S0203.json
|
220
222
|
- schemas/tlc/1.0.10/statuses/S0204.json
|
221
223
|
- schemas/tlc/1.0.10/statuses/statuses.json
|
222
|
-
- schemas/tlc/1.0.10/sxl.json
|
223
224
|
- schemas/tlc/1.0.10/sxl.yaml
|
224
225
|
- schemas/tlc/1.0.13/alarms/A0001.json
|
225
226
|
- schemas/tlc/1.0.13/alarms/A0002.json
|
@@ -259,6 +260,7 @@ files:
|
|
259
260
|
- schemas/tlc/1.0.13/commands/command_requests.json
|
260
261
|
- schemas/tlc/1.0.13/commands/command_responses.json
|
261
262
|
- schemas/tlc/1.0.13/commands/commands.json
|
263
|
+
- schemas/tlc/1.0.13/rsmp.json
|
262
264
|
- schemas/tlc/1.0.13/statuses/S0001.json
|
263
265
|
- schemas/tlc/1.0.13/statuses/S0002.json
|
264
266
|
- schemas/tlc/1.0.13/statuses/S0003.json
|
@@ -297,7 +299,6 @@ files:
|
|
297
299
|
- schemas/tlc/1.0.13/statuses/S0203.json
|
298
300
|
- schemas/tlc/1.0.13/statuses/S0204.json
|
299
301
|
- schemas/tlc/1.0.13/statuses/statuses.json
|
300
|
-
- schemas/tlc/1.0.13/sxl.json
|
301
302
|
- schemas/tlc/1.0.13/sxl.yaml
|
302
303
|
- schemas/tlc/1.0.14/alarms/A0001.json
|
303
304
|
- schemas/tlc/1.0.14/alarms/A0002.json
|
@@ -337,6 +338,7 @@ files:
|
|
337
338
|
- schemas/tlc/1.0.14/commands/command_requests.json
|
338
339
|
- schemas/tlc/1.0.14/commands/command_responses.json
|
339
340
|
- schemas/tlc/1.0.14/commands/commands.json
|
341
|
+
- schemas/tlc/1.0.14/rsmp.json
|
340
342
|
- schemas/tlc/1.0.14/statuses/S0001.json
|
341
343
|
- schemas/tlc/1.0.14/statuses/S0002.json
|
342
344
|
- schemas/tlc/1.0.14/statuses/S0003.json
|
@@ -379,7 +381,6 @@ files:
|
|
379
381
|
- schemas/tlc/1.0.14/statuses/S0207.json
|
380
382
|
- schemas/tlc/1.0.14/statuses/S0208.json
|
381
383
|
- schemas/tlc/1.0.14/statuses/statuses.json
|
382
|
-
- schemas/tlc/1.0.14/sxl.json
|
383
384
|
- schemas/tlc/1.0.14/sxl.yaml
|
384
385
|
- schemas/tlc/1.0.15/alarms/A0001.json
|
385
386
|
- schemas/tlc/1.0.15/alarms/A0002.json
|
@@ -422,6 +423,7 @@ files:
|
|
422
423
|
- schemas/tlc/1.0.15/commands/command_requests.json
|
423
424
|
- schemas/tlc/1.0.15/commands/command_responses.json
|
424
425
|
- schemas/tlc/1.0.15/commands/commands.json
|
426
|
+
- schemas/tlc/1.0.15/rsmp.json
|
425
427
|
- schemas/tlc/1.0.15/statuses/S0001.json
|
426
428
|
- schemas/tlc/1.0.15/statuses/S0002.json
|
427
429
|
- schemas/tlc/1.0.15/statuses/S0003.json
|
@@ -468,7 +470,6 @@ files:
|
|
468
470
|
- schemas/tlc/1.0.15/statuses/S0207.json
|
469
471
|
- schemas/tlc/1.0.15/statuses/S0208.json
|
470
472
|
- schemas/tlc/1.0.15/statuses/statuses.json
|
471
|
-
- schemas/tlc/1.0.15/sxl.json
|
472
473
|
- schemas/tlc/1.0.15/sxl.yaml
|
473
474
|
- schemas/tlc/1.0.7/alarms/A0001.json
|
474
475
|
- schemas/tlc/1.0.7/alarms/A0002.json
|
@@ -501,6 +502,7 @@ files:
|
|
501
502
|
- schemas/tlc/1.0.7/commands/command_requests.json
|
502
503
|
- schemas/tlc/1.0.7/commands/command_responses.json
|
503
504
|
- schemas/tlc/1.0.7/commands/commands.json
|
505
|
+
- schemas/tlc/1.0.7/rsmp.json
|
504
506
|
- schemas/tlc/1.0.7/statuses/S0001.json
|
505
507
|
- schemas/tlc/1.0.7/statuses/S0002.json
|
506
508
|
- schemas/tlc/1.0.7/statuses/S0003.json
|
@@ -532,7 +534,6 @@ files:
|
|
532
534
|
- schemas/tlc/1.0.7/statuses/S0203.json
|
533
535
|
- schemas/tlc/1.0.7/statuses/S0204.json
|
534
536
|
- schemas/tlc/1.0.7/statuses/statuses.json
|
535
|
-
- schemas/tlc/1.0.7/sxl.json
|
536
537
|
- schemas/tlc/1.0.7/sxl.yaml
|
537
538
|
- schemas/tlc/1.0.8/alarms/A0001.json
|
538
539
|
- schemas/tlc/1.0.8/alarms/A0002.json
|
@@ -567,6 +568,7 @@ files:
|
|
567
568
|
- schemas/tlc/1.0.8/commands/command_requests.json
|
568
569
|
- schemas/tlc/1.0.8/commands/command_responses.json
|
569
570
|
- schemas/tlc/1.0.8/commands/commands.json
|
571
|
+
- schemas/tlc/1.0.8/rsmp.json
|
570
572
|
- schemas/tlc/1.0.8/statuses/S0001.json
|
571
573
|
- schemas/tlc/1.0.8/statuses/S0002.json
|
572
574
|
- schemas/tlc/1.0.8/statuses/S0003.json
|
@@ -598,7 +600,6 @@ files:
|
|
598
600
|
- schemas/tlc/1.0.8/statuses/S0203.json
|
599
601
|
- schemas/tlc/1.0.8/statuses/S0204.json
|
600
602
|
- schemas/tlc/1.0.8/statuses/statuses.json
|
601
|
-
- schemas/tlc/1.0.8/sxl.json
|
602
603
|
- schemas/tlc/1.0.8/sxl.yaml
|
603
604
|
- schemas/tlc/1.0.9/alarms/A0001.json
|
604
605
|
- schemas/tlc/1.0.9/alarms/A0002.json
|
@@ -633,6 +634,7 @@ files:
|
|
633
634
|
- schemas/tlc/1.0.9/commands/command_requests.json
|
634
635
|
- schemas/tlc/1.0.9/commands/command_responses.json
|
635
636
|
- schemas/tlc/1.0.9/commands/commands.json
|
637
|
+
- schemas/tlc/1.0.9/rsmp.json
|
636
638
|
- schemas/tlc/1.0.9/statuses/S0001.json
|
637
639
|
- schemas/tlc/1.0.9/statuses/S0002.json
|
638
640
|
- schemas/tlc/1.0.9/statuses/S0003.json
|
@@ -664,7 +666,6 @@ files:
|
|
664
666
|
- schemas/tlc/1.0.9/statuses/S0203.json
|
665
667
|
- schemas/tlc/1.0.9/statuses/S0204.json
|
666
668
|
- schemas/tlc/1.0.9/statuses/statuses.json
|
667
|
-
- schemas/tlc/1.0.9/sxl.json
|
668
669
|
- schemas/tlc/1.0.9/sxl.yaml
|
669
670
|
- schemas/tlc/1.1/alarms/A0001.json
|
670
671
|
- schemas/tlc/1.1/alarms/A0002.json
|
@@ -711,6 +712,7 @@ files:
|
|
711
712
|
- schemas/tlc/1.1/commands/command_requests.json
|
712
713
|
- schemas/tlc/1.1/commands/command_responses.json
|
713
714
|
- schemas/tlc/1.1/commands/commands.json
|
715
|
+
- schemas/tlc/1.1/rsmp.json
|
714
716
|
- schemas/tlc/1.1/statuses/S0001.json
|
715
717
|
- schemas/tlc/1.1/statuses/S0002.json
|
716
718
|
- schemas/tlc/1.1/statuses/S0003.json
|
@@ -760,7 +762,6 @@ files:
|
|
760
762
|
- schemas/tlc/1.1/statuses/S0207.json
|
761
763
|
- schemas/tlc/1.1/statuses/S0208.json
|
762
764
|
- schemas/tlc/1.1/statuses/statuses.json
|
763
|
-
- schemas/tlc/1.1/sxl.json
|
764
765
|
- schemas/tlc/1.1/sxl.yaml
|
765
766
|
homepage: https://github.com/rsmp-nordic/rsmp_schema
|
766
767
|
licenses:
|