class Tinypass::JsonMsgBuilder
Public Instance Methods
build_access_token(token)
click to toggle source
# File lib/tinypass/builder/json_msg_builder.rb, line 32 def build_access_token(token) MultiJson.dump(token.token_data.values) end
build_access_tokens(list)
click to toggle source
# File lib/tinypass/builder/json_msg_builder.rb, line 22 def build_access_tokens(list) tokens = [] list.each do |token| tokens << token.token_data.values end MultiJson.dump(tokens) end
build_purchase_requests(requests)
click to toggle source
# File lib/tinypass/builder/json_msg_builder.rb, line 36 def build_purchase_requests(requests) data = [] requests.each do |request| data << build_purchase_request(request) end MultiJson.dump(data) end
parse_access_tokens(json_string)
click to toggle source
# File lib/tinypass/builder/json_msg_builder.rb, line 5 def parse_access_tokens(json_string) json_data = MultiJson.load(json_string) # 1.0 tokens can't be parsed in this version return AccessTokenList.new([]) if json_data.respond_to?(:has_key?) && json_data.has_key?('tokens') access_tokens = [] Array(json_data).each do |json_datum| next if json_datum['rid'].to_s.empty? token_data = TokenData.new(json_datum) access_tokens << AccessToken.new(token_data) end AccessTokenList.new(access_tokens) end
Private Instance Methods
build_offer(offer)
click to toggle source
# File lib/tinypass/builder/json_msg_builder.rb, line 64 def build_offer(offer) data = { rid: offer.resource.rid, rnm: offer.resource.name, rurl: offer.resource.url, pos: build_price_options(offer.pricing.price_options), pol: build_policies(offer.policies) } data[:tags] = offer.tags if offer.tags data end
build_policies(policies)
click to toggle source
# File lib/tinypass/builder/json_msg_builder.rb, line 111 def build_policies(policies) policies.map { |policy| policy.to_hash } end
build_price_option(price_option)
click to toggle source
# File lib/tinypass/builder/json_msg_builder.rb, line 89 def build_price_option(price_option) data = { price: price_option.price || '', exp: price_option.access_period || '', caption: price_option.caption || '' } if price_option.start_date_in_secs && price_option.start_date_in_secs > 0 data[:sd] = price_option.start_date_in_secs end if price_option.end_date_in_secs && price_option.end_date_in_secs > 0 data[:ed] = price_option.end_date_in_secs end if price_option.split_pays.any? data[:splits] = price_option.split_pays.map { |email, amount| "#{ email }=#{ amount }" } end data end
build_price_options(price_options)
click to toggle source
# File lib/tinypass/builder/json_msg_builder.rb, line 78 def build_price_options(price_options) data = {} price_options.each_with_index do |price_option, i| key = "opt#{ i }" data[key] = build_price_option(price_option) end data end
build_purchase_request(request)
click to toggle source
# File lib/tinypass/builder/json_msg_builder.rb, line 48 def build_purchase_request(request) data = { o1: build_offer(request.primary_offer), t: Time.now.to_i, v: Config::MSG_VERSION, cb: request.callback } data[:ip] = request.client_ip if request.client_ip data[:uref] = request.user_ref if request.user_ref data[:opts] = request.options if request.options && request.options.any? data[:o2] = build_offer(request.secondary_offer) if request.secondary_offer data end