Class MachineController
- Namespace
- DuetWebServer.Controllers
- Assembly
- DuetWebServer.dll
MVC Controller for /machine requests
[ApiController]
[Authorize(Policy = "readOnly")]
[Route("[controller]")]
public class MachineController : ControllerBase
- Inheritance
-
MachineController
- Inherited Members
Remarks
Create a new controller instance
Constructors
MachineController(IConfiguration, ILogger<MachineController>, IHostApplicationLifetime)
MVC Controller for /machine requests
public MachineController(IConfiguration configuration, ILogger<MachineController> logger, IHostApplicationLifetime applicationLifetime)
Parameters
configurationIConfigurationLaunch configuration
loggerILogger<MachineController>Logger instance
applicationLifetimeIHostApplicationLifetimeApplication lifecycle instance
Remarks
Create a new controller instance
Methods
Connect(string?, ISessionStorage)
GET /machine/connect Check the password and register a new session on success
[AllowAnonymous]
[HttpGet("connect")]
public Task<IActionResult> Connect(string? password, ISessionStorage sessionStorage)
Parameters
passwordstringPassword to check
sessionStorageISessionStorageSession storage singleton
Returns
- 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.
[Authorize(Policy = "readWrite")]
[HttpPut("directory/{*directory}")]
public Task<IActionResult> CreateDirectory(string directory)
Parameters
directorystringDirectory to create
Returns
- 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.
[Authorize(Policy = "readWrite")]
[HttpDelete("file/{*filename}")]
public Task<IActionResult> DeleteFileOrDirectory(string filename, bool recursive = false)
Parameters
filenamestringFile or directory to delete
recursiveboolWhether the directory shall be deleted recursively
Returns
- 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
[AllowAnonymous]
[HttpGet("disconnect")]
public Task<IActionResult> Disconnect(ISessionStorage sessionStorage)
Parameters
sessionStorageISessionStorageSession storage singleton
Returns
- 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.
[HttpPost("code")]
[Authorize(Policy = "readWrite")]
public Task<IActionResult> DoCode(ISessionStorage sessionStorage, bool async = false)
Parameters
sessionStorageISessionStorageSession storage singleton
asyncboolExecute code asynchronously (don't wait for a code result)
Returns
- 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.
[HttpGet("file/{*filename}")]
public Task<IActionResult> DownloadFile(string filename)
Parameters
filenamestringFile to download
Returns
- 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.
[HttpGet("fileinfo/{*filename}")]
public Task<IActionResult> GetFileInfo(string filename, bool readThumbnailContent = false)
Parameters
filenamestringG-code file to analyze
readThumbnailContentboolWhether thumbnail content may be read
Returns
- 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
[HttpGet("directory/{*directory}")]
public Task<IActionResult> GetFileList(string? directory)
Parameters
directorystringDirectory to query
Returns
- 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
[Authorize(Policy = "readWrite")]
[DisableRequestSizeLimit]
[HttpPut("plugin")]
public Task<IActionResult> InstallPlugin(ISessionStorage sessionStorage)
Parameters
sessionStorageISessionStorageSession storage singleton
Returns
- 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
[Authorize(Policy = "readWrite")]
[DisableRequestSizeLimit]
[HttpPut("systemPackage")]
public Task<IActionResult> InstallSystemPackage(ISessionStorage sessionStorage)
Parameters
sessionStorageISessionStorageSession storage singleton
Returns
- 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.
[HttpGet("model")]
[HttpGet("status")]
public Task<IActionResult> Model()
Returns
- 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
[Authorize(Policy = "readWrite")]
[HttpPost("file/move")]
public Task<IActionResult> MoveFileOrDirectory(string from, string to, bool force = false)
Parameters
fromstringSource path
tostringDestination path
forceboolDelete existing file (optional, default false)
Returns
- 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
[HttpGet("noop")]
public IActionResult Noop()
Returns
- IActionResult
HTTP status code: (204) No Content
SetPluginData()
PATCH /machine/plugin Set plugin data in the object model if there is no SBC executable.
[Authorize(Policy = "readWrite")]
[DisableRequestSizeLimit]
[HttpPatch("plugin")]
public Task<IActionResult> SetPluginData()
Returns
- 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
[Authorize(Policy = "readWrite")]
[HttpPost("startPlugin")]
public Task<IActionResult> StartPlugin()
Returns
- 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
[Authorize(Policy = "readWrite")]
[HttpPost("stopPlugin")]
public Task<IActionResult> StopPlugin()
Returns
- 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
[Authorize(Policy = "readWrite")]
[HttpDelete("plugin")]
public Task<IActionResult> UninstallPlugin(ISessionStorage sessionStorage)
Parameters
sessionStorageISessionStorageSession storage singleton
Returns
- 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
[Authorize(Policy = "readWrite")]
[HttpDelete("systemPackage")]
public Task<IActionResult> UninstallSystemPackage(ISessionStorage sessionStorage)
Parameters
sessionStorageISessionStorageSession storage singleton
Returns
- 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
[Authorize(Policy = "readWrite")]
[DisableRequestSizeLimit]
[HttpPut("file/{*filename}")]
public Task<IActionResult> UploadFile(string filename, DateTime? timeModified, ISessionStorage sessionStorage)
Parameters
filenamestringDestination of the file to upload
timeModifiedDateTime?Optional time indicating when the file was last modified
sessionStorageISessionStorageSession storage singleton
Returns
- Task<IActionResult>
HTTP status code: (201) File created (500) Generic error occurred (502) Incompatible DCS version (503) DCS is unavailable