├── .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 |
--------------------------------------------------------------------------------