mirror of
https://github.com/lidarr/lidarr.git
synced 2025-08-20 13:33:34 -07:00
Added more magic to fancy. it now automatically figures our response for PUT and POST based on request ID.
file name sample uses HTTP GET instead of post
This commit is contained in:
parent
438e3199de
commit
4188946395
20 changed files with 135 additions and 198 deletions
|
@ -19,8 +19,8 @@ namespace NzbDrone.Api.REST
|
|||
private Func<List<TResource>> _getResourceAll;
|
||||
private Func<PagingResource<TResource>, PagingResource<TResource>> _getResourcePaged;
|
||||
private Func<TResource> _getResourceSingle;
|
||||
private Func<TResource, TResource> _createResource;
|
||||
private Func<TResource, TResource> _updateResource;
|
||||
private Func<TResource, int> _createResource;
|
||||
private Action<TResource> _updateResource;
|
||||
|
||||
protected ResourceValidator<TResource> PostValidator { get; private set; }
|
||||
protected ResourceValidator<TResource> PutValidator { get; private set; }
|
||||
|
@ -132,7 +132,7 @@ namespace NzbDrone.Api.REST
|
|||
}
|
||||
}
|
||||
|
||||
protected Func<TResource, TResource> CreateResource
|
||||
protected Func<TResource, int> CreateResource
|
||||
{
|
||||
private get { return _createResource; }
|
||||
set
|
||||
|
@ -140,36 +140,37 @@ namespace NzbDrone.Api.REST
|
|||
_createResource = value;
|
||||
Post[ROOT_ROUTE] = options =>
|
||||
{
|
||||
var resource = CreateResource(ReadFromRequest());
|
||||
return resource.AsResponse(HttpStatusCode.Created);
|
||||
var id = CreateResource(ReadResourceFromRequest());
|
||||
return GetResourceById(id).AsResponse(HttpStatusCode.Created);
|
||||
};
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
protected Func<TResource, TResource> UpdateResource
|
||||
protected Action<TResource> UpdateResource
|
||||
{
|
||||
private get { return _updateResource; }
|
||||
set
|
||||
{
|
||||
_updateResource = value;
|
||||
Put[ROOT_ROUTE] = options =>
|
||||
{
|
||||
var resource = UpdateResource(ReadFromRequest());
|
||||
return resource.AsResponse(HttpStatusCode.Accepted);
|
||||
};
|
||||
{
|
||||
var resource = ReadResourceFromRequest();
|
||||
UpdateResource(resource);
|
||||
return GetResourceById(resource.Id).AsResponse(HttpStatusCode.Accepted);
|
||||
};
|
||||
|
||||
Put[ID_ROUTE] = options =>
|
||||
{
|
||||
var model = ReadFromRequest();
|
||||
model.Id = options.Id;
|
||||
var resource = UpdateResource(model);
|
||||
return resource.AsResponse(HttpStatusCode.Accepted);
|
||||
var resource = ReadResourceFromRequest();
|
||||
resource.Id = options.Id;
|
||||
UpdateResource(resource);
|
||||
return GetResourceById(resource.Id).AsResponse(HttpStatusCode.Accepted);
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
private TResource ReadFromRequest()
|
||||
protected TResource ReadResourceFromRequest()
|
||||
{
|
||||
//TODO: handle when request is null
|
||||
var resource = Request.Body.FromJson<TResource>();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue