Class: Dubai::Passbook::Pass

Inherits:
Object
  • Object
show all
Defined in:
lib/dubai/pass.rb

Constant Summary collapse

TYPES =
['boarding-pass', 'coupon', 'event-ticket', 'store-card', 'generic']

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(directory) ⇒ Pass

Returns a new instance of Pass.



46
47
48
49
# File 'lib/dubai/pass.rb', line 46

def initialize(directory)
  @assets = Dir[File.join(directory, '*')]
  @pass = File.read(@assets.delete(@assets.detect{|file| File.basename(file) == 'pass.json'}))
end

Instance Attribute Details

#assetsObject (readonly)

Returns the value of attribute assets.



42
43
44
# File 'lib/dubai/pass.rb', line 42

def assets
  @assets
end

#passObject (readonly)

Returns the value of attribute pass.



42
43
44
# File 'lib/dubai/pass.rb', line 42

def pass
  @pass
end

Instance Method Details

#manifestObject



51
52
53
54
55
56
57
58
59
60
# File 'lib/dubai/pass.rb', line 51

def manifest
  checksums = {}
  checksums['pass.json'] = Digest::SHA1.hexdigest(@pass)

  @assets.each do |file|
    checksums[File.basename(file)] = Digest::SHA1.file(file).hexdigest 
  end

  checksums.to_json
end

#pkpassObject



62
63
64
65
66
67
68
69
70
71
72
# File 'lib/dubai/pass.rb', line 62

def pkpass
  Zip::OutputStream.write_buffer do |zip|
    zip.put_next_entry 'pass.json' and zip.write @pass
    zip.put_next_entry 'manifest.json' and zip.write manifest
    zip.put_next_entry 'signature' and zip.write signature(manifest)

    @assets.each do |file|
      zip.put_next_entry File.basename(file) and zip.print IO.read(file)
    end
  end
end