Julia lang server running Autoskola 8 Free - free download and GPL3 code

Julia lang server running Autoskola 8 Free - free download and GPL3 code

If the images are too small, just right click to open in a new tab of browser ;) https://hrubos.tech/repo/server_julia_language.zip Code developed with help of AI in 30 min time:

# GPLv3 License Mgr. Jan Hrubos
import Pkg
using Sockets
using Logging # Ensure Logging is explicitly used

# Ensure necessary packages are installed and loaded
function ensure_package(pkg::String)
    try
        @eval using $(Symbol(pkg))
        @debug "Balík $pkg už je nainštalovaný a načítaný."
    catch
        @info "Balík $pkg nie je nainštalovaný, inštalujem..."
        Pkg.add(pkg)
        @eval using $(Symbol(pkg))
        @info "Balík $pkg úspešne nainštalovaný a načítaný."
    end
end

ensure_package("HTTP")
ensure_package("Logging") # No need to call this again, it's already done by ensure_package
                         # However, it's good practice to ensure it's loaded before its first use

# Set up logging for better insights
global_logger(ConsoleLogger(stderr, Logging.Info))

# Define the root directory for serving files
const ROOT = @__DIR__

"""
    content_type(path::String)

Determines the appropriate Content-Type header based on the file extension.
"""
function content_type(path::String)
    ext = lowercase(splitext(path)[2])
    return if ext == ".html"
        "text/html; charset=utf-8"
    elseif ext == ".css"
        "text/css; charset=utf-8"
    elseif ext == ".js"
        "application/javascript; charset=utf-8"
    elseif ext == ".json"
        "application/json; charset=utf-8"
    elseif ext == ".ico"
        "image/x-icon"
    elseif ext == ".png"
        "image/png"
    elseif ext == ".jpg" || ext == ".jpeg"
        "image/jpeg"
    elseif ext == ".gif"
        "image/gif"
    elseif ext == ".svg"
        "image/svg+xml"
    else
        "text/plain; charset=utf-8" # Default for unknown types
    end
end

"""
    handler(req::HTTP.Request)

Handles incoming HTTP requests, serving static files or returning 404.
"""
function handler(req::HTTP.Request)
    target_path = String(req.target)
    @info "Prijatá požiadavka: $(req.method) $target_path"

    # Handle favicon requests efficiently
    if target_path == "/favicon.ico"
        @debug "Obsluhujem favicon.ico s 204 No Content."
        return HTTP.Response(204) # No Content
    end

    # Map root path to index.html
    file_name = (target_path == "/" || isempty(target_path)) ? "index.html" : target_path[2:end]
    file_path = joinpath(ROOT, file_name)

    if isfile(file_path)
        try
            content = read(file_path)
            mime_type = content_type(file_path)
            hdrs = HTTP.Headers(["Content-Type" => mime_type])
            @info "Súbor nájdený: $(file_path) (Typ: $(mime_type)), vrátený 200 OK."
            return HTTP.Response(200, hdrs, content)
        catch e
            @error "Chyba pri čítaní súboru $(file_path): $e"
            hdrs = HTTP.Headers(["Content-Type" => "text/plain; charset=utf-8"])
            return HTTP.Response(500, hdrs, "Interná chyba servera pri čítaní súboru.")
        end
    else
        hdrs = HTTP.Headers(["Content-Type" => "text/plain; charset=utf-8"])
        @warn "Súbor nenájdený: $(file_path), vrátený 404 Not Found."
        return HTTP.Response(404, hdrs, "Súbor '$file_name' sa nenašiel na serveri.")
    end
end

"""
    open_browser(url::String)

Attempts to open the given URL in the default web browser.
"""
function open_browser(url::String)
    try
        if Sys.iswindows()
            run(`cmd /c start $url`)
        elseif Sys.isapple()
            run(`open $url`)
        elseif Sys.islinux()
            run(`xdg-open $url`)
        else
            @warn "Nepodarilo sa automaticky otvoriť prehliadač: Neznámy operačný systém."
        end
        @info "Pokus o otvorenie prehliadača na $url"
    catch e
        @warn "Nepodarilo sa otvoriť prehliadač: $e"
    end
end

"""
    start_server(host::Sockets.IPAddr=ip"127.0.0.1", port::Int=8080)

Starts the HTTP server on the specified host and port.
"""
function start_server(host::Sockets.IPAddr=ip"127.0.0.1", port::Int=8080)
    url = "http://$host:$port"
    @info "Spúšťam server na $url. Ak chcete server zastaviť, stlačte Ctrl+C."

    # Open browser after a short delay to allow server to start
    @async begin
        sleep(1.5) # Give the server a bit more time to fully initialize
        open_browser(url)
    end

    try
        HTTP.serve(handler, host, port)
    catch e
        if isa(e, InterruptException)
            @info "Server bol zastavený používateľom (Ctrl+C)."
        else
            @error "Chyba servera: $e"
        end
    end
end

# Start the server when the script is run
start_server()

julia server running autoskola free 8


Author: AarNoma

The first Slovak cyborg 1 system

Comments “Julia lang server running Autoskola 8 Free - free download and GPL3 code”