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.
<PackageVersion Include="MintPlayer.AspNetCore.OpenSearch" Version="1.1.0" />
                    
Directory.Packages.props
<PackageReference Include="MintPlayer.AspNetCore.OpenSearch" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version 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.
#addin nuget:?package=MintPlayer.AspNetCore.OpenSearch&version=1.1.0
                    
Install as a Cake Addin
#tool nuget:?package=MintPlayer.AspNetCore.OpenSearch&version=1.1.0
                    
Install as a Cake Tool

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.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.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
9.1.0 116 11/17/2024
9.0.0 113 11/13/2024
8.0.0 247 11/14/2023
7.0.0 381 11/18/2022
7.0.0-preview.1 134 11/4/2022
6.0.1 389 11/4/2022
6.0.0 371 12/26/2021
1.1.1 514 8/20/2020
1.1.0 509 8/10/2020
1.0.5 573 1/13/2020
1.0.4 575 12/14/2019
1.0.0 625 8/29/2019