main
1# frozen_string_literal: true
2
3module Saml
4 module Kit
5 module Cli
6 class YamlRegistry < ::Saml::Kit::DefaultRegistry
7 def initialize(path)
8 @items = YAML::Store.new(path)
9 end
10
11 def register(metadata)
12 with_transaction do |db|
13 db[metadata.entity_id] = metadata.to_xml
14 end
15 metadata
16 end
17
18 def metadata_for(entity_id)
19 with_transaction do |db|
20 xml = db[entity_id]
21 return nil if xml.nil?
22 Saml::Kit::Metadata.from(xml)
23 end
24 end
25
26 def each
27 with_transaction do |db|
28 db.roots.each do |key|
29 yield metadata_for(key)
30 end
31 end
32 end
33
34 private
35
36 def with_transaction
37 return yield @items if @in_transaction
38 @items.transaction do
39 begin
40 @in_transaction = true
41 yield @items
42 ensure
43 @in_transaction = false
44 end
45 end
46 end
47 end
48 end
49 end
50end