parent
0407213908
commit
d710726d55
@ -0,0 +1,13 @@
|
||||
FROM arm32v7/ruby:2.7
|
||||
|
||||
# throw errors if Gemfile has been modified since Gemfile.lock
|
||||
RUN bundle config --global frozen 1
|
||||
|
||||
WORKDIR /usr/src/app
|
||||
|
||||
COPY Gemfile Gemfile.lock ./
|
||||
RUN bundle install
|
||||
|
||||
COPY . .
|
||||
|
||||
CMD ["rackup", "--host", "0.0.0.0"]
|
@ -0,0 +1,14 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
source "https://rubygems.org"
|
||||
|
||||
git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
|
||||
|
||||
gem "nokogiri"
|
||||
gem "roda"
|
||||
|
||||
group :development do
|
||||
gem "pry"
|
||||
gem "rake"
|
||||
gem "rerun"
|
||||
end
|
@ -0,0 +1,37 @@
|
||||
GEM
|
||||
remote: https://rubygems.org/
|
||||
specs:
|
||||
coderay (1.1.2)
|
||||
ffi (1.12.1)
|
||||
listen (3.2.1)
|
||||
rb-fsevent (~> 0.10, >= 0.10.3)
|
||||
rb-inotify (~> 0.9, >= 0.9.10)
|
||||
method_source (0.9.2)
|
||||
mini_portile2 (2.4.0)
|
||||
nokogiri (1.10.7)
|
||||
mini_portile2 (~> 2.4.0)
|
||||
pry (0.12.2)
|
||||
coderay (~> 1.1.0)
|
||||
method_source (~> 0.9.0)
|
||||
rack (2.1.1)
|
||||
rake (13.0.1)
|
||||
rb-fsevent (0.10.3)
|
||||
rb-inotify (0.10.1)
|
||||
ffi (~> 1.0)
|
||||
rerun (0.13.0)
|
||||
listen (~> 3.0)
|
||||
roda (3.28.0)
|
||||
rack
|
||||
|
||||
PLATFORMS
|
||||
ruby
|
||||
|
||||
DEPENDENCIES
|
||||
nokogiri
|
||||
pry
|
||||
rake
|
||||
rerun
|
||||
roda
|
||||
|
||||
BUNDLED WITH
|
||||
2.1.2
|
@ -0,0 +1,17 @@
|
||||
desc "Run RZZ in development mode"
|
||||
task :dev do
|
||||
sh "rerun -- rackup"
|
||||
end
|
||||
|
||||
namespace :docker do
|
||||
TAG = "kejadlen/rzz"
|
||||
|
||||
task :build do
|
||||
sh "docker build --tag #{TAG} ."
|
||||
end
|
||||
|
||||
task push: :build do
|
||||
sh "docker push #{TAG}"
|
||||
end
|
||||
end
|
||||
|
@ -0,0 +1,3 @@
|
||||
require_relative "rzz"
|
||||
|
||||
run Rzz::App.freeze.app
|
@ -0,0 +1,44 @@
|
||||
require "digest/sha1"
|
||||
require "open-uri"
|
||||
|
||||
require "nokogiri"
|
||||
require "roda"
|
||||
|
||||
module Rzz
|
||||
|
||||
class App < Roda
|
||||
plugin :caching
|
||||
|
||||
route do |r|
|
||||
r.get do
|
||||
r.is "test-gym" do
|
||||
url = "https://elemental.medium.com/feed/"
|
||||
xml = URI.open(url).read
|
||||
r.etag Digest::SHA1.hexdigest(xml)
|
||||
|
||||
doc = Nokogiri::XML(xml)
|
||||
doc
|
||||
.xpath("/rss/channel/item")
|
||||
.select {|item| item.xpath("./category[text()='test-gym']").empty? }
|
||||
.each(&:remove)
|
||||
|
||||
doc
|
||||
.xpath("/rss/channel/item")
|
||||
.each do |item|
|
||||
link = item.at_xpath("./link/text()").content
|
||||
item.at_xpath("./description/text()").content = URI.open(link).read
|
||||
end
|
||||
|
||||
response.headers["Content-Type"] = "text/xml"
|
||||
doc.to_xml
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
if __FILE__ == $0
|
||||
require "pry"
|
||||
binding.pry
|
||||
end
|
Loading…
Reference in new issue