Class MachineController
MVC Controller for /machine requests
Inherited Members
Namespace: DuetWebServer.Controllers
Assembly: DuetWebServer.dll
Syntax
[ApiController]
[Authorize(Policy = "readOnly")]
[Route("[controller]")]
public class MachineController : ControllerBase
Constructors
MachineController(IConfiguration, ILogger<MachineController>, IHostApplicationLifetime)
Create a new controller instance
Declaration
public MachineController(IConfiguration configuration, ILogger<MachineController> logger, IHostApplicationLifetime applicationLifetime)
Parameters
Type | Name | Description |
---|---|---|
IConfiguration | configuration | Launch configuration |
ILogger<MachineController> | logger | Logger instance |
IHostApplicationLifetime | applicationLifetime | Application lifecycle instance |
Methods
Connect(string?, ISessionStorage)
GET /machine/connect Check the password and register a new session on success
Declaration
[AllowAnonymous]
[HttpGet("connect")]
public Task<IActionResult> Connect(string? password, ISessionStorage sessionStorage)
Parameters
Type | Name | Description |
---|---|---|
string | password | Password to check |
ISessionStorage | sessionStorage | Session storage singleton |
Returns
Type | Description |
---|---|
Task<IActionResult> | HTTP status code: (200) Session key (403) Forbidden (500) Generic error (502) Incompatible DCS version (503) DCS is unavailable |
CreateDirectory(string)
PUT /machine/directory/{directory} Create the given directory.
Declaration
[Authorize(Policy = "readWrite")]
[HttpPut("directory/{*directory}")]
public Task<IActionResult> CreateDirectory(string directory)
Parameters
Type | Name | Description |
---|---|---|
string | directory | Directory to create |
Returns
Type | Description |
---|---|
Task<IActionResult> | HTTP status code: (204) Directory created (500) Generic error (502) Incompatible DCS version (503) DCS is unavailable |
DeleteFileOrDirectory(string, bool)
DELETE /machine/file/{filename} Delete the given file or directory.
Declaration
[Authorize(Policy = "readWrite")]
[HttpDelete("file/{*filename}")]
public Task<IActionResult> DeleteFileOrDirectory(string filename, bool recursive = false)
Parameters
Type | Name | Description |
---|---|---|
string | filename | File or directory to delete |
bool | recursive | Whether the directory shall be deleted recursively |
Returns
Type | Description |
---|---|
Task<IActionResult> | HTTP status code: (204) File or directory deleted (404) File not found (500) Generic error (502) Incompatible DCS version (503) DCS is unavailable |
Disconnect(ISessionStorage)
GET /machine/disconnect Remove the current HTTP session again
Declaration
[AllowAnonymous]
[HttpGet("disconnect")]
public Task<IActionResult> Disconnect(ISessionStorage sessionStorage)
Parameters
Type | Name | Description |
---|---|---|
ISessionStorage | sessionStorage | Session storage singleton |
Returns
Type | Description |
---|---|
Task<IActionResult> | HTTP status code: (204) No Content (500) Generic error (502) Incompatible DCS version (503) DCS is unavailable |
DoCode(ISessionStorage, bool)
POST /machine/code Execute plain G/M/T-code(s) from the request body and return the G-code response when done.
Declaration
[HttpPost("code")]
[Authorize(Policy = "readWrite")]
public Task<IActionResult> DoCode(ISessionStorage sessionStorage, bool async = false)
Parameters
Type | Name | Description |
---|---|---|
ISessionStorage | sessionStorage | Session storage singleton |
bool | async | Execute code asynchronously (don't wait for a code result) |
Returns
Type | Description |
---|---|
Task<IActionResult> | HTTP status code: (200) G-Code response as text/plain (500) Generic error (502) Incompatible DCS version (503) DCS is unavailable |
DownloadFile(string)
GET /machine/file/{filename} Download the specified file.
Declaration
[HttpGet("file/{*filename}")]
public Task<IActionResult> DownloadFile(string filename)
Parameters
Type | Name | Description |
---|---|---|
string | filename | File to download |
Returns
Type | Description |
---|---|
Task<IActionResult> | HTTP status code: (200) File content (404) File not found (500) Generic error (502) Incompatible DCS version (503) DCS is unavailable |
GetFileInfo(string, bool)
GET /machine/fileinfo/{filename}?readThumbnailContent=true/false Parse a given G-code file and return information about this job file as a JSON object.
Declaration
[HttpGet("fileinfo/{*filename}")]
public Task<IActionResult> GetFileInfo(string filename, bool readThumbnailContent = false)
Parameters
Type | Name | Description |
---|---|---|
string | filename | G-code file to analyze |
bool | readThumbnailContent | Whether thumbnail content may be read |
Returns
Type | Description |
---|---|
Task<IActionResult> | HTTP status code: (200) File info as application/json (404) File not found (500) Generic error (502) Incompatible DCS (503) DCS is unavailable |
GetFileList(string?)
GET /machine/directory/{directory} Get a file list of the specified directory
Declaration
[HttpGet("directory/{*directory}")]
public Task<IActionResult> GetFileList(string? directory)
Parameters
Type | Name | Description |
---|---|---|
string | directory | Directory to query |
Returns
Type | Description |
---|---|
Task<IActionResult> | HTTP status code: (200) File list as application/json (404) Directory not found (500) Generic error (502) Incompatible DCS version (503) DCS is unavailable |
InstallPlugin(ISessionStorage)
PUT /machine/plugin Install or upgrade a plugin ZIP file
Declaration
[Authorize(Policy = "readWrite")]
[DisableRequestSizeLimit]
[HttpPut("plugin")]
public Task<IActionResult> InstallPlugin(ISessionStorage sessionStorage)
Parameters
Type | Name | Description |
---|---|---|
ISessionStorage | sessionStorage | Session storage singleton |
Returns
Type | Description |
---|---|
Task<IActionResult> | HTTP status code: (204) No content (500) Generic error occurred (502) Incompatible DCS version (503) DCS is unavailable |
InstallSystemPackage(ISessionStorage)
PUT /machine/systemPackage Install or upgrade a system package
Declaration
[Authorize(Policy = "readWrite")]
[DisableRequestSizeLimit]
[HttpPut("systemPackage")]
public Task<IActionResult> InstallSystemPackage(ISessionStorage sessionStorage)
Parameters
Type | Name | Description |
---|---|---|
ISessionStorage | sessionStorage | Session storage singleton |
Returns
Type | Description |
---|---|
Task<IActionResult> | HTTP status code: (204) No content (500) Generic error occurred (502) Incompatible DCS version (503) DCS is unavailable |
Model()
GET /machine/model
- and - GET /machine/status Retrieve the full object model as JSON.
Declaration
[HttpGet("model")]
[HttpGet("status")]
public Task<IActionResult> Model()
Returns
Type | Description |
---|---|
Task<IActionResult> | HTTP status code: (200) Object model as application/json (500) Generic error (502) Incompatible DCS version (503) DCS is unavailable |
MoveFileOrDirectory(string, string, bool)
Move a file or directory from a to b
Declaration
[Authorize(Policy = "readWrite")]
[HttpPost("file/move")]
public Task<IActionResult> MoveFileOrDirectory(string from, string to, bool force = false)
Parameters
Type | Name | Description |
---|---|---|
string | from | Source path |
string | to | Destination path |
bool | force | Delete existing file (optional, default false) |
Returns
Type | Description |
---|---|
Task<IActionResult> | HTTP status code: (204) File or directory moved (404) File or directory not found (500) Generic error (502) Incompatible DCS version (503) DCS is unavailable |
Noop()
GET /machine/noop Do nothing. May be used to ping the machine or to keep the HTTP session alive
Declaration
[HttpGet("noop")]
public IActionResult Noop()
Returns
Type | Description |
---|---|
IActionResult | HTTP status code: (204) No Content |
SetPluginData()
PATCH /machine/plugin Set plugin data in the object model if there is no SBC executable.
Declaration
[Authorize(Policy = "readWrite")]
[DisableRequestSizeLimit]
[HttpPatch("plugin")]
public Task<IActionResult> SetPluginData()
Returns
Type | Description |
---|---|
Task<IActionResult> | HTTP status code: (204) No content (500) Generic error occurred (502) Incompatible DCS version (503) DCS is unavailable |
StartPlugin()
POST /machine/startPlugin Start a plugin on the SBC
Declaration
[Authorize(Policy = "readWrite")]
[HttpPost("startPlugin")]
public Task<IActionResult> StartPlugin()
Returns
Type | Description |
---|---|
Task<IActionResult> | HTTP status code: (204) No content (500) Generic error occurred (502) Incompatible DCS version (503) DCS is unavailable |
StopPlugin()
POST /machine/stopPlugin Stop a plugin on the SBC
Declaration
[Authorize(Policy = "readWrite")]
[HttpPost("stopPlugin")]
public Task<IActionResult> StopPlugin()
Returns
Type | Description |
---|---|
Task<IActionResult> | HTTP status code: (204) No content (500) Generic error occurred (502) Incompatible DCS version (503) DCS is unavailable |
UninstallPlugin(ISessionStorage)
DELETE /machine/plugin Uninstall a plugin
Declaration
[Authorize(Policy = "readWrite")]
[HttpDelete("plugin")]
public Task<IActionResult> UninstallPlugin(ISessionStorage sessionStorage)
Parameters
Type | Name | Description |
---|---|---|
ISessionStorage | sessionStorage | Session storage singleton |
Returns
Type | Description |
---|---|
Task<IActionResult> | HTTP status code: (204) No content (500) Generic error occurred (502) Incompatible DCS version (503) DCS is unavailable |
UninstallSystemPackage(ISessionStorage)
DELETE /machine/systemPackage Uninstall a system package
Declaration
[Authorize(Policy = "readWrite")]
[HttpDelete("systemPackage")]
public Task<IActionResult> UninstallSystemPackage(ISessionStorage sessionStorage)
Parameters
Type | Name | Description |
---|---|---|
ISessionStorage | sessionStorage | Session storage singleton |
Returns
Type | Description |
---|---|
Task<IActionResult> | HTTP status code: (204) No content (500) Generic error occurred (502) Incompatible DCS version (503) DCS is unavailable |
UploadFile(string, DateTime?, ISessionStorage)
PUT /machine/file/{filename}?timeModified={timeModified} Upload a file from the HTTP body and create the subdirectories if necessary
Declaration
[Authorize(Policy = "readWrite")]
[DisableRequestSizeLimit]
[HttpPut("file/{*filename}")]
public Task<IActionResult> UploadFile(string filename, DateTime? timeModified, ISessionStorage sessionStorage)
Parameters
Type | Name | Description |
---|---|---|
string | filename | Destination of the file to upload |
DateTime? | timeModified | |
ISessionStorage | sessionStorage | Session storage singleton |
Returns
Type | Description |
---|---|
Task<IActionResult> | HTTP status code: (201) File created (500) Generic error occurred (502) Incompatible DCS version (503) DCS is unavailable |