require 'json'
require 'net/http'
require_relative './widget_store'
module Widget
VERSION = '1.2.0'.freeze
class Report
FORMATS = %w[json yaml].freeze
def initialize(title, rows = [])
@title = title
@rows = rows
end
def total
@rows.sum
end
def render
format_rows(@rows)
end
def to_json
JSON.generate(payload)
end
def self.from_file(path)
new(path)
end
private
def payload
{ title: @title, rows: @rows }
end
def format_rows(rows)
rows.map(&:to_s).join("\n")
end
end
end
module Auth
ENDPOINT = 'https://auth.example.com'.freeze
class Token
def initialize(secret)
@secret = secret
@expires_at = Time.now + 3600
end
def fresh?
@expires_at > Time.now
end
def self.for(secret)
new(secret)
end
end
end
report = Widget::Report.from_file('data/report.json')
client = HTTP::Client.new(Auth::ENDPOINT)
root = Math.sqrt(report.total)
puts client.inspect
puts root