parent
a41ae141cd
commit
56d5356f1e
@ -0,0 +1,46 @@
|
||||
import { createThunk, handleThunks } from 'Store/thunks';
|
||||
import createFetchHandler from './Creators/createFetchHandler';
|
||||
import createHandleActions from './Creators/createHandleActions';
|
||||
|
||||
//
|
||||
// Variables
|
||||
|
||||
export const section = 'indexerStatus';
|
||||
|
||||
//
|
||||
// State
|
||||
|
||||
export const defaultState = {
|
||||
isFetching: false,
|
||||
isPopulated: false,
|
||||
error: null,
|
||||
items: [],
|
||||
|
||||
details: {
|
||||
isFetching: false,
|
||||
isPopulated: false,
|
||||
error: null,
|
||||
items: []
|
||||
}
|
||||
};
|
||||
|
||||
//
|
||||
// Actions Types
|
||||
|
||||
export const FETCH_INDEXER_STATUS = 'indexerStatus/fetchIndexerStatus';
|
||||
|
||||
//
|
||||
// Action Creators
|
||||
|
||||
export const fetchIndexerStatus = createThunk(FETCH_INDEXER_STATUS);
|
||||
|
||||
//
|
||||
// Action Handlers
|
||||
|
||||
export const actionHandlers = handleThunks({
|
||||
[FETCH_INDEXER_STATUS]: createFetchHandler(section, '/indexerStatus')
|
||||
});
|
||||
|
||||
//
|
||||
// Reducers
|
||||
export const reducers = createHandleActions({}, defaultState, section);
|
@ -0,0 +1,14 @@
|
||||
import _ from 'lodash';
|
||||
import { createSelector } from 'reselect';
|
||||
|
||||
function createIndexerStatusSelector() {
|
||||
return createSelector(
|
||||
(state, { indexerId }) => indexerId,
|
||||
(state) => state.indexerStatus.items,
|
||||
(indexerId, indexerStatus) => {
|
||||
return _.find(indexerStatus, { indexerId });
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
export default createIndexerStatusSelector;
|
@ -0,0 +1,23 @@
|
||||
using System.Collections.Generic;
|
||||
using NzbDrone.Core.Indexers;
|
||||
using Prowlarr.Http;
|
||||
|
||||
namespace Prowlarr.Api.V1.Indexers
|
||||
{
|
||||
public class IndexerStatusModule : ProwlarrRestModule<IndexerStatusResource>
|
||||
{
|
||||
private readonly IIndexerStatusService _indexerStatusService;
|
||||
|
||||
public IndexerStatusModule(IIndexerStatusService indexerStatusService)
|
||||
{
|
||||
_indexerStatusService = indexerStatusService;
|
||||
|
||||
GetResourceAll = GetAll;
|
||||
}
|
||||
|
||||
private List<IndexerStatusResource> GetAll()
|
||||
{
|
||||
return _indexerStatusService.GetBlockedProviders().ToResource();
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,36 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using NzbDrone.Core.Indexers;
|
||||
using Prowlarr.Http.REST;
|
||||
|
||||
namespace Prowlarr.Api.V1.Indexers
|
||||
{
|
||||
public class IndexerStatusResource : RestResource
|
||||
{
|
||||
public int IndexerId { get; set; }
|
||||
public DateTime? DisabledTill { get; set; }
|
||||
}
|
||||
|
||||
public static class IndexerStatusResourceMapper
|
||||
{
|
||||
public static IndexerStatusResource ToResource(this IndexerStatus model)
|
||||
{
|
||||
if (model == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
return new IndexerStatusResource
|
||||
{
|
||||
IndexerId = model.ProviderId,
|
||||
DisabledTill = model.DisabledTill
|
||||
};
|
||||
}
|
||||
|
||||
public static List<IndexerStatusResource> ToResource(this IEnumerable<IndexerStatus> models)
|
||||
{
|
||||
return models.Select(ToResource).ToList();
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in new issue