完成?

This commit is contained in:
Rikuoh Tsujitani 2024-08-11 18:55:47 +09:00
parent 2490b62e8b
commit f80bbb7dfe
Signed by: riq0h
GPG key ID: 010F09DEA298C717
2 changed files with 29 additions and 3 deletions

View file

@ -47,11 +47,15 @@ GEM
loofah (2.22.0) loofah (2.22.0)
crass (~> 1.0.2) crass (~> 1.0.2)
nokogiri (>= 1.12.0) nokogiri (>= 1.12.0)
mini_portile2 (2.8.7)
minitest (5.23.1) minitest (5.23.1)
multi_json (1.15.0) multi_json (1.15.0)
mustermann (3.0.0) mustermann (3.0.0)
ruby2_keywords (~> 0.0.1) ruby2_keywords (~> 0.0.1)
mutex_m (0.2.0) mutex_m (0.2.0)
nokogiri (1.16.7)
mini_portile2 (~> 2.8.2)
racc (~> 1.4)
nokogiri (1.16.7-x86_64-linux) nokogiri (1.16.7-x86_64-linux)
racc (~> 1.4) racc (~> 1.4)
parallel (1.24.0) parallel (1.24.0)
@ -89,6 +93,12 @@ GEM
unicode-display_width (>= 2.4.0, < 3.0) unicode-display_width (>= 2.4.0, < 3.0)
rubocop-ast (1.31.3) rubocop-ast (1.31.3)
parser (>= 3.3.1.0) parser (>= 3.3.1.0)
rubocop-fjord (0.3.0)
rubocop (>= 1.0)
rubocop-performance
rubocop-performance (1.21.1)
rubocop (>= 1.48.1, < 2.0)
rubocop-ast (>= 1.31.1, < 2.0)
ruby-progressbar (1.13.0) ruby-progressbar (1.13.0)
ruby2_keywords (0.0.5) ruby2_keywords (0.0.5)
sinatra (4.0.0) sinatra (4.0.0)
@ -117,6 +127,7 @@ PLATFORMS
DEPENDENCIES DEPENDENCIES
erb_lint erb_lint
rubocop-fjord
sinatra sinatra
sinatra-contrib sinatra-contrib
webrick webrick

View file

@ -4,11 +4,26 @@ require 'sinatra'
require 'sinatra/reloader' require 'sinatra/reloader'
require 'json' require 'json'
require 'securerandom' require 'securerandom'
require 'rack/protection'
require 'rack/utils'
use Rack::Protection
helpers do
include Rack::Utils
alias_method :h, :escape_html
end
FILE_PATH = 'memos.json' # publicフォルダから移動 FILE_PATH = 'memos.json' # publicフォルダから移動
def load_memos def load_memos
File.exist?(FILE_PATH) ? JSON.parse(File.read(FILE_PATH)) : {} if File.exist?(FILE_PATH) && !File.zero?(FILE_PATH)
JSON.parse(File.read(FILE_PATH))
else
{}
end
rescue JSON::ParserError
{}
end end
def save_memos(memos) def save_memos(memos)
@ -33,7 +48,7 @@ end
post '/memos' do post '/memos' do
memos = load_memos memos = load_memos
id = SecureRandom.uuid id = SecureRandom.uuid
memos[id] = { 'title' => params[:title], 'content' => params[:content] } memos[id] = { 'title' => h(params[:title]), 'content' => h(params[:content]) }
save_memos(memos) save_memos(memos)
redirect '/memos' redirect '/memos'
end end
@ -53,7 +68,7 @@ end
patch '/memos/:id' do patch '/memos/:id' do
memos = load_memos memos = load_memos
halt 404, erb(:not_found) unless memos[params[:id]] halt 404, erb(:not_found) unless memos[params[:id]]
memos[params[:id]] = { 'title' => params[:title], 'content' => params[:content] } memos[params[:id]] = { 'title' => h(params[:title]), 'content' => h(params[:content]) }
save_memos(memos) save_memos(memos)
redirect "/memos/#{params[:id]}" redirect "/memos/#{params[:id]}"
end end