This is a viewer only at the moment see the article on how this works.
To update the preview hit Ctrl-Alt-R (or ⌘-Alt-R on Mac) or Enter to refresh. The Save icon lets you save the markdown file to disk
This is a preview from the server running through my markdig pipeline
Adding Umami Tracking Client Nuget Package
Wednesday, 28 August 2024
Introduzione
Ora ho il cliente Umami; Dovrei l'impacchettare e renderlo disponibile come package Nuget. È un processo abbastanza semplice, ma ci sono alcune cose di cui essere consapevoli.
Creare il Nuget Package
La versione
Ho deciso di copiare. Khalid e usare l'excellente package minver alla versione del mio package Nuget. Questo è un semplice package che usa la targhetta della versione git per determinare il numero di versione.
Per usarlo ho semplicemente aggiunto il seguente: Umami.Net.csproj file:
<PropertyGroup>
<MinVerTagPrefix>v</MinVerTagPrefix>
</PropertyGroup>
In questo modo posso etichettare la mia versione con un v e il pacchetto sarà corretto.
git tag v0.0.8
git push origin v0.0.8
Metterò questo tag, allora ho una configurazione di GitHub Action per aspettare quel tag e costruire il package Nuget.
Costruire il Nuget Package
Ho un'azione GitHub che costruisce il pacco Nuget e lo spinge al riposito del pacco Git Hub. Questo è un semplice processo che usa dotnet pack il comando per costruire il paquet e poi il dotnet nuget push il comando per spingerlo al riposito nuget.
name: Publish Umami.NET
on:
push:
tags:
- 'v*.*.*' # This triggers the action for any tag that matches the pattern v1.0.0, v2.1.3, etc.
jobs:
publish:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Setup .NET
uses: actions/setup-dotnet@v3
with:
dotnet-version: '8.x' # Specify the .NET version you need
- name: Restore dependencies
run: dotnet restore ./Umami.Net/Umami.Net.csproj
- name: Build project
run: dotnet build --configuration Release ./Umami.Net/Umami.Net.csproj --no-restore
- name: Pack project
run: dotnet pack --configuration Release ./Umami.Net/Umami.Net.csproj --no-build --output ./nupkg
- name: Publish to NuGet
run: dotnet nuget push ./nupkg/*.nupkg --source https://api.nuget.org/v3/index.json --api-key ${{ secrets.UMAMI_NUGET_API_KEY }}
env:
NUGET_API_KEY: ${{ secrets.UMAMI_NUGET_API_KEY }}
Adding Readme and Icon
Questo è abbastanza semplice, aggiungo un README.md file alla radice del progetto e a icon.png file alla radice del progetto. README.md il file viene usato come descrizione del package e della icon.png il file è usato come icono del package.
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<LangVersion>12</LangVersion>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<IsPackable>true</IsPackable>
<PackageId>Umami.Net</PackageId>
<Authors>Scott Galloway</Authors>
<PackageIcon>icon.png</PackageIcon>
<RepositoryUrl>https://github.com/scottgal/mostlylucidweb/tree/main/Umami.Net</RepositoryUrl>
<PackageLicenseExpression>MIT</PackageLicenseExpression>
<PackageTags>web</PackageTags>
<PackageReadmeFile>README.md</PackageReadmeFile>
<Description>
Adds a simple Umami endpoint to your ASP.NET Core application.
</Description>
</PropertyGroup>
Nel mio file README.md ho un link al riposito GitHub e una descrizione del package.
Riprodotto sotto:
Umami.Net
Questo è un .NET Core client per l'API di tracciamento Umami. È basato sul cliente Umami Node, ,. Qui..
Potete vedere come creare Umami come contenitore di docker. Qui.. Potete leggere più dettagli sulla creazione di ' sul mio blog. Qui..
Per usare questo cliente servono le following appsettings.json configuration:
{
"Analytics":{
"UmamiPath" : "https://umamilocal.mostlylucid.net",
"WebsiteId" : "32c2aa31-b1ac-44c0-b8f3-ff1f50403bee"
},
}
Dove? UmamiPath è il percorso verso l'instance Umami e WebsiteId è l'ID del sito web che volete tracciare.
Per usare il cliente dovete aggiungere le following cose. Program.cs:
using Umami.Net;
services.SetupUmamiClient(builder.Configuration);
Questo aggiungerà il cliente Umami alla raccolta dei servizi.
Si può usare il cliente in due modi:
- Si inietta.
UmamiClientAll'interno della vostra classe e chiamate ilTrackmetodo:
// Inject UmamiClient umamiClient
await umamiClient.Track("Search", new UmamiEventData(){{"query", encodedQuery}});
- Utilizzate la
UmamiBackgroundSenderper tracciare gli eventi nello sfondo ( questo usa unIHostedServiceper mandare eventi in fondo):
// Inject UmamiBackgroundSender umamiBackgroundSender
await umamiBackgroundSender.Track("Search", new UmamiEventData(){{"query", encodedQuery}});
Il cliente spedirà l'evento all'API Umami e sarà archiviato.
L'informazione figura nella parte dispositiva. UmamiEventData è un vocabolario di coppie di valori chiave che verranno inviate all'API Umami come dati dell'evento.
Ci sono inoltre più metodi di basso livello che possono essere usati per inviare eventi all'API Umami.
In entrambi i casi. UmamiClient e UmamiBackgroundSender Potete chiamare il seguente metodo.
Send(UmamiPayload? payload = null, UmamiEventData? eventData = null,
string eventType = "event")
Se non passate in una UmamiPayload object, il cliente ne creerà uno per voi usando la WebsiteId dagli appsettings.json.
public UmamiPayload GetPayload(string? url = null, UmamiEventData? data = null)
{
var httpContext = httpContextAccessor.HttpContext;
var request = httpContext?.Request;
var payload = new UmamiPayload
{
Website = settings.WebsiteId,
Data = data,
Url = url ?? httpContext?.Request?.Path.Value,
IpAddress = httpContext?.Connection?.RemoteIpAddress?.ToString(),
UserAgent = request?.Headers["User-Agent"].FirstOrDefault(),
Referrer = request?.Headers["Referer"].FirstOrDefault(),
Hostname = request?.Host.Host,
};
return payload;
}
Potete vedere che questo si occupa di UmamiPayload L'oggetto con il WebsiteId dagli appsettings.json, Url, IpAddress, UserAgent, Referrer e Hostname da una parte, e dall'altra. HttpContext.
NOTA: EventType può essere solo M SK1event" o "identifyMSC4 secondo l'API di UmamiMNK5
Conclusione
Perciò's è che ora potete installare Umami.Net da Nuget e usarlo nella vostra ASP .NET Core applicationM SK3 Spero di trovarlo utileMSC4 IMST5Continuerò a tweaking e ad aggiungere test nei futuri post.