From 33cefe1a62e0f29db8e501a9054e2fbf439a9eaf Mon Sep 17 00:00:00 2001 From: tidusjar Date: Sat, 26 Jan 2019 00:58:40 +0000 Subject: [PATCH] stuffffffffff including searchbar and new navbar !wip --- src/Ombi.Core/Engine/V2/IMultiSearchEngine.cs | 11 ++++ src/Ombi.Core/Engine/V2/MultiSearchEngine.cs | 35 +++++++++++++ src/Ombi.DependencyInjection/IocExtensions.cs | 7 +++ src/Ombi.TheMovieDbApi/IMovieDbApi.cs | 1 + src/Ombi.TheMovieDbApi/Models/MultiSearch.cs | 27 ++++++++++ src/Ombi.TheMovieDbApi/TheMovieDbApi.cs | 11 ++++ src/Ombi/Attributes/ApiV2Attribute.cs | 14 +++++ src/Ombi/ClientApp/src/app/app.component.html | 6 +-- src/Ombi/ClientApp/src/app/app.component.scss | 10 ---- src/Ombi/ClientApp/src/app/app.module.ts | 17 +++--- .../src/app/discover/discover.component.ts | 1 - .../src/app/discover/discover.module.ts | 5 +- .../src/app/interfaces/ISearchMovieResult.ts | 22 ++++++++ .../src/app/my-nav/my-nav.component.css | 52 +++++++++++++++++++ .../src/app/my-nav/my-nav.component.html | 39 ++++++++++++++ .../src/app/my-nav/my-nav.component.ts | 42 +++++++++++++++ .../ClientApp/src/app/nav/nav.component.html | 22 -------- .../ClientApp/src/app/nav/nav.component.scss | 17 ------ .../ClientApp/src/app/nav/nav.component.ts | 21 -------- .../src/app/search/moviesearch.component.html | 26 ++-------- .../src/app/services/searchV2.service.ts | 19 +++++++ .../ClientApp/src/app/shared/shared.module.ts | 4 +- .../External/CouchPotatoController.cs | 2 +- .../{ => V1}/External/EmbyController.cs | 3 +- .../{ => V1}/External/LidarrController.cs | 2 +- .../{ => V1}/External/PlexController.cs | 2 +- .../{ => V1}/External/RadarrController.cs | 5 +- .../{ => V1}/External/SonarrController.cs | 3 +- .../{ => V1}/External/TesterController.cs | 2 +- .../{ => V1}/IdentityController.cs | 2 +- .../Controllers/{ => V1}/ImagesController.cs | 12 ++--- .../Controllers/{ => V1}/IssuesController.cs | 14 +++-- .../Controllers/{ => V1}/JobController.cs | 4 +- .../{ => V1}/LandingPageController.cs | 2 +- .../Controllers/{ => V1}/LoggingController.cs | 6 +-- .../Controllers/{ => V1}/MobileController.cs | 2 +- .../{ => V1}/MusicRequestController.cs | 14 ++--- .../{ => V1}/NotificationsController.cs | 2 +- .../{ => V1}/PlexOAuthController.cs | 10 ++-- .../{ => V1}/RecentlyAddedController.cs | 4 +- .../Controllers/{ => V1}/RequestController.cs | 19 +++---- .../{ => V1}/RequestRetryController.cs | 12 ++--- .../Controllers/{ => V1}/SearchController.cs | 4 +- .../{ => V1}/SettingsController.cs | 6 +-- .../Controllers/{ => V1}/StatsController.cs | 2 +- .../Controllers/{ => V1}/StatusController.cs | 2 +- .../Controllers/{ => V1}/TokenController.cs | 4 +- .../Controllers/{ => V1}/UpdateController.cs | 6 +-- .../Controllers/{ => V1}/VoteController.cs | 6 +-- src/Ombi/Controllers/V2/SearchController.cs | 32 ++++++++++++ 50 files changed, 397 insertions(+), 196 deletions(-) create mode 100644 src/Ombi.Core/Engine/V2/IMultiSearchEngine.cs create mode 100644 src/Ombi.Core/Engine/V2/MultiSearchEngine.cs create mode 100644 src/Ombi.TheMovieDbApi/Models/MultiSearch.cs create mode 100644 src/Ombi/Attributes/ApiV2Attribute.cs create mode 100644 src/Ombi/ClientApp/src/app/my-nav/my-nav.component.css create mode 100644 src/Ombi/ClientApp/src/app/my-nav/my-nav.component.html create mode 100644 src/Ombi/ClientApp/src/app/my-nav/my-nav.component.ts delete mode 100644 src/Ombi/ClientApp/src/app/nav/nav.component.html delete mode 100644 src/Ombi/ClientApp/src/app/nav/nav.component.scss delete mode 100644 src/Ombi/ClientApp/src/app/nav/nav.component.ts create mode 100644 src/Ombi/ClientApp/src/app/services/searchV2.service.ts rename src/Ombi/Controllers/{ => V1}/External/CouchPotatoController.cs (96%) rename src/Ombi/Controllers/{ => V1}/External/EmbyController.cs (98%) rename src/Ombi/Controllers/{ => V1}/External/LidarrController.cs (99%) rename src/Ombi/Controllers/{ => V1}/External/PlexController.cs (99%) rename src/Ombi/Controllers/{ => V1}/External/RadarrController.cs (97%) rename src/Ombi/Controllers/{ => V1}/External/SonarrController.cs (97%) rename src/Ombi/Controllers/{ => V1}/External/TesterController.cs (99%) rename src/Ombi/Controllers/{ => V1}/IdentityController.cs (99%) rename src/Ombi/Controllers/{ => V1}/ImagesController.cs (98%) rename src/Ombi/Controllers/{ => V1}/IssuesController.cs (99%) rename src/Ombi/Controllers/{ => V1}/JobController.cs (98%) rename src/Ombi/Controllers/{ => V1}/LandingPageController.cs (98%) rename src/Ombi/Controllers/{ => V1}/LoggingController.cs (95%) rename src/Ombi/Controllers/{ => V1}/MobileController.cs (98%) rename src/Ombi/Controllers/{ => V1}/MusicRequestController.cs (99%) rename src/Ombi/Controllers/{ => V1}/NotificationsController.cs (98%) rename src/Ombi/Controllers/{ => V1}/PlexOAuthController.cs (95%) rename src/Ombi/Controllers/{ => V1}/RecentlyAddedController.cs (95%) rename src/Ombi/Controllers/{ => V1}/RequestController.cs (99%) rename src/Ombi/Controllers/{ => V1}/RequestRetryController.cs (94%) rename src/Ombi/Controllers/{ => V1}/SearchController.cs (99%) rename src/Ombi/Controllers/{ => V1}/SettingsController.cs (99%) rename src/Ombi/Controllers/{ => V1}/StatsController.cs (95%) rename src/Ombi/Controllers/{ => V1}/StatusController.cs (98%) rename src/Ombi/Controllers/{ => V1}/TokenController.cs (98%) rename src/Ombi/Controllers/{ => V1}/UpdateController.cs (87%) rename src/Ombi/Controllers/{ => V1}/VoteController.cs (97%) create mode 100644 src/Ombi/Controllers/V2/SearchController.cs diff --git a/src/Ombi.Core/Engine/V2/IMultiSearchEngine.cs b/src/Ombi.Core/Engine/V2/IMultiSearchEngine.cs new file mode 100644 index 000000000..997d29281 --- /dev/null +++ b/src/Ombi.Core/Engine/V2/IMultiSearchEngine.cs @@ -0,0 +1,11 @@ +using System.Collections.Generic; +using System.Threading.Tasks; +using Ombi.Api.TheMovieDb.Models; + +namespace Ombi.Core.Engine.V2 +{ + public interface IMultiSearchEngine + { + Task> MultiSearch(string searchTerm, string lang = "en"); + } +} \ No newline at end of file diff --git a/src/Ombi.Core/Engine/V2/MultiSearchEngine.cs b/src/Ombi.Core/Engine/V2/MultiSearchEngine.cs new file mode 100644 index 000000000..65803c1ac --- /dev/null +++ b/src/Ombi.Core/Engine/V2/MultiSearchEngine.cs @@ -0,0 +1,35 @@ +using System.Collections.Generic; +using System.Security.Principal; +using System.Threading.Tasks; +using Ombi.Api.TheMovieDb; +using Ombi.Api.TheMovieDb.Models; +using Ombi.Core.Authentication; +using Ombi.Core.Models.Requests; +using Ombi.Core.Rule.Interfaces; +using Ombi.Core.Settings; +using Ombi.Helpers; +using Ombi.Settings.Settings.Models; +using Ombi.Store.Entities; +using Ombi.Store.Repository; + +namespace Ombi.Core.Engine.V2 +{ + public class MultiSearchEngine : BaseMediaEngine, IMultiSearchEngine + { + public MultiSearchEngine(IPrincipal identity, IRequestServiceMain requestService, IRuleEvaluator rules, + OmbiUserManager um, ICacheService cache, ISettingsService ombiSettings, IRepository sub, + IMovieDbApi movieDbApi) + : base(identity, requestService, rules, um, cache, ombiSettings, sub) + { + _movieDbApi = movieDbApi; + } + + private readonly IMovieDbApi _movieDbApi; + + + public async Task> MultiSearch(string searchTerm, string lang = "en") + { + return (await _movieDbApi.MultiSearch(searchTerm, lang)).results; + } + } +} diff --git a/src/Ombi.DependencyInjection/IocExtensions.cs b/src/Ombi.DependencyInjection/IocExtensions.cs index 09dbf4e79..6392fe5c9 100644 --- a/src/Ombi.DependencyInjection/IocExtensions.cs +++ b/src/Ombi.DependencyInjection/IocExtensions.cs @@ -53,6 +53,7 @@ using Ombi.Updater; using PlexContentCacher = Ombi.Schedule.Jobs.Plex; using Ombi.Api.Telegram; using Ombi.Core.Authentication; +using Ombi.Core.Engine.V2; using Ombi.Core.Processor; using Ombi.Schedule.Jobs.Lidarr; using Ombi.Schedule.Jobs.Plex.Interfaces; @@ -68,6 +69,7 @@ namespace Ombi.DependencyInjection public static void RegisterApplicationDependencies(this IServiceCollection services) { services.RegisterEngines(); + services.RegisterEnginesV2(); services.RegisterApi(); services.RegisterServices(); services.RegisterStore(); @@ -93,6 +95,11 @@ namespace Ombi.DependencyInjection services.AddTransient(); services.AddTransient(); } + + public static void RegisterEnginesV2(this IServiceCollection services) + { + services.AddTransient(); + } public static void RegisterHttp(this IServiceCollection services) { services.AddSingleton(); diff --git a/src/Ombi.TheMovieDbApi/IMovieDbApi.cs b/src/Ombi.TheMovieDbApi/IMovieDbApi.cs index 43d8b02c1..78faab5dc 100644 --- a/src/Ombi.TheMovieDbApi/IMovieDbApi.cs +++ b/src/Ombi.TheMovieDbApi/IMovieDbApi.cs @@ -21,5 +21,6 @@ namespace Ombi.Api.TheMovieDb Task GetTVInfo(string themoviedbid); Task> SearchByActor(string searchTerm, string langCode); Task GetActorMovieCredits(int actorId, string langCode); + Task> MultiSearch(string searchTerm, string languageCode); } } \ No newline at end of file diff --git a/src/Ombi.TheMovieDbApi/Models/MultiSearch.cs b/src/Ombi.TheMovieDbApi/Models/MultiSearch.cs new file mode 100644 index 000000000..40c36a5a5 --- /dev/null +++ b/src/Ombi.TheMovieDbApi/Models/MultiSearch.cs @@ -0,0 +1,27 @@ +namespace Ombi.Api.TheMovieDb.Models +{ + public class MultiSearch +{ + public string original_name { get; set; } + public int id { get; set; } + public string media_type { get; set; } + public string name { get; set; } + public int vote_count { get; set; } + public float vote_average { get; set; } + public string poster_path { get; set; } + public string first_air_date { get; set; } + public float popularity { get; set; } + public int?[] genre_ids { get; set; } + public string original_language { get; set; } + public string backdrop_path { get; set; } + public string overview { get; set; } + public string[] origin_country { get; set; } + public bool video { get; set; } + public string title { get; set; } + public string original_title { get; set; } + public bool adult { get; set; } + public string release_date { get; set; } + } + +} + diff --git a/src/Ombi.TheMovieDbApi/TheMovieDbApi.cs b/src/Ombi.TheMovieDbApi/TheMovieDbApi.cs index 79ccc5bb7..06711ba5f 100644 --- a/src/Ombi.TheMovieDbApi/TheMovieDbApi.cs +++ b/src/Ombi.TheMovieDbApi/TheMovieDbApi.cs @@ -171,6 +171,17 @@ namespace Ombi.Api.TheMovieDb return await Api.Request(request); } + + public async Task> MultiSearch(string searchTerm, string languageCode) + { + var request = new Request("search/multi", BaseUri, HttpMethod.Get); + request.FullUri = request.FullUri.AddQueryParameter("api_key", ApiToken); + request.FullUri = request.FullUri.AddQueryParameter("language", languageCode); + request.FullUri = request.FullUri.AddQueryParameter("query", searchTerm); + var result = await Api.Request>(request); + return result; + } + private static void AddRetry(Request request) { request.Retry = true; diff --git a/src/Ombi/Attributes/ApiV2Attribute.cs b/src/Ombi/Attributes/ApiV2Attribute.cs new file mode 100644 index 000000000..3a552409d --- /dev/null +++ b/src/Ombi/Attributes/ApiV2Attribute.cs @@ -0,0 +1,14 @@ +using Microsoft.AspNetCore.Mvc; + +namespace Ombi.Controllers +{ + [Route(ApiBase)] + public class ApiV2Attribute : RouteAttribute + { + protected const string ApiBase = "api/v2/[controller]"; + + public ApiV2Attribute() : base(ApiBase) + { + } + } +} \ No newline at end of file diff --git a/src/Ombi/ClientApp/src/app/app.component.html b/src/Ombi/ClientApp/src/app/app.component.html index 8a6474993..ef7dab7da 100644 --- a/src/Ombi/ClientApp/src/app/app.component.html +++ b/src/Ombi/ClientApp/src/app/app.component.html @@ -165,9 +165,7 @@ --> - + + -
- -
\ No newline at end of file diff --git a/src/Ombi/ClientApp/src/app/app.component.scss b/src/Ombi/ClientApp/src/app/app.component.scss index 1956a9baa..e69de29bb 100644 --- a/src/Ombi/ClientApp/src/app/app.component.scss +++ b/src/Ombi/ClientApp/src/app/app.component.scss @@ -1,10 +0,0 @@ -@media (max-width: 978px) { - .top-spacing { - padding-top: 10% - } -} -@media (min-width: 979px) { - .top-spacing { - padding-top: 5% - } -} diff --git a/src/Ombi/ClientApp/src/app/app.module.ts b/src/Ombi/ClientApp/src/app/app.module.ts index 7fd710138..42b8e01e5 100644 --- a/src/Ombi/ClientApp/src/app/app.module.ts +++ b/src/Ombi/ClientApp/src/app/app.module.ts @@ -19,7 +19,7 @@ import { ButtonModule, CaptchaModule, ConfirmationService, ConfirmDialogModule, TooltipModule } from "primeng/primeng"; import { - MatButtonModule, MatNativeDateModule, MatIconModule, MatSidenavModule, MatListModule, MatToolbarModule} from '@angular/material'; + MatButtonModule, MatNativeDateModule, MatIconModule, MatSidenavModule, MatListModule, MatToolbarModule, MatAutocompleteModule} from '@angular/material'; import { MatCardModule, MatInputModule, MatTabsModule } from "@angular/material"; import { MDBBootstrapModule, CardsFreeModule, NavbarModule } from "angular-bootstrap-md"; @@ -44,11 +44,13 @@ import { LandingPageService } from "./services"; import { NotificationService } from "./services"; import { SettingsService } from "./services"; import { IssuesService, JobService, PlexTvService, StatusService, SearchService, IdentityService } from "./services"; -import { NavComponent } from "./nav/nav.component"; +import { MyNavComponent } from './my-nav/my-nav.component'; +import { LayoutModule } from '@angular/cdk/layout'; +import { SearchV2Service } from "./services/searchV2.service"; const routes: Routes = [ { path: "*", component: PageNotFoundComponent }, - { path: "", redirectTo: "/home", pathMatch: "full" }, + { path: "", redirectTo: "/discover", pathMatch: "full" }, { path: "login", component: LoginComponent }, { path: "Login/OAuth/:pin", component: LoginOAuthComponent }, { path: "Custom", component: CustomPageComponent }, @@ -57,7 +59,7 @@ const routes: Routes = [ { path: "token", component: TokenResetPasswordComponent }, { path: "landingpage", component: LandingPageComponent }, { path: "auth/cookie", component: CookieComponent }, - { loadChildren: "./discover/discover.module#DiscoverModule", path: "home" }, + { loadChildren: "./discover/discover.module#DiscoverModule", path: "discover" }, { loadChildren: "./issues/issues.module#IssuesModule", path: "issues" }, { loadChildren: "./settings/settings.module#SettingsModule", path: "Settings" }, { loadChildren: "./wizard/wizard.module#WizardModule", path: "Wizard" }, @@ -107,6 +109,7 @@ export function JwtTokenGetter() { MatInputModule, MatTabsModule, ReactiveFormsModule, + MatAutocompleteModule, CaptchaModule, TooltipModule, ConfirmDialogModule, @@ -127,7 +130,7 @@ export function JwtTokenGetter() { }, }), SidebarModule, - MatNativeDateModule, MatIconModule, MatSidenavModule, MatListModule, MatToolbarModule, + MatNativeDateModule, MatIconModule, MatSidenavModule, MatListModule, MatToolbarModule, LayoutModule, ], declarations: [ AppComponent, @@ -139,7 +142,8 @@ export function JwtTokenGetter() { CustomPageComponent, CookieComponent, LoginOAuthComponent, - NavComponent, + MyNavComponent, + ], providers: [ NotificationService, @@ -156,6 +160,7 @@ export function JwtTokenGetter() { IssuesService, PlexTvService, SearchService, + SearchV2Service, ], bootstrap: [AppComponent], }) diff --git a/src/Ombi/ClientApp/src/app/discover/discover.component.ts b/src/Ombi/ClientApp/src/app/discover/discover.component.ts index 57e7f90f7..6e6d32419 100644 --- a/src/Ombi/ClientApp/src/app/discover/discover.component.ts +++ b/src/Ombi/ClientApp/src/app/discover/discover.component.ts @@ -22,7 +22,6 @@ export class DiscoverComponent implements OnInit { this.tvShows = await this.searchService.popularTv().toPromise(); this.movies.forEach(m => { - debugger; this.discoverResults.push({ available: m.available, posterPath: `https://image.tmdb.org/t/p/w300/${m.posterPath}`, diff --git a/src/Ombi/ClientApp/src/app/discover/discover.module.ts b/src/Ombi/ClientApp/src/app/discover/discover.module.ts index de3b45491..999974994 100644 --- a/src/Ombi/ClientApp/src/app/discover/discover.module.ts +++ b/src/Ombi/ClientApp/src/app/discover/discover.module.ts @@ -3,14 +3,13 @@ import { RouterModule, Routes } from "@angular/router"; import { SearchService } from "../services"; -import { AuthGuard } from "../auth/auth.guard"; - import { SharedModule } from "../shared/shared.module"; import { DiscoverComponent } from "./discover.component"; import { DiscoverCardComponent } from "./card/discover-card.component"; const routes: Routes = [ - { path: "", component: DiscoverComponent, canActivate: [AuthGuard] }, + { path: "", component: DiscoverComponent }, + { path: "discover", component: DiscoverComponent }, ]; @NgModule({ imports: [ diff --git a/src/Ombi/ClientApp/src/app/interfaces/ISearchMovieResult.ts b/src/Ombi/ClientApp/src/app/interfaces/ISearchMovieResult.ts index 045e3290d..67ebbf0dc 100644 --- a/src/Ombi/ClientApp/src/app/interfaces/ISearchMovieResult.ts +++ b/src/Ombi/ClientApp/src/app/interfaces/ISearchMovieResult.ts @@ -34,6 +34,28 @@ background: any; } +export interface IMultiSearchResult { + original_name: string; + id: number; + media_type: string; + name: string; + vote_count: number; + vote_average: number; + poster_path: string; + first_air_date: string; + popularity: number; + genre_ids: number[]; + original_language: string; + backdrop_path: string; + overview: string; + origin_country: string[]; + video: true; + title: string; + original_title: string; + adult: true; + release_date: string; +} + export interface ILanguageRefine { code: string; name: string; diff --git a/src/Ombi/ClientApp/src/app/my-nav/my-nav.component.css b/src/Ombi/ClientApp/src/app/my-nav/my-nav.component.css new file mode 100644 index 000000000..64e92b80a --- /dev/null +++ b/src/Ombi/ClientApp/src/app/my-nav/my-nav.component.css @@ -0,0 +1,52 @@ +.sidenav-container { + height: 100%; +} + +.sidenav { + width: 200px; +} + +.sidenav .mat-toolbar { + background: inherit; +} + +.mat-toolbar.mat-primary { + position: sticky; + top: 0; + z-index: 1; +} +.spacer { + flex: 1 1 auto; +} + +@media (max-width: 978px) { + .top-spacing { + padding-top: 10% + } +} +@media (min-width: 979px) { + .top-spacing { + padding-top: 4% + } +} + +.example-form { + min-width: 150px; + max-width: 500px; + width: 100%; +} + +.quater-width { + width: 25%; +} + +.autocomplete-img { + vertical-align: middle; + height: 63px; +} + +.mat-option { + height: 50px; + line-height: 50px; + padding: 0px 5px; +} \ No newline at end of file diff --git a/src/Ombi/ClientApp/src/app/my-nav/my-nav.component.html b/src/Ombi/ClientApp/src/app/my-nav/my-nav.component.html new file mode 100644 index 000000000..79e3ef0d0 --- /dev/null +++ b/src/Ombi/ClientApp/src/app/my-nav/my-nav.component.html @@ -0,0 +1,39 @@ + + + Ombi + + Discover + Search + Requests + Settings + + + + + + + + + + + + + + {{option.name}} + + + {{option.title}} + + + + + + +
+ +
+
+
\ No newline at end of file diff --git a/src/Ombi/ClientApp/src/app/my-nav/my-nav.component.ts b/src/Ombi/ClientApp/src/app/my-nav/my-nav.component.ts new file mode 100644 index 000000000..ca7929dad --- /dev/null +++ b/src/Ombi/ClientApp/src/app/my-nav/my-nav.component.ts @@ -0,0 +1,42 @@ +import { Component, Input } from '@angular/core'; +import { BreakpointObserver, Breakpoints } from '@angular/cdk/layout'; +import { Observable, Subject } from 'rxjs'; +import { map, debounceTime, distinctUntilChanged } from 'rxjs/operators'; + +import { SearchV2Service } from '../services/searchV2.service'; +import { IMultiSearchResult } from '../interfaces'; + +@Component({ + selector: 'app-my-nav', + templateUrl: './my-nav.component.html', + styleUrls: ['./my-nav.component.css'] +}) +export class MyNavComponent { + + isHandset$: Observable = this.breakpointObserver.observe(Breakpoints.Handset) + .pipe( + map(result => result.matches) + ); + + @Input() public showNav: boolean; + public searchChanged: Subject = new Subject(); + public searchText: string; + public searchResult: IMultiSearchResult[]; + public option: IMultiSearchResult; + + constructor(private breakpointObserver: BreakpointObserver, + private searchService: SearchV2Service) { + this.searchChanged.pipe( + debounceTime(600), // Wait Xms after the last event before emitting last event + distinctUntilChanged(), // only emit if value is different from previous value + ).subscribe(x => { + this.searchText = x as string; + this.searchService.multiSearch(this.searchText).subscribe(x => this.searchResult = x) + }); + } + + public search(text: any) { + this.searchChanged.next(text.target.value); + } + +} diff --git a/src/Ombi/ClientApp/src/app/nav/nav.component.html b/src/Ombi/ClientApp/src/app/nav/nav.component.html deleted file mode 100644 index 82a5b97dd..000000000 --- a/src/Ombi/ClientApp/src/app/nav/nav.component.html +++ /dev/null @@ -1,22 +0,0 @@ - - - Ombi - - Discover - Search - Settings - - - - - - - - - - - - \ No newline at end of file diff --git a/src/Ombi/ClientApp/src/app/nav/nav.component.scss b/src/Ombi/ClientApp/src/app/nav/nav.component.scss deleted file mode 100644 index 727f7191f..000000000 --- a/src/Ombi/ClientApp/src/app/nav/nav.component.scss +++ /dev/null @@ -1,17 +0,0 @@ -.sidenav-container { - height: 100%; - } - - .sidenav { - width: 200px; - box-shadow: 3px 0 6px rgba(0,0,0,.24); - } - .example-fill-remaining-space { - /* This fills the remaining space, by using flexbox. - Every toolbar row uses a flexbox row layout. */ - flex: 1 1 auto; - } - - .right-spacing { - margin-right:2%; - } \ No newline at end of file diff --git a/src/Ombi/ClientApp/src/app/nav/nav.component.ts b/src/Ombi/ClientApp/src/app/nav/nav.component.ts deleted file mode 100644 index 2b0f79ca1..000000000 --- a/src/Ombi/ClientApp/src/app/nav/nav.component.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { BreakpointObserver, Breakpoints, BreakpointState } from "@angular/cdk/layout"; -import { Component } from "@angular/core"; -import { Observable } from "rxjs"; - -@Component({ - selector: "app-nav", - templateUrl: "./nav.component.html", - styleUrls: ["./nav.component.scss"], -}) -export class NavComponent { - public isHandset: Observable = this.breakpointObserver.observe(Breakpoints.HandsetPortrait); - - constructor(private breakpointObserver: BreakpointObserver) { - // this.checkLogin(); - // this.authService.userLoggedIn.subscribe(x => { - // this.checkLogin(); - // }); - } - - -} \ No newline at end of file diff --git a/src/Ombi/ClientApp/src/app/search/moviesearch.component.html b/src/Ombi/ClientApp/src/app/search/moviesearch.component.html index c66cd6383..c19815678 100644 --- a/src/Ombi/ClientApp/src/app/search/moviesearch.component.html +++ b/src/Ombi/ClientApp/src/app/search/moviesearch.component.html @@ -1,24 +1,6 @@ - - - - - - - - -

Card Title

-
- - - Some quick example text to build on the card title and make up the bulk of the card's - content. - - - Button -
-
- - \ No newline at end of file + [issueCategory]="issueCategorySelected" [id]="issueRequestId" [providerId]="issueProviderId"> \ No newline at end of file diff --git a/src/Ombi/ClientApp/src/app/services/searchV2.service.ts b/src/Ombi/ClientApp/src/app/services/searchV2.service.ts new file mode 100644 index 000000000..fe8d10a90 --- /dev/null +++ b/src/Ombi/ClientApp/src/app/services/searchV2.service.ts @@ -0,0 +1,19 @@ +import { PlatformLocation } from "@angular/common"; +import { Injectable } from "@angular/core"; + +import { HttpClient } from "@angular/common/http"; +import { Observable } from "rxjs"; + +import { IMultiSearchResult } from "../interfaces"; +import { ServiceHelpers } from "./service.helpers"; + +@Injectable() +export class SearchV2Service extends ServiceHelpers { + constructor(http: HttpClient, public platformLocation: PlatformLocation) { + super(http, "/api/v2/search", platformLocation); + } + + public multiSearch(searchTerm: string): Observable { + return this.http.get(`${this.url}/multi/${searchTerm}`); + } +} diff --git a/src/Ombi/ClientApp/src/app/shared/shared.module.ts b/src/Ombi/ClientApp/src/app/shared/shared.module.ts index db9ad512b..98ca29d2e 100644 --- a/src/Ombi/ClientApp/src/app/shared/shared.module.ts +++ b/src/Ombi/ClientApp/src/app/shared/shared.module.ts @@ -11,7 +11,7 @@ import { InputSwitchModule, SidebarModule } from "primeng/primeng"; import { MatButtonModule, MatNativeDateModule, MatIconModule, MatSidenavModule, MatListModule, MatToolbarModule, MatTooltipModule} from '@angular/material'; - import { MatCardModule, MatInputModule, MatTabsModule } from "@angular/material"; + import { MatCardModule, MatInputModule, MatTabsModule, MatAutocompleteModule } from "@angular/material"; @NgModule({ declarations: [ @@ -25,6 +25,7 @@ import { TruncateModule, MomentModule, MatCardModule, + MatAutocompleteModule, MatInputModule, MatTabsModule, MatButtonModule, @@ -52,6 +53,7 @@ import { MatListModule, MatToolbarModule, MatTooltipModule, + MatAutocompleteModule, ], }) export class SharedModule {} diff --git a/src/Ombi/Controllers/External/CouchPotatoController.cs b/src/Ombi/Controllers/V1/External/CouchPotatoController.cs similarity index 96% rename from src/Ombi/Controllers/External/CouchPotatoController.cs rename to src/Ombi/Controllers/V1/External/CouchPotatoController.cs index dd7a07a9d..a170f46a5 100644 --- a/src/Ombi/Controllers/External/CouchPotatoController.cs +++ b/src/Ombi/Controllers/V1/External/CouchPotatoController.cs @@ -5,7 +5,7 @@ using Ombi.Api.CouchPotato.Models; using Ombi.Attributes; using Ombi.Settings.Settings.Models.External; -namespace Ombi.Controllers.External +namespace Ombi.Controllers.V1.External { [Admin] [ApiV1] diff --git a/src/Ombi/Controllers/External/EmbyController.cs b/src/Ombi/Controllers/V1/External/EmbyController.cs similarity index 98% rename from src/Ombi/Controllers/External/EmbyController.cs rename to src/Ombi/Controllers/V1/External/EmbyController.cs index df865be61..116efaa89 100644 --- a/src/Ombi/Controllers/External/EmbyController.cs +++ b/src/Ombi/Controllers/V1/External/EmbyController.cs @@ -4,14 +4,13 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Ombi.Api.Emby; -using Ombi.Api.Plex; using Ombi.Attributes; using Ombi.Core.Settings; using Ombi.Core.Settings.Models.External; using Ombi.Helpers; using Ombi.Models.External; -namespace Ombi.Controllers.External +namespace Ombi.Controllers.V1.External { [Admin] [ApiV1] diff --git a/src/Ombi/Controllers/External/LidarrController.cs b/src/Ombi/Controllers/V1/External/LidarrController.cs similarity index 99% rename from src/Ombi/Controllers/External/LidarrController.cs rename to src/Ombi/Controllers/V1/External/LidarrController.cs index 076d68241..fac7f6dee 100644 --- a/src/Ombi/Controllers/External/LidarrController.cs +++ b/src/Ombi/Controllers/V1/External/LidarrController.cs @@ -9,7 +9,7 @@ using Ombi.Core.Settings; using Ombi.Helpers; using Ombi.Settings.Settings.Models.External; -namespace Ombi.Controllers.External +namespace Ombi.Controllers.V1.External { [PowerUser] [ApiV1] diff --git a/src/Ombi/Controllers/External/PlexController.cs b/src/Ombi/Controllers/V1/External/PlexController.cs similarity index 99% rename from src/Ombi/Controllers/External/PlexController.cs rename to src/Ombi/Controllers/V1/External/PlexController.cs index 9f7df05ad..c8b503dc0 100644 --- a/src/Ombi/Controllers/External/PlexController.cs +++ b/src/Ombi/Controllers/V1/External/PlexController.cs @@ -15,7 +15,7 @@ using Ombi.Helpers; using Ombi.Models; using Ombi.Models.External; -namespace Ombi.Controllers.External +namespace Ombi.Controllers.V1.External { [Admin] [ApiV1] diff --git a/src/Ombi/Controllers/External/RadarrController.cs b/src/Ombi/Controllers/V1/External/RadarrController.cs similarity index 97% rename from src/Ombi/Controllers/External/RadarrController.cs rename to src/Ombi/Controllers/V1/External/RadarrController.cs index 623322704..a94832f06 100644 --- a/src/Ombi/Controllers/External/RadarrController.cs +++ b/src/Ombi/Controllers/V1/External/RadarrController.cs @@ -1,5 +1,4 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; using System.Threading.Tasks; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; @@ -10,7 +9,7 @@ using Ombi.Core.Settings; using Ombi.Helpers; using Ombi.Settings.Settings.Models.External; -namespace Ombi.Controllers.External +namespace Ombi.Controllers.V1.External { [Authorize] [ApiV1] diff --git a/src/Ombi/Controllers/External/SonarrController.cs b/src/Ombi/Controllers/V1/External/SonarrController.cs similarity index 97% rename from src/Ombi/Controllers/External/SonarrController.cs rename to src/Ombi/Controllers/V1/External/SonarrController.cs index bc2534ab8..3f3bfaafc 100644 --- a/src/Ombi/Controllers/External/SonarrController.cs +++ b/src/Ombi/Controllers/V1/External/SonarrController.cs @@ -7,10 +7,9 @@ using Ombi.Api.Sonarr.Models; using Ombi.Api.Sonarr.Models.V3; using Ombi.Attributes; using Ombi.Core.Settings; -using Ombi.Core.Settings.Models.External; using Ombi.Settings.Settings.Models.External; -namespace Ombi.Controllers.External +namespace Ombi.Controllers.V1.External { [Authorize] [ApiV1] diff --git a/src/Ombi/Controllers/External/TesterController.cs b/src/Ombi/Controllers/V1/External/TesterController.cs similarity index 99% rename from src/Ombi/Controllers/External/TesterController.cs rename to src/Ombi/Controllers/V1/External/TesterController.cs index 5e3156bde..e7c216316 100644 --- a/src/Ombi/Controllers/External/TesterController.cs +++ b/src/Ombi/Controllers/V1/External/TesterController.cs @@ -23,7 +23,7 @@ using Ombi.Schedule.Jobs.Ombi; using Ombi.Settings.Settings.Models.External; using Ombi.Settings.Settings.Models.Notifications; -namespace Ombi.Controllers.External +namespace Ombi.Controllers.V1.External { /// /// The Tester Controller diff --git a/src/Ombi/Controllers/IdentityController.cs b/src/Ombi/Controllers/V1/IdentityController.cs similarity index 99% rename from src/Ombi/Controllers/IdentityController.cs rename to src/Ombi/Controllers/V1/IdentityController.cs index 2976069ed..45e237317 100644 --- a/src/Ombi/Controllers/IdentityController.cs +++ b/src/Ombi/Controllers/V1/IdentityController.cs @@ -34,7 +34,7 @@ using Ombi.Store.Repository.Requests; using IdentityResult = Microsoft.AspNetCore.Identity.IdentityResult; using OmbiIdentityResult = Ombi.Models.Identity.IdentityResult; -namespace Ombi.Controllers +namespace Ombi.Controllers.V1 { /// /// diff --git a/src/Ombi/Controllers/ImagesController.cs b/src/Ombi/Controllers/V1/ImagesController.cs similarity index 98% rename from src/Ombi/Controllers/ImagesController.cs rename to src/Ombi/Controllers/V1/ImagesController.cs index 39de92c71..f6861ba69 100644 --- a/src/Ombi/Controllers/ImagesController.cs +++ b/src/Ombi/Controllers/V1/ImagesController.cs @@ -1,18 +1,14 @@ -using Microsoft.AspNetCore.Mvc; -using Ombi.Api.FanartTv; -using Ombi.Store.Repository; using System; -using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; -using Microsoft.AspNetCore.Authorization; -using Microsoft.Extensions.Caching.Memory; +using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Options; -using Ombi.Api.TheMovieDb; +using Ombi.Api.FanartTv; using Ombi.Config; using Ombi.Helpers; +using Ombi.Store.Repository; -namespace Ombi.Controllers +namespace Ombi.Controllers.V1 { [ApiV1] [Produces("application/json")] diff --git a/src/Ombi/Controllers/IssuesController.cs b/src/Ombi/Controllers/V1/IssuesController.cs similarity index 99% rename from src/Ombi/Controllers/IssuesController.cs rename to src/Ombi/Controllers/V1/IssuesController.cs index 1a5af5446..1278ca091 100644 --- a/src/Ombi/Controllers/IssuesController.cs +++ b/src/Ombi/Controllers/V1/IssuesController.cs @@ -1,24 +1,22 @@ using System; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Mvc; -using Ombi.Store.Entities.Requests; -using Ombi.Store.Repository; using System.Collections.Generic; using System.Linq; +using System.Threading.Tasks; using Hangfire; +using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Identity; +using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using Ombi.Attributes; -using Ombi.Core; using Ombi.Core.Notifications; using Ombi.Helpers; using Ombi.Models; using Ombi.Notifications.Models; using Ombi.Store.Entities; -using StackExchange.Profiling.Helpers; +using Ombi.Store.Entities.Requests; +using Ombi.Store.Repository; -namespace Ombi.Controllers +namespace Ombi.Controllers.V1 { [ApiV1] [Authorize] diff --git a/src/Ombi/Controllers/JobController.cs b/src/Ombi/Controllers/V1/JobController.cs similarity index 98% rename from src/Ombi/Controllers/JobController.cs rename to src/Ombi/Controllers/V1/JobController.cs index cec8d2c45..f366c4ef3 100644 --- a/src/Ombi/Controllers/JobController.cs +++ b/src/Ombi/Controllers/V1/JobController.cs @@ -2,8 +2,6 @@ using System.Threading.Tasks; using Hangfire; using Microsoft.AspNetCore.Mvc; -using Microsoft.Extensions.Caching.Memory; -using Ombi.Api.Service; using Ombi.Attributes; using Ombi.Helpers; using Ombi.Schedule.Jobs; @@ -11,7 +9,7 @@ using Ombi.Schedule.Jobs.Emby; using Ombi.Schedule.Jobs.Ombi; using Ombi.Schedule.Jobs.Plex; -namespace Ombi.Controllers +namespace Ombi.Controllers.V1 { [ApiV1] [Admin] diff --git a/src/Ombi/Controllers/LandingPageController.cs b/src/Ombi/Controllers/V1/LandingPageController.cs similarity index 98% rename from src/Ombi/Controllers/LandingPageController.cs rename to src/Ombi/Controllers/V1/LandingPageController.cs index 6b1c27656..48d10d727 100644 --- a/src/Ombi/Controllers/LandingPageController.cs +++ b/src/Ombi/Controllers/V1/LandingPageController.cs @@ -9,7 +9,7 @@ using Ombi.Core.Settings; using Ombi.Core.Settings.Models.External; using Ombi.Models; -namespace Ombi.Controllers +namespace Ombi.Controllers.V1 { [ApiV1] [AllowAnonymous] diff --git a/src/Ombi/Controllers/LoggingController.cs b/src/Ombi/Controllers/V1/LoggingController.cs similarity index 95% rename from src/Ombi/Controllers/LoggingController.cs rename to src/Ombi/Controllers/V1/LoggingController.cs index c944825af..c1da3f107 100644 --- a/src/Ombi/Controllers/LoggingController.cs +++ b/src/Ombi/Controllers/V1/LoggingController.cs @@ -1,10 +1,10 @@ -using Microsoft.AspNetCore.Authorization; +using System; +using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; using Ombi.Models; -using System; -namespace Ombi.Controllers +namespace Ombi.Controllers.V1 { [Authorize] [ApiV1] diff --git a/src/Ombi/Controllers/MobileController.cs b/src/Ombi/Controllers/V1/MobileController.cs similarity index 98% rename from src/Ombi/Controllers/MobileController.cs rename to src/Ombi/Controllers/V1/MobileController.cs index c3b15a910..9893b19d6 100644 --- a/src/Ombi/Controllers/MobileController.cs +++ b/src/Ombi/Controllers/V1/MobileController.cs @@ -12,7 +12,7 @@ using Ombi.Models; using Ombi.Store.Entities; using Ombi.Store.Repository; -namespace Ombi.Controllers +namespace Ombi.Controllers.V1 { [ApiV1] [Authorize] diff --git a/src/Ombi/Controllers/MusicRequestController.cs b/src/Ombi/Controllers/V1/MusicRequestController.cs similarity index 99% rename from src/Ombi/Controllers/MusicRequestController.cs rename to src/Ombi/Controllers/V1/MusicRequestController.cs index 01c0c494d..2b16d3651 100644 --- a/src/Ombi/Controllers/MusicRequestController.cs +++ b/src/Ombi/Controllers/V1/MusicRequestController.cs @@ -1,20 +1,20 @@ using System; -using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Mvc; -using Ombi.Core.Engine; -using Ombi.Core.Models.Requests; using System.Collections.Generic; +using System.Linq; using System.Threading.Tasks; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; -using Ombi.Store.Entities.Requests; using Ombi.Attributes; +using Ombi.Core.Engine; using Ombi.Core.Models; +using Ombi.Core.Models.Requests; using Ombi.Core.Models.UI; using Ombi.Store.Entities; +using Ombi.Store.Entities.Requests; using ILogger = Microsoft.Extensions.Logging.ILogger; -using System.Linq; -namespace Ombi.Controllers +namespace Ombi.Controllers.V1 { [Authorize] [Route("api/v1/request/music")] diff --git a/src/Ombi/Controllers/NotificationsController.cs b/src/Ombi/Controllers/V1/NotificationsController.cs similarity index 98% rename from src/Ombi/Controllers/NotificationsController.cs rename to src/Ombi/Controllers/V1/NotificationsController.cs index 8fe453d3d..4629f3738 100644 --- a/src/Ombi/Controllers/NotificationsController.cs +++ b/src/Ombi/Controllers/V1/NotificationsController.cs @@ -31,7 +31,7 @@ using Ombi.Attributes; using Ombi.Core.Models; using Ombi.Core.Senders; -namespace Ombi.Controllers +namespace Ombi.Controllers.V1 { [Admin] [ApiV1] diff --git a/src/Ombi/Controllers/PlexOAuthController.cs b/src/Ombi/Controllers/V1/PlexOAuthController.cs similarity index 95% rename from src/Ombi/Controllers/PlexOAuthController.cs rename to src/Ombi/Controllers/V1/PlexOAuthController.cs index fe78435c9..c3a25093f 100644 --- a/src/Ombi/Controllers/PlexOAuthController.cs +++ b/src/Ombi/Controllers/V1/PlexOAuthController.cs @@ -1,13 +1,9 @@ using System; using System.Collections.Generic; -using System.Net; -using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Mvc; -using Microsoft.AspNetCore.Http.Internal; -using System.IO; using System.Linq; -using System.Text; using System.Threading.Tasks; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; using Ombi.Api.Plex; using Ombi.Core.Authentication; @@ -15,7 +11,7 @@ using Ombi.Core.Settings; using Ombi.Core.Settings.Models.External; using Ombi.Helpers; -namespace Ombi.Controllers +namespace Ombi.Controllers.V1 { [ApiExplorerSettings(IgnoreApi = true)] [ApiV1] diff --git a/src/Ombi/Controllers/RecentlyAddedController.cs b/src/Ombi/Controllers/V1/RecentlyAddedController.cs similarity index 95% rename from src/Ombi/Controllers/RecentlyAddedController.cs rename to src/Ombi/Controllers/V1/RecentlyAddedController.cs index a56750449..9bd2e68dc 100644 --- a/src/Ombi/Controllers/RecentlyAddedController.cs +++ b/src/Ombi/Controllers/V1/RecentlyAddedController.cs @@ -1,13 +1,11 @@ using System; using System.Collections.Generic; -using System.Threading.Tasks; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Ombi.Core.Engine; using Ombi.Core.Models; -using Ombi.Models; -namespace Ombi.Controllers +namespace Ombi.Controllers.V1 { [ApiV1] [Produces("application/json")] diff --git a/src/Ombi/Controllers/RequestController.cs b/src/Ombi/Controllers/V1/RequestController.cs similarity index 99% rename from src/Ombi/Controllers/RequestController.cs rename to src/Ombi/Controllers/V1/RequestController.cs index 0cad4ab62..eb49d5962 100644 --- a/src/Ombi/Controllers/RequestController.cs +++ b/src/Ombi/Controllers/V1/RequestController.cs @@ -1,24 +1,21 @@ using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Logging; +using Ombi.Attributes; using Ombi.Core.Engine; using Ombi.Core.Engine.Interfaces; +using Ombi.Core.Models; using Ombi.Core.Models.Requests; -using Ombi.Core.Models.Search; -using System.Collections.Generic; -using System.Threading.Tasks; -using Ombi.Store.Entities.Requests; -using System.Diagnostics; -using System.Linq; -using Microsoft.Extensions.Logging; -using Ombi.Attributes; using Ombi.Core.Models.UI; using Ombi.Models; using Ombi.Store.Entities; -using Ombi.Core.Models; -using Ombi.Helpers; +using Ombi.Store.Entities.Requests; -namespace Ombi.Controllers +namespace Ombi.Controllers.V1 { [Authorize] [ApiV1] diff --git a/src/Ombi/Controllers/RequestRetryController.cs b/src/Ombi/Controllers/V1/RequestRetryController.cs similarity index 94% rename from src/Ombi/Controllers/RequestRetryController.cs rename to src/Ombi/Controllers/V1/RequestRetryController.cs index 12208978a..49cc46d3a 100644 --- a/src/Ombi/Controllers/RequestRetryController.cs +++ b/src/Ombi/Controllers/V1/RequestRetryController.cs @@ -1,17 +1,15 @@ -using System.Threading.Tasks; -using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Mvc; -using Ombi.Store.Entities.Requests; -using Ombi.Store.Repository; -using System.Collections.Generic; +using System.Collections.Generic; using System.Linq; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using Ombi.Attributes; using Ombi.Models; using Ombi.Store.Entities; +using Ombi.Store.Repository; using Ombi.Store.Repository.Requests; -namespace Ombi.Controllers +namespace Ombi.Controllers.V1 { [ApiV1] [Admin] diff --git a/src/Ombi/Controllers/SearchController.cs b/src/Ombi/Controllers/V1/SearchController.cs similarity index 99% rename from src/Ombi/Controllers/SearchController.cs rename to src/Ombi/Controllers/V1/SearchController.cs index 08f889f08..e4df4207b 100644 --- a/src/Ombi/Controllers/SearchController.cs +++ b/src/Ombi/Controllers/V1/SearchController.cs @@ -1,6 +1,7 @@ using System.Collections.Generic; using System.Threading.Tasks; using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; using Ombi.Core; @@ -9,9 +10,8 @@ using Ombi.Core.Engine.Interfaces; using Ombi.Core.Models.Search; using Ombi.Models; using StackExchange.Profiling; -using Microsoft.AspNetCore.Http; -namespace Ombi.Controllers +namespace Ombi.Controllers.V1 { [Authorize] [ApiV1] diff --git a/src/Ombi/Controllers/SettingsController.cs b/src/Ombi/Controllers/V1/SettingsController.cs similarity index 99% rename from src/Ombi/Controllers/SettingsController.cs rename to src/Ombi/Controllers/V1/SettingsController.cs index 0fe67edfd..3deb77e8b 100644 --- a/src/Ombi/Controllers/SettingsController.cs +++ b/src/Ombi/Controllers/V1/SettingsController.cs @@ -12,7 +12,9 @@ using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using NCrontab; using Ombi.Api.Emby; +using Ombi.Api.Github; using Ombi.Attributes; +using Ombi.Core.Engine; using Ombi.Core.Models.UI; using Ombi.Core.Settings; using Ombi.Core.Settings.Models; @@ -25,10 +27,8 @@ using Ombi.Settings.Settings.Models.External; using Ombi.Settings.Settings.Models.Notifications; using Ombi.Store.Entities; using Ombi.Store.Repository; -using Ombi.Api.Github; -using Ombi.Core.Engine; -namespace Ombi.Controllers +namespace Ombi.Controllers.V1 { /// /// diff --git a/src/Ombi/Controllers/StatsController.cs b/src/Ombi/Controllers/V1/StatsController.cs similarity index 95% rename from src/Ombi/Controllers/StatsController.cs rename to src/Ombi/Controllers/V1/StatsController.cs index 08d98b2c3..7aba2dbed 100644 --- a/src/Ombi/Controllers/StatsController.cs +++ b/src/Ombi/Controllers/V1/StatsController.cs @@ -4,7 +4,7 @@ using Microsoft.AspNetCore.Mvc; using Ombi.Attributes; using Ombi.Core.Engine; -namespace Ombi.Controllers +namespace Ombi.Controllers.V1 { [ApiV1] [Admin] diff --git a/src/Ombi/Controllers/StatusController.cs b/src/Ombi/Controllers/V1/StatusController.cs similarity index 98% rename from src/Ombi/Controllers/StatusController.cs rename to src/Ombi/Controllers/V1/StatusController.cs index a3e36fb43..074127e8b 100644 --- a/src/Ombi/Controllers/StatusController.cs +++ b/src/Ombi/Controllers/V1/StatusController.cs @@ -33,7 +33,7 @@ using Ombi.Core.Settings; using Ombi.Helpers; using Ombi.Settings.Settings.Models; -namespace Ombi.Controllers +namespace Ombi.Controllers.V1 { [ApiV1] [Produces("application/json")] diff --git a/src/Ombi/Controllers/TokenController.cs b/src/Ombi/Controllers/V1/TokenController.cs similarity index 98% rename from src/Ombi/Controllers/TokenController.cs rename to src/Ombi/Controllers/V1/TokenController.cs index 44ec5686f..91b2656da 100644 --- a/src/Ombi/Controllers/TokenController.cs +++ b/src/Ombi/Controllers/V1/TokenController.cs @@ -2,11 +2,9 @@ using System.Collections.Generic; using System.IdentityModel.Tokens.Jwt; using System.Linq; -using System.Net.Http; using System.Security.Claims; using System.Text; using System.Threading.Tasks; -using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Options; using Microsoft.IdentityModel.Tokens; @@ -18,7 +16,7 @@ using Ombi.Models.Identity; using Ombi.Store.Entities; using Ombi.Store.Repository; -namespace Ombi.Controllers +namespace Ombi.Controllers.V1 { [ApiV1] [Produces("application/json")] diff --git a/src/Ombi/Controllers/UpdateController.cs b/src/Ombi/Controllers/V1/UpdateController.cs similarity index 87% rename from src/Ombi/Controllers/UpdateController.cs rename to src/Ombi/Controllers/V1/UpdateController.cs index 3fb1c7382..4a943ae73 100644 --- a/src/Ombi/Controllers/UpdateController.cs +++ b/src/Ombi/Controllers/V1/UpdateController.cs @@ -1,12 +1,10 @@ -using System; -using System.Collections.Generic; -using System.Threading.Tasks; +using System.Threading.Tasks; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Ombi.Core.Processor; using Ombi.Helpers; -namespace Ombi.Controllers +namespace Ombi.Controllers.V1 { [ApiV1] [Produces("application/json")] diff --git a/src/Ombi/Controllers/VoteController.cs b/src/Ombi/Controllers/V1/VoteController.cs similarity index 97% rename from src/Ombi/Controllers/VoteController.cs rename to src/Ombi/Controllers/V1/VoteController.cs index 8c7c88396..0ca3b8674 100644 --- a/src/Ombi/Controllers/VoteController.cs +++ b/src/Ombi/Controllers/V1/VoteController.cs @@ -1,14 +1,14 @@ -using System.Threading.Tasks; +using System.Collections.Generic; +using System.Threading.Tasks; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; -using System.Collections.Generic; using Microsoft.EntityFrameworkCore; using Ombi.Core.Engine; using Ombi.Core.Models; using Ombi.Core.Models.UI; using Ombi.Store.Entities; -namespace Ombi.Controllers +namespace Ombi.Controllers.V1 { [ApiV1] [Authorize] diff --git a/src/Ombi/Controllers/V2/SearchController.cs b/src/Ombi/Controllers/V2/SearchController.cs new file mode 100644 index 000000000..e919d2cca --- /dev/null +++ b/src/Ombi/Controllers/V2/SearchController.cs @@ -0,0 +1,32 @@ +using System.Threading.Tasks; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using Ombi.Api.TheMovieDb.Models; +using Ombi.Core.Engine.V2; +using System.Collections.Generic; + +namespace Ombi.Controllers.V2 +{ + [ApiV2] + [Authorize] + [ApiController] + public class SearchController : ControllerBase + { + public SearchController(IMultiSearchEngine multiSearchEngine) + { + _multiSearchEngine = multiSearchEngine; + } + + private readonly IMultiSearchEngine _multiSearchEngine; + + /// + /// Runs the update job + /// + /// + [HttpGet("multi/{searchTerm}")] + public async Task> ForceUpdate(string searchTerm) + { + return await _multiSearchEngine.MultiSearch(searchTerm); + } + } +} \ No newline at end of file