Class: TRMNLPreview::App
- Inherits:
-
Sinatra::Base
- Object
- Sinatra::Base
- TRMNLPreview::App
- Defined in:
- lib/trmnl_preview/app.rb
Constant Summary collapse
- VIEWS =
Constants
%w{full half_horizontal half_vertical quadrant}
Instance Method Summary collapse
-
#initialize(*args) ⇒ App
constructor
A new instance of App.
Constructor Details
#initialize(*args) ⇒ App
Returns a new instance of App.
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/trmnl_preview/app.rb', line 17 def initialize(*args) super @config_path = File.join(settings.user_dir, 'config.toml') @user_views_dir = File.join(settings.user_dir, 'views') @temp_dir = File.join(settings.user_dir, 'tmp') @data_json_path = File.join(@temp_dir, 'data.json') unless File.exist?(@config_path) puts "No config.toml found in #{settings.user_dir}" exit 1 end unless Dir.exist?(@user_views_dir) puts "No views found at #{@user_views_dir}" exit 1 end FileUtils.mkdir_p(@temp_dir) @config = TomlRB.load_file(@config_path) strategy = @config['strategy'] unless ['polling', 'webhook'].include?(strategy) puts "Invalid strategy: #{strategy} (must be 'polling' or 'webhook')" exit 1 end url = @config['url'] polling_headers = @config['polling_headers'] || {} if strategy == 'polling' if url.nil? puts "URL is required for polling strategy" exit 1 end print "Fetching #{url}... " payload = URI.open(url, polling_headers).read File.write(@data_json_path, payload) puts "got #{payload.size} bytes" end @liquid_environment = Liquid::Environment.build do |env| env.register_filter(TRMNLPreview::LiquidFilters) end end |