#!/usr/bin/env ruby require 'rubygems' require 'ezcrypto' require 'json' require 'cgi' require 'time' module BookingBug class TokenGenerator attr_accessor :data attr_accessor :options BOOKINGBUG_COMPANY_ID = "{Your Company ID parent or child or Affiliate ID}" BOOKINGBUG_SECURE_KEY = "{Your Secure Key}" def initialize(options = {}) options.merge!({:expires => (Time.now + 3600).iso8601}) key = EzCrypto::Key.with_password BOOKINGBUG_COMPANY_ID, BOOKINGBUG_SECURE_KEY @data = key.encrypt64(options.to_json).gsub(/\n/,'') @data = CGI.escape(@data) end def to_s @data end def decrypt key = EzCrypto::Key.with_password BOOKINGBUG_COMPANY_ID, BOOKINGBUG_SECURE_KEY key.decrypt64(CGI.unescape(@data)) end end end token = BookingBug::TokenGenerator.new({ 'first_name' => 'John', 'email' => 'smith@example.com', 'last_name' => 'Smith', 'mobile' => '0123456789', 'reference' => 'external-reference' }) puts token.to_s