Api
Documentation for Oxygen.jl
Starting the webserver
Oxygen.serve
— Functionserve(; middleware::Vector=[], handler=stream_handler, host="127.0.0.1", port=8080, async=false, parallel=false, serialize=true, catch_errors=true, docs=true, metrics=true, show_errors=true, show_banner=true, docs_path="/docs", schema_path="/schema", external_url=nothing, kwargs...)
Start the webserver with your own custom request handler
Oxygen.serveparallel
— Functionserveparallel(; middleware::Vector=[], handler=stream_handler, host="127.0.0.1", port=8080, serialize=true, async=false, catch_errors=true, docs=true, metrics=true, kwargs...)
Routing
Oxygen.@get
— Macro@get(path::String, func::Function)
Used to register a function to a specific endpoint to handle GET requests
Oxygen.@post
— Macro@post(path::String, func::Function)
Used to register a function to a specific endpoint to handle POST requests
Oxygen.@put
— Macro@put(path::String, func::Function)
Used to register a function to a specific endpoint to handle PUT requests
Oxygen.@patch
— Macro@patch(path::String, func::Function)
Used to register a function to a specific endpoint to handle PATCH requests
Oxygen.@delete
— Macro@delete(path::String, func::Function)
Used to register a function to a specific endpoint to handle DELETE requests
Oxygen.@route
— Macro@route(methods::Array{String}, path::String, func::Function)
Used to register a function to a specific endpoint to handle mulitiple request types
Missing docstring for get(path, func)
. Check Documenter's build log for details.
Missing docstring for post(path, func)
. Check Documenter's build log for details.
Missing docstring for put(path, func)
. Check Documenter's build log for details.
Missing docstring for patch(path, func)
. Check Documenter's build log for details.
Missing docstring for delete(path, func)
. Check Documenter's build log for details.
Missing docstring for route(methods, path, func)
. Check Documenter's build log for details.
Mounting Files
Oxygen.@staticfiles
— Macro@staticfiles(folder::String, mountdir::String, headers::Vector{Pair{String,String}}=[])
Mount all files inside the /static folder (or user defined mount point)
Oxygen.@dynamicfiles
— Macro@dynamicfiles(folder::String, mountdir::String, headers::Vector{Pair{String,String}}=[])
Mount all files inside the /static folder (or user defined mount point), but files are re-read on each request
Oxygen.staticfiles
— Functionstaticfiles(folder::String, mountdir::String; headers::Vector{Pair{String,String}}=[], loadfile::Union{Function,Nothing}=nothing)
Mount all files inside the /static folder (or user defined mount point). The headers
array will get applied to all mounted files
Oxygen.dynamicfiles
— Functiondynamicfiles(folder::String, mountdir::String; headers::Vector{Pair{String,String}}=[], loadfile::Union{Function,Nothing}=nothing)
Mount all files inside the /static folder (or user defined mount point), but files are re-read on each request. The headers
array will get applied to all mounted files
Autogenerated Docs
Oxygen.configdocs
— Functionconfigdocs(docspath::String = "/docs", schemapath::String = "/schema")
Configure the default docs and schema endpoints
Missing docstring for enabledocs
. Check Documenter's build log for details.
Missing docstring for disabledocs
. Check Documenter's build log for details.
Missing docstring for isdocsenabled
. Check Documenter's build log for details.
Oxygen.mergeschema
— Functionmergeschema(route::String, customschema::Dict)
Merge the schema of a specific route
mergeschema(customschema::Dict)
Merge the top-level autogenerated schema with a custom schema
Oxygen.setschema
— Functionsetschema(customschema::Dict)
Overwrites the entire internal schema
Oxygen.getschema
— Functiongetschema()
Return the current internal schema for this app
Helper functions
Oxygen.Core.Util.queryparams
— Functionqueryparams(request::HTTP.Request)
Parse's the query parameters from the Requests URL and return them as a Dict
Oxygen.Core.Util.formdata
— Functionformdata(request::HTTP.Request)
Read the html form data from the body of a HTTP.Request
formdata(request::HTTP.Response)
Read the html form data from the body of a HTTP.Response
Oxygen.Core.Util.html
— Functionhtml(content::String; status::Int, headers::Vector{Pair}) :: HTTP.Response
A convenience function to return a String that should be interpreted as HTML
Oxygen.Core.Util.text
— Functiontext(request::HTTP.Request)
Read the body of a HTTP.Request as a String
text(response::HTTP.Response)
Read the body of a HTTP.Response as a String
text(content::String; status::Int, headers::Vector{Pair}) :: HTTP.Response
A convenience function to return a String that should be interpreted as plain text
Oxygen.Core.Util.file
— Functionfile(filepath::String; loadfile=nothing, status = 200, headers = []) :: HTTP.Response
Reads a file and returns a HTTP.Response. The file is read as binary. If the file does not exist, an ArgumentError is thrown. The MIME type and the size of the file are added to the headers.
Arguments
filepath
: The path to the file to be read.loadfile
: An optional function to load the file. If not provided, the file is read using theopen
function.status
: The HTTP status code to be used in the response. Defaults to 200.headers
: Any additional headers to be included in the response. Defaults to an empty array.
Returns
- A HTTP response.
Oxygen.Core.Util.xml
— Functionxml(content::String; status::Int, headers::Vector{Pair}) :: HTTP.Response
A convenience function to return a String that should be interpreted as XML
Oxygen.Core.Util.js
— Functionjs(content::String; status::Int, headers::Vector{Pair}) :: HTTP.Response
A convenience function to return a String that should be interpreted as JavaScript
Oxygen.Core.Util.json
— Functionjson(request::HTTP.Request; keyword_arguments...)
Read the body of a HTTP.Request as JSON with additional arguments for the read/serializer.
json(request::HTTP.Request, classtype; keyword_arguments...)
Read the body of a HTTP.Request as JSON with additional arguments for the read/serializer into a custom struct.
json(response::HTTP.Response; keyword_arguments)
Read the body of a HTTP.Response as JSON with additional keyword arguments
json(response::HTTP.Response, classtype; keyword_arguments)
Read the body of a HTTP.Response as JSON with additional keyword arguments and serialize it into a custom struct
json(content::Any; status::Int, headers::Vector{Pair}) :: HTTP.Response
A convenience function to return a String that should be interpreted as JSON
json(content::Vector{UInt8}; status::Int, headers::Vector{Pair}) :: HTTP.Response
A helper function that can be passed binary data that should be interpreted as JSON. No conversion is done on the content since it's already in binary format.
Oxygen.Core.Util.css
— Functioncss(content::String; status::Int, headers::Vector{Pair}) :: HTTP.Response
A convenience function to return a String that should be interpreted as CSS
Oxygen.Core.Util.binary
— Functionbinary(request::HTTP.Request)
Read the body of a HTTP.Request as a Vector{UInt8}
binary(content::Vector{UInt8}; status::Int, headers::Vector{Pair}) :: HTTP.Response
A convenience function to return a Vector of UInt8 that should be interpreted as binary data
Repeat Tasks & Cron Scheduling
Oxygen.@cron
— Macro@cron(expression::String, func::Function)
Registers a function with a cron expression. This will extract either the function name or the random Id julia assigns to each lambda function.
@cron(expression::String, name::String, func::Function)
This variation provides way manually "name" a registered function. This information is used by the server on startup to log out all cron jobs.
Oxygen.starttasks
— Functionstarttasks()
Start all background repeat tasks
Oxygen.stoptasks
— Functionstoptasks()
Stop all background repeat tasks
Oxygen.cleartasks
— Functioncleartasks(ct::Context)
Clear any stored repeat task definitions
Oxygen.startcronjobs
— Functionstartcronjobs()
Start all the cron cronjobs within their own async task. Each individual task will loop conintually and sleep untill the next time it's suppost to
Oxygen.stopcronjobs
— Functionstopcronjobs()
Stop each background task by toggling a global reference that all cron jobs reference
Oxygen.clearcronjobs
— FunctionClears all cron job defintions
Missing docstring for clearcronjobs
. Check Documenter's build log for details.
Extra's
Oxygen.router
— FunctionNo documentation found.
Binding Oxygen.Core.AutoDoc.router
does not exist.
Oxygen.internalrequest
— Functioninternalrequest(req::HTTP.Request; middleware::Vector=[], serialize::Bool=true, catch_errors::Bool=true)
Directly call one of our other endpoints registered with the router, using your own middleware and bypassing any globally defined middleware
Oxygen.Core.Util.redirect
— Functionredirect(path::String; code = 308)
return a redirect response
Oxygen.terminate
— Functionterminate(ctx)
stops the webserver immediately
Oxygen.resetstate
— Functionresetstate()
Reset all the internal state variables