Class: TicketStore
- Inherits:
-
Object
- Object
- TicketStore
- Defined in:
- lib/myer/ticket_store.rb
Instance Method Summary collapse
-
#initialize(ticket_dir) ⇒ TicketStore
constructor
A new instance of TicketStore.
- #load_ticket(bucket_id) ⇒ Object
- #load_ticket_from_file(ticket_path) ⇒ Object
- #save_ticket(ticket) ⇒ Object
- #ticket_file_name(bucket_id) ⇒ Object
- #ticket_path(ticket) ⇒ Object
- #tickets_per_server ⇒ Object
Constructor Details
#initialize(ticket_dir) ⇒ TicketStore
Returns a new instance of TicketStore.
2 3 4 |
# File 'lib/myer/ticket_store.rb', line 2 def initialize(ticket_dir) @ticket_dir = ticket_dir end |
Instance Method Details
#load_ticket(bucket_id) ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/myer/ticket_store.rb', line 14 def load_ticket(bucket_id) ticket = Ticket.new ticket.bucket_id = bucket_id begin ticket_content = File.read(ticket_path(ticket)) rescue Errno::ENOENT return nil end json = JSON.parse(ticket_content) if json["bucket_id"] != bucket_id raise "Invalid ticket #{ticket_path(ticket)}. File name doesn't match bucket id" end ticket.server = json["server"] ticket.key = json["key"] ticket.name = json["name"] ticket end |
#load_ticket_from_file(ticket_path) ⇒ Object
32 33 34 35 36 37 38 39 40 |
# File 'lib/myer/ticket_store.rb', line 32 def load_ticket_from_file(ticket_path) json = JSON.parse(File.read(ticket_path)) ticket = Ticket.new ticket.server = json["server"] ticket.bucket_id = json["bucket_id"] ticket.key = json["key"] ticket.name = json["name"] ticket end |
#save_ticket(ticket) ⇒ Object
52 53 54 55 56 57 58 59 60 |
# File 'lib/myer/ticket_store.rb', line 52 def save_ticket(ticket) json = { "server" => ticket.server, "name" => ticket.name, "bucket_id" => ticket.bucket_id, "key" => ticket.key } File.open(ticket_path(ticket), "w", 0600) do |f| f.write(JSON.generate(json)) f.puts end end |
#ticket_file_name(bucket_id) ⇒ Object
6 7 8 |
# File 'lib/myer/ticket_store.rb', line 6 def ticket_file_name(bucket_id) "secret-ticket-#{bucket_id}.json" end |
#ticket_path(ticket) ⇒ Object
10 11 12 |
# File 'lib/myer/ticket_store.rb', line 10 def ticket_path(ticket) File.join(@ticket_dir, ticket_file_name(ticket.bucket_id)) end |
#tickets_per_server ⇒ Object
42 43 44 45 46 47 48 49 50 |
# File 'lib/myer/ticket_store.rb', line 42 def tickets_per_server tickets = {} Dir.glob("#{@ticket_dir}/secret-ticket-*.json").sort.each do |path| ticket = load_ticket_from_file(path) tickets[ticket.server] ||= [] tickets[ticket.server].push(ticket) end tickets end |