rsmp_schema 0.2.4 → 0.3.1
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 +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:
|