MintPlayer.AspNetCore.OpenSearch 1.1.0

There is a newer version of this package available.
See the version list below for details.
dotnet add package MintPlayer.AspNetCore.OpenSearch --version 1.1.0
NuGet\Install-Package MintPlayer.AspNetCore.OpenSearch -Version 1.1.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="MintPlayer.AspNetCore.OpenSearch" Version="1.1.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add MintPlayer.AspNetCore.OpenSearch --version 1.1.0
#r "nuget: MintPlayer.AspNetCore.OpenSearch, 1.1.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install MintPlayer.AspNetCore.OpenSearch as a Cake Addin
#addin nuget:?package=MintPlayer.AspNetCore.OpenSearch&version=1.1.0

// Install MintPlayer.AspNetCore.OpenSearch as a Cake Tool
#tool nuget:?package=MintPlayer.AspNetCore.OpenSearch&version=1.1.0

MintPlayer.AspNetCore.OpenSearch

Easily add OpenSearch to your ASP.NET Core website

NuGet package

https://www.nuget.org/packages/MintPlayer.AspNetCore.OpenSearch/

Installation

NuGet package manager

Open the NuGet package manager and install MintPlayer.AspNetCore.OpenSearch in your project

Package manager console

Install-Package MintPlayer.AspNetCore.OpenSearch

Usage

Register the OpenSearch services and configure the options

public void ConfigureServices(IServiceCollection services)
{
    services
        .AddControllersWithViews(options =>
        {
            options.RespectBrowserAcceptHeader = true;
        })
        .AddXmlSerializerFormatters();

    services.AddOpenSearch<Services.OpenSearchService>();
    services.Configure<OpenSearchOptions>(options =>
    {
        options.OsdxEndpoint = "/opensearch.xml";
        options.SearchUrl = "/api/Subject/opensearch/redirect/{searchTerms}";
        options.SuggestUrl = "/api/Subject/opensearch/suggest/{searchTerms}";
        options.ImageUrl = "/assets/logo/music_note_16.png";
        options.ShortName = "MintPlayer";
        options.Description = "Search music on MintPlayer";
        options.Contact = "email@example.com";
    });
}

Don't forget to add the XML serializer formatters

Adding OpenSearch middleware

Add OpenSearch before UseMVC in the middleware pipeline (Startup@Configure):

app.UseOpenSearch();

Build your OpenSearch service

This is an example implementation of the IOpenSearchService:

public class OpenSearchService : IOpenSearchService
{
    private readonly IServiceProvider serviceProvider;
    public OpenSearchService(IServiceProvider serviceProvider)
    {
        this.serviceProvider = serviceProvider;
    }

    public async Task<RedirectResult> PerformSearch(string searchTerms)
    {
        //using (var scope = serviceProvider.CreateScope())
        //{
        //    var subjectRepository = scope.ServiceProvider.GetService<ISubjectRepository>();
        //}
        return new RedirectResult($"/search/{searchTerms}");
    }

    public async Task<IEnumerable<string>> ProvideSuggestions(string searchTerms)
    {
        //using (var scope = serviceProvider.CreateScope())
        //{
        //    var subjectRepository = scope.ServiceProvider.GetService<ISubjectRepository>();
        //}
        return new[] { searchTerms + 'o', new string(searchTerms.Reverse().ToArray()) };
    }
}

Reference OpenSearchDescription from HTML

Open your index.html (angular app) or _ViewStart.cshtml (Razor) and add a link to your OpenSearchDescription:

<link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="Search through MintPlayer">
Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp3.1 is compatible. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • .NETCoreApp 3.1

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
8.0.0 215 11/14/2023
7.0.0 328 11/18/2022
7.0.0-preview.1 90 11/4/2022
6.0.1 323 11/4/2022
6.0.0 300 12/26/2021
1.1.1 424 8/20/2020
1.1.0 408 8/10/2020
1.0.5 490 1/13/2020
1.0.4 477 12/14/2019
1.0.0 486 8/29/2019