├── .ruby-version ├── README.md ├── .gitignore ├── config.ru ├── Gemfile ├── index.html ├── my_app.rb └── Gemfile.lock /.ruby-version: -------------------------------------------------------------------------------- 1 | ruby-3.1.2 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # the-stock 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .bundle/* 2 | vendor/* 3 | -------------------------------------------------------------------------------- /config.ru: -------------------------------------------------------------------------------- 1 | require './my_app' 2 | run MyApp 3 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | source 'https://rubygems.org' 2 | 3 | gem "sinatra" 4 | gem "puma" 5 | gem "sinatra-contrib" 6 | gem 'sinatra-cache' 7 | gem 'nokogiri' 8 | gem 'open-uri' 9 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | index 7 | 8 | 9 | 10 | 16 | 17 | body 18 | 19 | 20 | -------------------------------------------------------------------------------- /my_app.rb: -------------------------------------------------------------------------------- 1 | # 2 | # myapp.rb 3 | require 'bundler' 4 | Bundler.require 5 | require 'sinatra/base' 6 | require 'sinatra/json' 7 | #require 'nokogiri' 8 | #require 'open-uri' 9 | 10 | class MyApp < Sinatra::Base 11 | 12 | set :root, "/" 13 | 14 | register(Sinatra::Cache) 15 | 16 | 17 | set :cache_enabled, true 18 | 19 | get '/' do 20 | page = Nokogiri::HTML(URI.open('https://www.google.com/finance/quote/YELP:NYSE')) 21 | price = page.css('.YMlKec.fxKbKc')[0].text.to_s.encode("iso-8859-1").force_encoding("utf-8") 22 | json price: price 23 | end 24 | 25 | 26 | run! if app_file == $0 27 | end 28 | -------------------------------------------------------------------------------- /Gemfile.lock: -------------------------------------------------------------------------------- 1 | GEM 2 | remote: https://rubygems.org/ 3 | specs: 4 | base64 (0.2.0) 5 | date (3.3.4) 6 | multi_json (1.15.0) 7 | mustermann (3.0.0) 8 | ruby2_keywords (~> 0.0.1) 9 | nio4r (2.7.0) 10 | nokogiri (1.16.0-arm64-darwin) 11 | racc (~> 1.4) 12 | nokogiri (1.16.0-x86_64-darwin) 13 | racc (~> 1.4) 14 | nokogiri (1.16.0-x86_64-linux) 15 | racc (~> 1.4) 16 | open-uri (0.4.1) 17 | stringio 18 | time 19 | uri 20 | puma (6.4.2) 21 | nio4r (~> 2.0) 22 | racc (1.7.3) 23 | rack (2.2.8) 24 | rack-protection (3.2.0) 25 | base64 (>= 0.1.0) 26 | rack (~> 2.2, >= 2.2.4) 27 | ruby2_keywords (0.0.5) 28 | sinatra (3.2.0) 29 | mustermann (~> 3.0) 30 | rack (~> 2.2, >= 2.2.4) 31 | rack-protection (= 3.2.0) 32 | tilt (~> 2.0) 33 | sinatra-cache (0.3.7) 34 | sinatra (>= 1.1.0) 35 | sinatra-outputbuffer (>= 0.1.0) 36 | sinatra-contrib (3.2.0) 37 | multi_json (>= 0.0.2) 38 | mustermann (~> 3.0) 39 | rack-protection (= 3.2.0) 40 | sinatra (= 3.2.0) 41 | tilt (~> 2.0) 42 | sinatra-outputbuffer (0.1.0) 43 | sinatra (>= 1.0.a) 44 | stringio (3.1.0) 45 | tilt (2.3.0) 46 | time (0.3.0) 47 | date 48 | uri (0.13.0) 49 | 50 | PLATFORMS 51 | universal-darwin-21 52 | x86_64-linux 53 | 54 | DEPENDENCIES 55 | nokogiri 56 | open-uri 57 | puma 58 | sinatra 59 | sinatra-cache 60 | sinatra-contrib 61 | 62 | BUNDLED WITH 63 | 2.2.32 64 | --------------------------------------------------------------------------------