class Crusade::APNS::PushPackageGenerator

Attributes

configuration[RW]

Public Class Methods

new(configuration) click to toggle source
# File lib/crusade/apns/push_package_generator.rb, line 13
def initialize configuration
  self.configuration = configuration
end

Public Instance Methods

clean(push_package) click to toggle source
# File lib/crusade/apns/push_package_generator.rb, line 42
def clean(push_package)
  FileUtils.remove_entry_secure push_package
rescue Errno::ENOENT => e
end
generate(user_id) click to toggle source
# File lib/crusade/apns/push_package_generator.rb, line 17
def generate user_id
  info "generating push package for user #{user_id}"

  FileUtils.remove_entry_secure configuration.temp_dir
  FileUtils.mkdir configuration.temp_dir

  push_package = File.join(configuration.temp_dir, file_name(user_id))

  DirectoryStructureGenerator.new(configuration).generate

  website = WebsiteFileGenerator.new(user_id, configuration).generate
  user_token = user_token website
  File.open(File.join(configuration.temp_dir, 'website.json'), 'w') { |f| f.write website }

  manifest = Crusade::APNS::ManifestGenerator.new(configuration.temp_dir).generate
  File.open(File.join(configuration.temp_dir, 'manifest.json'), 'w') { |f| f.write manifest }

  Crusade::APNS::SignatureGenerator.new(configuration).sign File.join(configuration.temp_dir, 'manifest.json')

  Crusade::APNS::ZipFileGenerator.new(configuration, configuration.temp_dir, push_package).generate

  debug "push package generated #{push_package} - with user token #{user_token}"
  [ user_token, push_package ]
end

Private Instance Methods

file_name(user_token) click to toggle source
# File lib/crusade/apns/push_package_generator.rb, line 51
def file_name(user_token)
  "#{Time.now.to_i}-#{user_token}_push_package.zip"
end
user_token(json) click to toggle source
# File lib/crusade/apns/push_package_generator.rb, line 55
def user_token json
  JSON.parse(json)['authenticationToken']
end