It seems like something didn't quite work out as expected!
-
\ No newline at end of file
diff --git a/examples/utopia/pages/errors/file-not-found.xnode b/examples/utopia/pages/errors/file-not-found.xnode
deleted file mode 100644
index 3d69691..0000000
--- a/examples/utopia/pages/errors/file-not-found.xnode
+++ /dev/null
@@ -1,5 +0,0 @@
-
- File Not Found
-
-
The file you requested is unfortunately not available at this time!
-
\ No newline at end of file
diff --git a/examples/utopia/pages/links.yaml b/examples/utopia/pages/links.yaml
deleted file mode 100644
index c399ac4..0000000
--- a/examples/utopia/pages/links.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
-errors:
- display: false
diff --git a/examples/utopia/pages/server/controller.rb b/examples/utopia/pages/server/controller.rb
deleted file mode 100644
index 7785a56..0000000
--- a/examples/utopia/pages/server/controller.rb
+++ /dev/null
@@ -1,37 +0,0 @@
-# frozen_string_literal: true
-
-# Released under the MIT License.
-# Copyright, 2018-2022, by Samuel Williams.
-
-prepend Actions
-
-require 'chat'
-require 'async/websocket/adapters/rack'
-
-on 'connect' do |request|
- channel = "chat.general"
-
- response = Async::WebSocket::Adapters::Rack.open(request.env) do |connection|
- client = Chat::Redis.instance
-
- subscription_task = Async do
- client.subscribe(channel) do |context|
- while true
- type, name, message = context.listen
-
- # The message is text, but contains JSON.
- connection.send_text(message)
- connection.flush
- end
- end
- end
-
- while message = connection.read
- client.publish(channel, message.buffer)
- end
- ensure
- subscription_task&.stop
- end
-
- respond?(response)
-end
diff --git a/examples/utopia/public/_static/icon.png b/examples/utopia/public/_static/icon.png
deleted file mode 100644
index fd1100a..0000000
Binary files a/examples/utopia/public/_static/icon.png and /dev/null differ
diff --git a/examples/utopia/public/_static/site.css b/examples/utopia/public/_static/site.css
deleted file mode 100644
index bc55ba7..0000000
--- a/examples/utopia/public/_static/site.css
+++ /dev/null
@@ -1,213 +0,0 @@
-
-html {
- font-family: "PT Sans", Verdana, Helvetica, Arial, sans-serif;
- font-size: 16px;
-}
-
-pre {
- tab-size: 2;
-}
-
-@media (min-width: 40em) {
- html {
- font-size: 18px;
- }
-
- pre {
- tab-size: 4;
- }
-}
-
-@media (min-width: 80em) {
- html {
- font-size: 20px;
- }
-
- pre {
- tab-size: 4;
- }
-}
-
-body {
- padding: 0;
- margin: 0;
-
- background-color: #fafafa;
-}
-
-body > header {
- margin: 1rem 0 1rem 0;
-
- background-color: white;
-
- background-image: url(utopia-background.svg);
-
- box-shadow: 0 0 20px rgba(0, 0, 0, 0.1);
-}
-
-body > header img {
- display: block;
- margin: auto;
- height: 4rem;
-}
-
-p, ul, ol {
- color: #555;
-}
-
-p strong {
- color: #222;
-}
-
-h1, h2, h3, h4, h5, h6 {
- margin: 2rem 1rem 1rem 1rem;
- color: #4E8DD9;
-}
-
-h1 {
- margin-bottom: 4rem;
-}
-
-h2 {
- margin-top: 6rem;
-}
-
-img {
- border: none;
-}
-
-a {
- color: #33a;
-}
-
-a:hover {
- color: #55c;
-}
-
-p, ul, ol, dl, h3 {
- margin: 2rem;
-}
-
-li {
- margin: 0.2rem;
-}
-
-li > ul, li > ol {
- margin: 0;
-}
-
-pre {
- overflow: auto;
-
- padding: 1rem 2rem;
- font-size: 0.8rem;
-
- border-top: 1px solid #ccc;
- border-bottom: 1px solid #ccc;
-
- background-color: #eee;
-}
-
-h3 {
- border-bottom: 1px solid #ccf;
-}
-
-ul {
- margin-bottom: 1rem;
-}
-
-h2, h3, h4, h5, h6 {
- font-weight: normal;
-}
-
-body.front h1 {
- font-weight: normal;
- font-size: 300%;
- color: #F89432;
-
- text-align: center;
-}
-
-footer {
- text-align: right;
- margin: 2rem;
- font-size: 0.65rem;
- color: #aaa;
-}
-
-nav {
- position: absolute;
- margin: 2.5rem;
- font-size: 0.8rem;
- color: #aaa;
-}
-
-section.input {
- margin: 1rem;
-}
-
-section.input input {
- width: 100%;
-}
-
-section.features {
- display: flex;
- flex-wrap: wrap;
- justify-content: space-around;
-
- margin: 1rem;
-}
-
-section.features > div {
- box-sizing: border-box;
-
- flex-basis: 20rem;
- flex-grow: 1;
-
- color: #171e42;
- margin: 1rem;
- padding: 1rem;
-
- padding-left: 3rem;
-
- position: relative;
-}
-
-section.features > div i {
- position: absolute;
- left: 0rem;
-
- font-size: 1.5rem;
- text-align: center;
-
- width: 3rem;
- color: #fafafa;
- text-shadow: 0px 0px 1px #000;
-}
-
-section.features p {
- margin: 0;
- maring-bottom: 1rem;
- font-size: 80%;
-}
-
-section.features h2 {
- margin: 0;
- font-size: 1.1rem;
- padding: 0;
-}
-
-form fieldset {
- border: 0;
-}
-
-form fieldset textarea {
- box-sizing: border-box;
-
- width: 100%;
- height: 10rem;
-}
-
-form fieldset.footer {
- text-align: right;
-}
diff --git a/examples/utopia/public/_static/utopia-background.svg b/examples/utopia/public/_static/utopia-background.svg
deleted file mode 100644
index 6839ef5..0000000
--- a/examples/utopia/public/_static/utopia-background.svg
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
\ No newline at end of file
diff --git a/examples/utopia/public/_static/utopia.svg b/examples/utopia/public/_static/utopia.svg
deleted file mode 100755
index 380ecdb..0000000
--- a/examples/utopia/public/_static/utopia.svg
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
\ No newline at end of file
diff --git a/examples/utopia/public/readme.txt b/examples/utopia/public/readme.txt
deleted file mode 100644
index e252aa1..0000000
--- a/examples/utopia/public/readme.txt
+++ /dev/null
@@ -1 +0,0 @@
-This directory is required by Apache/Phusion Passenger and contains static assets that are typically served using sendfile.
\ No newline at end of file
diff --git a/examples/utopia/spec/spec_helper.rb b/examples/utopia/spec/spec_helper.rb
deleted file mode 100644
index 317fe01..0000000
--- a/examples/utopia/spec/spec_helper.rb
+++ /dev/null
@@ -1,19 +0,0 @@
-# frozen_string_literal: true
-
-# Released under the MIT License.
-# Copyright, 2018-2022, by Samuel Williams.
-
-require 'bundler/setup'
-require 'covered/rspec'
-require 'variant'
-
-Variant.force!(:testing)
-
-RSpec.configure do |config|
- # Enable flags like --only-failures and --next-failure
- config.example_status_persistence_file_path = '.rspec_status'
-
- config.expect_with :rspec do |c|
- c.syntax = :expect
- end
-end
diff --git a/examples/utopia/spec/website_context.rb b/examples/utopia/spec/website_context.rb
deleted file mode 100644
index 57c2f1d..0000000
--- a/examples/utopia/spec/website_context.rb
+++ /dev/null
@@ -1,57 +0,0 @@
-# frozen_string_literal: true
-
-# Released under the MIT License.
-# Copyright, 2018-2022, by Samuel Williams.
-
-require 'rack/test'
-require 'async/rspec/reactor'
-
-RSpec.shared_context "website" do
- include Rack::Test::Methods
-
- let(:rackup_path) {File.expand_path('../config.ru', __dir__)}
- let(:rackup_directory) {File.dirname(rackup_path)}
-
- let(:app) {Rack::Builder.parse_file(rackup_path).first}
-end
-
-RSpec.shared_examples_for "valid page" do |path|
- it "can access #{path}" do
- get path
-
- while last_response.redirect?
- follow_redirect!
- end
-
- expect(last_response.status).to be == 200
- end
-end
-
-RSpec.shared_context "server" do
- include_context "website"
- include_context Async::RSpec::Reactor
-
- before(:all) do
- require 'falcon/server'
- require 'async/io/unix_endpoint'
- require 'benchmark/http/spider'
- end
-
- before do
- @endpoint = Async::HTTP::Endpoint.parse("http://localhost", Async::IO::Endpoint.unix("server.ipc"))
-
- @server_task = reactor.async do
- middleware = Falcon::Server.middleware(app)
-
- server = Falcon::Server.new(middleware, endpoint)
-
- server.run
- end
- end
-
- after do
- @server_task.stop
- end
-
- let(:endpoint) {@endpoint}
-end
diff --git a/examples/utopia/spec/website_spec.rb b/examples/utopia/spec/website_spec.rb
deleted file mode 100644
index a6a08a6..0000000
--- a/examples/utopia/spec/website_spec.rb
+++ /dev/null
@@ -1,29 +0,0 @@
-# frozen_string_literal: true
-
-# Released under the MIT License.
-# Copyright, 2018-2022, by Samuel Williams.
-
-require_relative 'website_context'
-
-# Learn about best practice specs from http://betterspecs.org
-RSpec.describe "website", timeout: 120 do
- include_context "server"
-
- let(:spider) {Benchmark::HTTP::Spider.new(depth: 128)}
- let(:statistics) {Benchmark::HTTP::Statistics.new}
-
- it "should be responsive" do
- Async::HTTP::Client.open(endpoint, connection_limit: 8) do |client|
- spider.fetch(statistics, client, endpoint.url) do |method, uri, response|
- if response.failure?
- Console.logger.error{"#{method} #{uri} -> #{response.status}"}
- end
- end.wait
- end
-
- statistics.print
-
- expect(statistics.samples).to be_any
- expect(statistics.failed).to be_zero
- end
-end