class Avo::Licensing::License

def abilities

def abilities
  []
end

def can(ability)

def can(ability)
  abilities.include? ability
end

def cant(ability)

def cant(ability)
  !can ability
end

def error

def error
  @response["error"]
end

def has_with_trial(ability)

Returns if has ability and if is a valid license or app is in development.
def has_with_trial(ability)
  return can(ability) && valid? if Rails.env.production?
  true
end

def initialize(response = {})

def initialize(response = {})
  @response = response
  @id = response["id"]
  @valid = response["valid"]
  @payload = response["payload"]
end

def invalid?

def invalid?
  !valid?
end

def lacks_with_trial(ability)

Returns if lacks ability and if is a valid license or app is in development.
def lacks_with_trial(ability)
  !has_with_trial ability
end

def name

def name
  if id.present?
    id.humanize
  else
    self.class.to_s.split("::").last.underscore.humanize.gsub " license", ""
  end
end

def pro?

def pro?
  id == "pro"
end

def properties

def properties
  @response.slice("valid", "id", "error").symbolize_keys
end

def valid?

def valid?
  valid
end