diff --git a/frontend/src/History/Details/HistoryDetails.js b/frontend/src/History/Details/HistoryDetails.js index ad5504ba2..4d7887fab 100644 --- a/frontend/src/History/Details/HistoryDetails.js +++ b/frontend/src/History/Details/HistoryDetails.js @@ -2,6 +2,7 @@ import PropTypes from 'prop-types'; import React from 'react'; import DescriptionList from 'Components/DescriptionList/DescriptionList'; import DescriptionListItem from 'Components/DescriptionList/DescriptionListItem'; +import Link from 'Components/Link/Link'; import translate from 'Utilities/String/translate'; import styles from './HistoryDetails.css'; @@ -17,7 +18,8 @@ function HistoryDetails(props) { query, queryResults, categories, - source + source, + url } = data; return ( @@ -59,6 +61,14 @@ function HistoryDetails(props) { data={source} /> } + + { + !!data && + {translate('Link')} : '-'} + /> + } ); } @@ -66,7 +76,8 @@ function HistoryDetails(props) { if (eventType === 'releaseGrabbed') { const { source, - title + title, + url } = data; return ( @@ -94,6 +105,14 @@ function HistoryDetails(props) { data={title ? title : '-'} /> } + + { + !!data && + {translate('Link')} : '-'} + /> + } ); } diff --git a/src/NzbDrone.Core/Download/DownloadService.cs b/src/NzbDrone.Core/Download/DownloadService.cs index 6d5e5df7c..34a18e029 100644 --- a/src/NzbDrone.Core/Download/DownloadService.cs +++ b/src/NzbDrone.Core/Download/DownloadService.cs @@ -81,13 +81,13 @@ public async Task SendReportToClient(ReleaseInfo release, string source, string catch (ReleaseUnavailableException) { _logger.Trace("Release {0} no longer available on indexer.", release); - _eventAggregator.PublishEvent(new IndexerDownloadEvent(release.IndexerId, false, source, host, release.Title, redirect)); + _eventAggregator.PublishEvent(new IndexerDownloadEvent(release.IndexerId, false, source, host, release.Title, release.DownloadUrl, redirect)); throw; } catch (DownloadClientRejectedReleaseException) { _logger.Trace("Release {0} rejected by download client, possible duplicate.", release); - _eventAggregator.PublishEvent(new IndexerDownloadEvent(release.IndexerId, false, source, host, release.Title, redirect)); + _eventAggregator.PublishEvent(new IndexerDownloadEvent(release.IndexerId, false, source, host, release.Title, release.DownloadUrl, redirect)); throw; } catch (ReleaseDownloadException ex) @@ -102,14 +102,14 @@ public async Task SendReportToClient(ReleaseInfo release, string source, string _indexerStatusService.RecordFailure(release.IndexerId); } - _eventAggregator.PublishEvent(new IndexerDownloadEvent(release.IndexerId, false, source, host, release.Title, redirect)); + _eventAggregator.PublishEvent(new IndexerDownloadEvent(release.IndexerId, false, source, host, release.Title, release.DownloadUrl, redirect)); throw; } _logger.ProgressInfo("Report sent to {0}. {1}", downloadClient.Definition.Name, downloadTitle); - _eventAggregator.PublishEvent(new IndexerDownloadEvent(release.IndexerId, true, source, host, release.Title, redirect)); + _eventAggregator.PublishEvent(new IndexerDownloadEvent(release.IndexerId, true, source, host, release.Title, release.DownloadUrl, redirect)); } public async Task DownloadReport(string link, int indexerId, string source, string host, string title) @@ -135,7 +135,7 @@ public async Task DownloadReport(string link, int indexerId, string sour catch (ReleaseUnavailableException) { _logger.Trace("Release {0} no longer available on indexer.", link); - _eventAggregator.PublishEvent(new IndexerDownloadEvent(indexerId, success, source, host, title)); + _eventAggregator.PublishEvent(new IndexerDownloadEvent(indexerId, success, source, host, title, url.AbsoluteUri)); throw; } catch (ReleaseDownloadException ex) @@ -150,17 +150,17 @@ public async Task DownloadReport(string link, int indexerId, string sour _indexerStatusService.RecordFailure(indexerId); } - _eventAggregator.PublishEvent(new IndexerDownloadEvent(indexerId, success, source, host, title)); + _eventAggregator.PublishEvent(new IndexerDownloadEvent(indexerId, success, source, host, title, url.AbsoluteUri)); throw; } - _eventAggregator.PublishEvent(new IndexerDownloadEvent(indexerId, success, source, host, title)); + _eventAggregator.PublishEvent(new IndexerDownloadEvent(indexerId, success, source, host, title, url.AbsoluteUri)); return downloadedBytes; } public void RecordRedirect(string link, int indexerId, string source, string host, string title) { - _eventAggregator.PublishEvent(new IndexerDownloadEvent(indexerId, true, source, host, title, true)); + _eventAggregator.PublishEvent(new IndexerDownloadEvent(indexerId, true, source, host, title, link, true)); } } } diff --git a/src/NzbDrone.Core/History/HistoryService.cs b/src/NzbDrone.Core/History/HistoryService.cs index 72786e2e4..3187f1f20 100644 --- a/src/NzbDrone.Core/History/HistoryService.cs +++ b/src/NzbDrone.Core/History/HistoryService.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Net; using NLog; using NzbDrone.Core.Configuration; using NzbDrone.Core.Datastore; @@ -115,7 +116,7 @@ public void Handle(IndexerQueryEvent message) Date = DateTime.UtcNow, IndexerId = message.IndexerId, EventType = message.Query.RssSearch ? HistoryEventType.IndexerRss : HistoryEventType.IndexerQuery, - Successful = message.Successful + Successful = message.QueryResult.Response?.StatusCode == HttpStatusCode.OK }; if (message.Query is MovieSearchCriteria) @@ -148,13 +149,14 @@ public void Handle(IndexerQueryEvent message) history.Data.Add("BookTitle", ((BookSearchCriteria)message.Query).Title ?? string.Empty); } - history.Data.Add("ElapsedTime", message.Time.ToString()); + history.Data.Add("ElapsedTime", message.QueryResult.Response?.ElapsedTime.ToString() ?? string.Empty); history.Data.Add("Query", message.Query.SearchTerm ?? string.Empty); history.Data.Add("QueryType", message.Query.SearchType ?? string.Empty); history.Data.Add("Categories", string.Join(",", message.Query.Categories) ?? string.Empty); history.Data.Add("Source", message.Query.Source ?? string.Empty); history.Data.Add("Host", message.Query.Host ?? string.Empty); - history.Data.Add("QueryResults", message.Results.HasValue ? message.Results.ToString() : null); + history.Data.Add("QueryResults", message.QueryResult.Releases?.Count().ToString() ?? string.Empty); + history.Data.Add("Url", message.QueryResult.Response?.Request.Url.FullUri ?? string.Empty); _historyRepository.Insert(history); } @@ -173,6 +175,7 @@ public void Handle(IndexerDownloadEvent message) history.Data.Add("Host", message.Host ?? string.Empty); history.Data.Add("GrabMethod", message.Redirect ? "Redirect" : "Proxy"); history.Data.Add("Title", message.Title); + history.Data.Add("Url", message.Url ?? string.Empty); _historyRepository.Insert(history); } diff --git a/src/NzbDrone.Core/IndexerSearch/ReleaseSearchService.cs b/src/NzbDrone.Core/IndexerSearch/ReleaseSearchService.cs index 4111cdd7d..4b49a4f23 100644 --- a/src/NzbDrone.Core/IndexerSearch/ReleaseSearchService.cs +++ b/src/NzbDrone.Core/IndexerSearch/ReleaseSearchService.cs @@ -188,14 +188,14 @@ private async Task> DispatchIndexer(Func FetchReleases(Func FetchReleases(Func FetchReleases(Func FetchReleases(Func FetchPage(IndexerRequest reques return new IndexerQueryResult { Releases = releases, - ElapsedTime = response.HttpResponse.ElapsedTime, - StatusCode = (int)response.HttpResponse.StatusCode + Response = response.HttpResponse }; } catch (Exception ex) diff --git a/src/NzbDrone.Core/Indexers/IndexerQueryResult.cs b/src/NzbDrone.Core/Indexers/IndexerQueryResult.cs index f84a914b5..4bddb8f5d 100644 --- a/src/NzbDrone.Core/Indexers/IndexerQueryResult.cs +++ b/src/NzbDrone.Core/Indexers/IndexerQueryResult.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using NzbDrone.Common.Http; using NzbDrone.Core.Parser.Model; namespace NzbDrone.Core.Indexers @@ -11,7 +12,6 @@ public IndexerQueryResult() } public IList Releases { get; set; } - public long ElapsedTime { get; set; } - public int StatusCode { get; set; } + public HttpResponse Response { get; set; } } }