Files
Umbraco-CMS/src/Umbraco.Core/Services/IBasicFileService.cs
Mole b411452f79 New backoffice: Add new codefile controllers and services (#14157)
* Add scaffolding

* Entities not Entitys

* Remove unececary obsoleted constructor

* Implement create script

* Return a simplified ScriptFile instead of IScript

That file abstraction seems way too bloated, containing a lot of stuff that's not relevant for files, such as IDs and keys.

* Use IScript instead of custom return model

* Add validation when creating script

* Add Get script endpoint

* Add response types

* Add Delete

* Throw if user key not found

* Remove unused maapper

* Add update endpoint

* Add Get by path

* Add create folder endpoint

* Don't pass performingUserId to folder creation

* Remove update folder

* Add delete folder endpoint

* Use specific ScriptFolderOperationStatus instead of ScriptOperationStatus

* Add OperationStatusResult

* Check folder for invalid name

* Check name for invalid characters

* Add partial view snippet endpoint

* Start working on CreatePartialView

* Add create partial view endpoint

* Retrieve key from audit method

* Add operation status results

* Add Get endpoint

* Return 201 when creating

* Add update partial view endpoint

* Add delete endpoint

* Add response types

* Add folder base implementation

* Add folder endpoints

* User property for allowed file extensions

* Rename async method to async

* Break snippet into endpoint in two

* Make content non-nullable

* Remove IService

* Add get by path

* Add viewmodels

* Add create and update models

* Add create stylesheet

* Add update endpoint

* Rename StylesheetControllerBase to StylesheetControllerBase

* Add stylesheet delete

* Rename controller bases

* Add stylesheet folders

* Add status results

* Add response types to folders

* Add richtext rules endpoints

* Add Get all endpoint

* Add get rules by path endpoint

* Aling validates so they're not async

These are private methods, so there's no reason to make them preemptively async

* Add template obsoletions to interface

* Add stream methods

This is evidently used by deploy 🤷

* Obsolete stylesheet operations

* Add get and getall across all services

* Obsolete script operations

* Obsolete old partial view methods

* Add some method docs

* Add compatibility suppression

* Update OpenApi.json

* Rename action

* formatting

* Fix import

* add expression body

* Invert if

* Move base on own line

* Rename file

* Rename to all

* Change to stylesheet instead of script

* Add Umbraco.Code.MapAll to map definitions

* Add comment about auditing

* use publish cancelable async

* use expression body

* formatting

* fix to use pattern matching

---------

Co-authored-by: Zeegaan <nge@umbraco.dk>
2023-04-26 13:47:47 +02:00

42 lines
1.4 KiB
C#

using Umbraco.Cms.Core.Models;
namespace Umbraco.Cms.Core.Services;
public interface IBasicFileService<TEntity> where TEntity : IFile
{
/// <summary>
/// Gets <see cref="TEntity"/> by path.
/// </summary>
/// <param name="path">The path to get <see cref="TEntity"/> from.</param>
/// <returns><see cref="TEntity"/>, or null if not found</returns>
Task<TEntity?> GetAsync(string path);
/// <summary>
/// Gets all <see cref="TEntity"/> by path, or all if no paths are specified.
/// </summary>
/// <param name="paths">Optional paths of <see cref="TEntity"/> to get.</param>
/// <returns>IEnumerable of <see cref="TEntity"/></returns>
Task<IEnumerable<TEntity>> GetAllAsync(params string[] paths);
/// <summary>
/// Get the content of a file as a stream.
/// </summary>
/// <param name="path">The path to the file.</param>
/// <returns>A stream containing the contents of the file.</returns>
Task<Stream> GetContentStreamAsync(string path);
/// <summary>
/// Set the content of a file from a stream.
/// </summary>
/// <param name="path">The path to the file.</param>
/// <param name="content">The desired content of the file as a stream.</param>
Task SetContentStreamAsync(string path, Stream content);
/// <summary>
///
/// </summary>
/// <param name="path"></param>
/// <returns></returns>
Task<long> GetFileSizeAsync(string path);
}