class LivePaper::Payoff

Constants

TYPE

Attributes

data[RW]
type[RW]
url[RW]

Public Class Methods

api_url() click to toggle source
# File lib/live_paper/payoff.rb, line 27
def self.api_url
  "#{LP_API_HOST}/api/v2/projects/#{$project_id}/payoffs"
end
item_key() click to toggle source
# File lib/live_paper/payoff.rb, line 23
def self.item_key
  :payoff
end
list_key() click to toggle source
# File lib/live_paper/payoff.rb, line 19
def self.list_key
  :payoffs
end

Public Instance Methods

parse(data) click to toggle source
# File lib/live_paper/payoff.rb, line 12
def parse(data)
  data = JSON.parse(data, symbolize_names: true)[self.class.item_key]
  assign_attributes(data)
  send(present?(data[:richPayoff]) ? :parse_richpayoff : :parse_webpayoff, data)
  self
end

Private Instance Methods

create_body() click to toggle source
# File lib/live_paper/payoff.rb, line 54
def create_body
  {
    payoff: case @type
      when TYPE[:WEB]
        create_webpayoff_body
      when TYPE[:RICH]
        create_richpayoff_body
      else
        raise ArgumentError, 'Type unknown.'
    end
  }
end
create_richpayoff_body() click to toggle source
# File lib/live_paper/payoff.rb, line 75
def create_richpayoff_body
  {
    name: @name,
    type: 'richPayoff',
    richPayoff: {
      version: 1,
      private: {
        :'content-type' => 'custom-base64',
        :data => Base64.encode64(@data.to_json)
      },
      public: {url: @url}
    }
  }
end
create_webpayoff_body() click to toggle source
# File lib/live_paper/payoff.rb, line 67
def create_webpayoff_body
  {
    name: @name,
    type: 'url',
    url: @url
  }
end
parse_richpayoff(data) click to toggle source
# File lib/live_paper/payoff.rb, line 38
def parse_richpayoff(data)
  data = data[:richPayoff]
  @type = TYPE[:RICH]
  @url = data[:public][:url]
  @data = JSON.parse(Base64.decode64(data[:private][:data]), symbolize_names: true) rescue nil
end
parse_webpayoff(data) click to toggle source
# File lib/live_paper/payoff.rb, line 45
def parse_webpayoff(data)
  @type = TYPE[:WEB]
  @url = data[:url]
end
update_body() click to toggle source
# File lib/live_paper/payoff.rb, line 50
def update_body
  create_body
end
validate_attributes!() click to toggle source
# File lib/live_paper/payoff.rb, line 32
def validate_attributes!
  raise ArgumentError, 'Required Attributes needed: name, type' unless all_present? [@name, @type]
  raise ArgumentError, 'Required Attribute needed: url.' if @type == TYPE[:WEB] and !present? @url
  raise ArgumentError, 'Required Attribute needed: data.' if @type == TYPE[:RICH] and !present? @data
end