mirror of
https://github.com/hkalexling/Mango.git
synced 2025-08-03 11:25:29 -04:00
63 lines
1.2 KiB
Crystal
63 lines
1.2 KiB
Crystal
IMGS_PER_PAGE = 5
|
|
UPLOAD_URL_PREFIX = "/uploads"
|
|
STATIC_DIRS = ["/css", "/js", "/img", "/favicon.ico"]
|
|
|
|
def random_str
|
|
UUID.random.to_s.gsub "-", ""
|
|
end
|
|
|
|
# Works in all Unix systems. Follows https://github.com/crystal-lang/crystal/
|
|
# blob/master/src/crystal/system/unix/file_info.cr#L42-L48
|
|
def ctime(file_path : String) : Time
|
|
res = LibC.stat(file_path, out stat)
|
|
raise "Unable to get ctime of file #{file_path}" if res != 0
|
|
|
|
{% if flag?(:darwin) %}
|
|
Time.new stat.st_ctimespec, Time::Location::UTC
|
|
{% else %}
|
|
Time.new stat.st_ctim, Time::Location::UTC
|
|
{% end %}
|
|
end
|
|
|
|
def register_mime_types
|
|
{
|
|
".zip" => "application/zip",
|
|
".rar" => "application/x-rar-compressed",
|
|
".cbz" => "application/vnd.comicbook+zip",
|
|
".cbr" => "application/vnd.comicbook-rar",
|
|
}.each do |k, v|
|
|
MIME.register k, v
|
|
end
|
|
end
|
|
|
|
struct Int
|
|
def or(other : Int)
|
|
if self == 0
|
|
other
|
|
else
|
|
self
|
|
end
|
|
end
|
|
end
|
|
|
|
struct Nil
|
|
def or(other : Int)
|
|
other
|
|
end
|
|
end
|
|
|
|
macro use_default
|
|
def self.default : self
|
|
unless @@default
|
|
@@default = new
|
|
end
|
|
@@default.not_nil!
|
|
end
|
|
end
|
|
|
|
class String
|
|
def alphanumeric_underscore?
|
|
self.chars.all? { |c| c.alphanumeric? || c == '_' }
|
|
end
|
|
end
|