diff --git a/app/controllers/exceptions_controller.rb b/app/controllers/exceptions_controller.rb new file mode 100644 index 0000000..08111dd --- /dev/null +++ b/app/controllers/exceptions_controller.rb @@ -0,0 +1,9 @@ +class ExceptionsController < ApplicationController + def index + @pagy, @exceptions = pagy(ExceptionLog.order(id: :desc), items: 25) + end + + def show + @exception = ExceptionLog.find(params[:id]) + end +end diff --git a/app/javascript/styles/application.scss b/app/javascript/styles/application.scss index 4750858..c566b76 100644 --- a/app/javascript/styles/application.scss +++ b/app/javascript/styles/application.scss @@ -6,6 +6,7 @@ @import "yiff.media/home"; @import "yiff.rest/home"; @import "yiff.rocks/home"; +@import "exceptions"; div#notice { padding: 0.25em; @@ -51,3 +52,64 @@ body.c-application { .backtrace-line { list-style: none; } + +// Bootstrap does not have built in dark pagination +.pagy-bootstrap { + $gray-100: #f8f9fa; + $gray-600: #6c757d; + $gray-800: #343a40; + $pagination-focus-outline: 0; + $focus-ring-width: 0.25rem; + $focus-ring-opacity: 0.25; + $blue: #0d6efd; + $white: #fff; + $primary: $blue; + $focus-ring-color: rgba($primary, $focus-ring-opacity); + $focus-ring-blur: 0; + $focus-ring-box-shadow: 0 0 $focus-ring-blur $focus-ring-width + $focus-ring-color; + $pagination-focus-box-shadow: $focus-ring-box-shadow; + + $pagination-dark-color: $gray-100; + $pagination-dark-bg: $gray-800; + $pagination-dark-border-color: $gray-600; + + $pagination-dark-hover-color: $pagination-dark-color; + $pagination-dark-hover-bg: $gray-600; + $pagination-dark-hover-border-color: $pagination-dark-border-color; + $component-active-color: $white; + $component-active-bg: $primary; + $pagination-active-color: $component-active-color; + $pagination-active-bg: $component-active-bg; + $pagination-active-border-color: $component-active-bg; + + .page-link { + color: $pagination-dark-color; + background-color: $pagination-dark-bg; + border-color: $pagination-dark-border-color; + + &:hover { + color: $pagination-dark-hover-color; + background-color: $pagination-dark-hover-bg; + border-color: $pagination-dark-hover-border-color; + } + + &:focus { + outline: $pagination-focus-outline; + box-shadow: $pagination-focus-box-shadow; + } + } + + .page-item { + &.active .page-link { + color: $pagination-active-color; + background-color: $pagination-active-bg; + border-color: $pagination-active-border-color; + } + + &.disabled .page-link { + background-color: $pagination-dark-bg; + border-color: $pagination-dark-border-color; + } + } +} diff --git a/app/javascript/styles/exceptions.scss b/app/javascript/styles/exceptions.scss new file mode 100644 index 0000000..20c8bf8 --- /dev/null +++ b/app/javascript/styles/exceptions.scss @@ -0,0 +1,12 @@ +body.c-exceptions { + background-color: #2C2F33; + color: #FFFDD0; + + a { + color: #FFF; + } +} + +.backtrace-line { + list-style: none; +} diff --git a/app/javascript/styles/yiff.rest/v2.scss b/app/javascript/styles/yiff.rest/v2.scss index 1a32f21..3e014bb 100644 --- a/app/javascript/styles/yiff.rest/v2.scss +++ b/app/javascript/styles/yiff.rest/v2.scss @@ -7,67 +7,6 @@ body.s-v2-yiff-rest { text-decoration: none; } - // Bootstrap does not have built in dark pagination - .pagy-bootstrap { - $gray-100: #f8f9fa; - $gray-600: #6c757d; - $gray-800: #343a40; - $pagination-focus-outline: 0; - $focus-ring-width: 0.25rem; - $focus-ring-opacity: 0.25; - $blue: #0d6efd; - $white: #fff; - $primary: $blue; - $focus-ring-color: rgba($primary, $focus-ring-opacity); - $focus-ring-blur: 0; - $focus-ring-box-shadow: 0 0 $focus-ring-blur $focus-ring-width - $focus-ring-color; - $pagination-focus-box-shadow: $focus-ring-box-shadow; - - $pagination-dark-color: $gray-100; - $pagination-dark-bg: $gray-800; - $pagination-dark-border-color: $gray-600; - - $pagination-dark-hover-color: $pagination-dark-color; - $pagination-dark-hover-bg: $gray-600; - $pagination-dark-hover-border-color: $pagination-dark-border-color; - $component-active-color: $white; - $component-active-bg: $primary; - $pagination-active-color: $component-active-color; - $pagination-active-bg: $component-active-bg; - $pagination-active-border-color: $component-active-bg; - - .page-link { - color: $pagination-dark-color; - background-color: $pagination-dark-bg; - border-color: $pagination-dark-border-color; - - &:hover { - color: $pagination-dark-hover-color; - background-color: $pagination-dark-hover-bg; - border-color: $pagination-dark-hover-border-color; - } - - &:focus { - outline: $pagination-focus-outline; - box-shadow: $pagination-focus-box-shadow; - } - } - - .page-item { - &.active .page-link { - color: $pagination-active-color; - background-color: $pagination-active-bg; - border-color: $pagination-active-border-color; - } - - &.disabled .page-link { - background-color: $pagination-dark-bg; - border-color: $pagination-dark-border-color; - } - } - } - .category-list, .category-image-list { a { color: #ede660; diff --git a/app/logical/yiffyapi_error_codes.rb b/app/logical/yiffyapi_error_codes.rb index d83bc27..93a6fa7 100644 --- a/app/logical/yiffyapi_error_codes.rb +++ b/app/logical/yiffyapi_error_codes.rb @@ -30,11 +30,10 @@ class YiffyAPIErrorCodes METHOD_NOT_ALLOWED = new(1025, 405) # legacy codes that are spread out - # unused - IMAGES_INVALID_RESPONSE_TYPE = new(1023, nil) + IMAGES_INVALID_RESPONSE_TYPE = new(1023, nil) # unused IMAGES_CATEGORY_NOT_FOUND = new(1030, 404) - # unused - IMAGES_EMPTY_CATEGORY = new(1031, nil) + + IMAGES_EMPTY_CATEGORY = new(1031, nil) # unused IMAGES_NOT_FOUND = new(1040, 404) IMAGES_NO_RESULTS = new(1041, 400) IMAGES_AMOUNT_LT_ONE = new(1051, 400) diff --git a/app/models/api_image.rb b/app/models/api_image.rb index c761bb6..30af06b 100644 --- a/app/models/api_image.rb +++ b/app/models/api_image.rb @@ -35,7 +35,7 @@ class APIImage < ApplicationRecord invalidate_cache end - def file_header_info(file_path) + def file_header_info(file_path) File.open(file_path) do |bin| mime_type = Marcel::MimeType.for(bin) ext = case mime_type diff --git a/app/views/exceptions/index.html.erb b/app/views/exceptions/index.html.erb new file mode 100644 index 0000000..cb65856 --- /dev/null +++ b/app/views/exceptions/index.html.erb @@ -0,0 +1,30 @@ +
Created At | +Code | +Commit | +Controller/Action | +Message | +Stacktrace | +
---|---|---|---|---|---|
<%= compact_time(exception.created_at) %> | +<%= exception.code %> | +<%= exception.version.present? ? link_to(exception.version, GitHelper.commit_url(exception.version)) : "Unknown" %> | +<%= exception.extra_params.dig("params", "controller") %>/<%= exception.extra_params.dig("params", "action") %> | +<%= truncate(exception.message, length: 50) %> | +<%= link_to("View", exception_path(exception)) %> | +
<%= @exception.message %>
+ <%= JSON.pretty_generate(@exception.extra_params) %>+ Stacktrace: +
<%= Rails.backtrace_cleaner.clean(@exception.trace.split("\n")).join("\n") %>+ Raw Stacktrace: +
<%= @exception.trace %>+