Compare commits
No commits in common. "3a7d928c1f49c0a6672dcaa6b91d1eb7531d37f6" and "43164ddbca5d03951df509e7d607e417ea237cc8" have entirely different histories.
3a7d928c1f
...
43164ddbca
|
@ -1,17 +0,0 @@
|
||||||
# frozen_string_literal: true
|
|
||||||
|
|
||||||
require 'landline'
|
|
||||||
|
|
||||||
class App < Landline::App
|
|
||||||
path "/outer" do
|
|
||||||
path "/inner" do
|
|
||||||
get "/oucher" do
|
|
||||||
"Hello world"
|
|
||||||
end
|
|
||||||
remap __dir__
|
|
||||||
serve "*"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
run App.new
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
#
|
||||||
|
# ~/.bashrc
|
||||||
|
#
|
||||||
|
|
||||||
|
# If not running interactively, don't do anything
|
||||||
|
[[ $- != *i* ]] && return
|
||||||
|
|
||||||
|
# alias ls='ls --color=auto'
|
||||||
|
# alias grep='grep --color=auto'
|
||||||
|
# PS1='[\u@\h \W]\$ '
|
|
@ -3,10 +3,8 @@
|
||||||
$LOAD_PATH.unshift("#{File.dirname(__FILE__)}/lib")
|
$LOAD_PATH.unshift("#{File.dirname(__FILE__)}/lib")
|
||||||
require 'landline'
|
require 'landline'
|
||||||
|
|
||||||
ROOT=__dir__
|
|
||||||
|
|
||||||
app = Landline::Server.new do
|
app = Landline::Server.new do
|
||||||
root ROOT
|
root ENV["PWD"]
|
||||||
index ["index.html"]
|
index ["index.html"]
|
||||||
post "/" do
|
post "/" do
|
||||||
formdata = form if form?
|
formdata = form if form?
|
||||||
|
@ -14,7 +12,7 @@ app = Landline::Server.new do
|
||||||
if formdata
|
if formdata
|
||||||
formdata["form_files"].each do |file|
|
formdata["form_files"].each do |file|
|
||||||
filename = file.filename.split("/").last
|
filename = file.filename.split("/").last
|
||||||
`mv #{file.tempfile.path} #{ROOT}/files/#{filename}`
|
`mv #{file.tempfile.path} $PWD/files/#{filename}`
|
||||||
files[file.filename] = "<a href=\"files/#{filename}\">#{filename}</a>"
|
files[file.filename] = "<a href=\"files/#{filename}\">#{filename}</a>"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>Form upload test</title>
|
<title>Form upload test</title>
|
||||||
|
@ -7,42 +7,6 @@
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<script>
|
|
||||||
function postFile() {
|
|
||||||
let progress = document.getElementById('progress')
|
|
||||||
|
|
||||||
progress.style.display = 'block';
|
|
||||||
|
|
||||||
let formdata = new FormData();
|
|
||||||
|
|
||||||
let files = document.getElementById('form_files').files;
|
|
||||||
|
|
||||||
for (const file of files)
|
|
||||||
{
|
|
||||||
formdata.append('form_files[]', file);
|
|
||||||
}
|
|
||||||
|
|
||||||
let request = new XMLHttpRequest();
|
|
||||||
let filesize = 0;
|
|
||||||
for (const file of files) {
|
|
||||||
filesize = filesize + file.size;
|
|
||||||
}
|
|
||||||
console.log(filesize);
|
|
||||||
|
|
||||||
request.upload.addEventListener("progress", function(e) {
|
|
||||||
console.log(e.loaded);
|
|
||||||
if (e.loaded <= filesize) {
|
|
||||||
let percent = Math.round(e.loaded / filesize * 100);
|
|
||||||
progress.innerHTML = `${e.loaded} / ${filesize}`;
|
|
||||||
} else {
|
|
||||||
progress.innerHTML = 'Upload finished!';
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
request.open('post', '/');
|
|
||||||
request.send(formdata);
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
<h1>File uploader</h1>
|
<h1>File uploader</h1>
|
||||||
<hr/>
|
<hr/>
|
||||||
<p> Add files here: <p>
|
<p> Add files here: <p>
|
||||||
|
@ -51,11 +15,8 @@ function postFile() {
|
||||||
enctype="multipart/form-data">
|
enctype="multipart/form-data">
|
||||||
<input id="form_files" type="file" name="form_files[]" multiple>
|
<input id="form_files" type="file" name="form_files[]" multiple>
|
||||||
<label for="form_files">Attach file</label>
|
<label for="form_files">Attach file</label>
|
||||||
<button type="button" onclick="postFile();">"Send form"</button>
|
<input type="submit" value="Send form">
|
||||||
</form>
|
</form>
|
||||||
<p id="progress" style="display: none;">
|
|
||||||
Loading
|
|
||||||
</p>
|
|
||||||
<% if (defined? formdata) and formdata %>
|
<% if (defined? formdata) and formdata %>
|
||||||
<hr>
|
<hr>
|
||||||
<ul>
|
<ul>
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
Gem::Specification.new do |spec|
|
Gem::Specification.new do |spec|
|
||||||
spec.name = "landline"
|
spec.name = "landline"
|
||||||
spec.version = "0.13.1"
|
spec.version = "0.13.0"
|
||||||
spec.summary = "Elegant HTTP DSL"
|
spec.summary = "Elegant HTTP DSL"
|
||||||
spec.description = <<~DESC
|
spec.description = <<~DESC
|
||||||
Landline is a no-hard-dependencies HTTP routing DSL that was made entirely for fun.
|
Landline is a no-hard-dependencies HTTP routing DSL that was made entirely for fun.
|
||||||
|
@ -15,7 +15,5 @@ Gem::Specification.new do |spec|
|
||||||
spec.homepage = "https://adastra7.net/git/Yessiest/landline"
|
spec.homepage = "https://adastra7.net/git/Yessiest/landline"
|
||||||
spec.files = Dir["lib/**/*"]
|
spec.files = Dir["lib/**/*"]
|
||||||
spec.extra_rdoc_files = Dir["*.md"]
|
spec.extra_rdoc_files = Dir["*.md"]
|
||||||
spec.required_ruby_version = ">= 3.0.0"
|
spec.required_ruby_version = ">= 3.0.6"
|
||||||
|
|
||||||
spec.add_dependency 'base64', '~> 0.3.0'
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -12,7 +12,7 @@ require_relative 'landline/app'
|
||||||
# Landline is a backend framework born as a by-product of experimentation
|
# Landline is a backend framework born as a by-product of experimentation
|
||||||
module Landline
|
module Landline
|
||||||
# Landline version
|
# Landline version
|
||||||
VERSION = '0.13.1 "EDM Death Machine" (pre-alpha)'
|
VERSION = '0.13.0 "Realign" (pre-alpha)'
|
||||||
|
|
||||||
# Landline branding and version
|
# Landline branding and version
|
||||||
VLINE = "Landline/#{Landline::VERSION} (Ruby/#{RUBY_VERSION}/#{RUBY_RELEASE_DATE})\n".freeze
|
VLINE = "Landline/#{Landline::VERSION} (Ruby/#{RUBY_VERSION}/#{RUBY_RELEASE_DATE})\n".freeze
|
||||||
|
|
|
@ -27,9 +27,6 @@ module Landline
|
||||||
def call(env)
|
def call(env)
|
||||||
request = Landline::Request.new(env)
|
request = Landline::Request.new(env)
|
||||||
|
|
||||||
failed_msg = check_unicode(request)
|
|
||||||
return failed_msg.finalize if failed_msg
|
|
||||||
|
|
||||||
response = handle_jumps(request)
|
response = handle_jumps(request)
|
||||||
request.run_postprocessors(response)
|
request.run_postprocessors(response)
|
||||||
resp = response.finalize
|
resp = response.finalize
|
||||||
|
@ -57,22 +54,6 @@ module Landline
|
||||||
response
|
response
|
||||||
end
|
end
|
||||||
|
|
||||||
# Check that all important parameters are actually valid unicode
|
|
||||||
def check_unicode(request)
|
|
||||||
return false if request.path.valid_encoding? &&
|
|
||||||
request.query.query.valid_encoding? &&
|
|
||||||
request.server_name.valid_encoding?
|
|
||||||
|
|
||||||
response = Landline::Response.convert(
|
|
||||||
@properties["handle.default"].call(
|
|
||||||
400,
|
|
||||||
backtrace: ["Invalid unicode string"]
|
|
||||||
)
|
|
||||||
)
|
|
||||||
response.status = 400
|
|
||||||
response
|
|
||||||
end
|
|
||||||
|
|
||||||
# Inititalization block for property setup
|
# Inititalization block for property setup
|
||||||
def setup_properties(*_args, **_opts)
|
def setup_properties(*_args, **_opts)
|
||||||
{
|
{
|
||||||
|
@ -80,6 +61,7 @@ module Landline
|
||||||
"handle.default" => proc do |code, backtrace: nil, **_extra|
|
"handle.default" => proc do |code, backtrace: nil, **_extra|
|
||||||
page = Landline::Util.default_error_page(code, backtrace)
|
page = Landline::Util.default_error_page(code, backtrace)
|
||||||
headers = {
|
headers = {
|
||||||
|
"content-length": page.bytesize,
|
||||||
"content-type": "text/html",
|
"content-type": "text/html",
|
||||||
"x-cascade": true
|
"x-cascade": true
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue