添加 Umami 跟踪客户端 Giget 软件包 (中文 (Chinese Simplified))

添加 Umami 跟踪客户端 Giget 软件包

Comments

NOTE: Apart from English (and even then it's questionable, I'm Scottish). These are machine translated in languages I don't read. If they're terrible please contact me.
You can see how this translation was done in this article.

Friday, 13 September 2024

//

3 minute read

一. 导言 导言 导言 导言 导言 导言 一,导言 导言 导言 导言 导言 导言

现在我有了Umami客户端;我需要把它包装起来,并把它作为Nuget软件包提供。 这是一个相当简单的过程,但有一些事情需要注意。

[技选委

创建“ 发明” 软件包

版本

我决定复印 哈立德( Khalid) 并使用优异的薄荷包来版本我的 Nuget 软件包 。 这是一个简单的软件包, 使用 git 版本标签来确定版本编号 。

为了使用它,我简单地补充了以下内容: Umami.Net.csproj 文件 :

    <PropertyGroup>
    <MinVerTagPrefix>v</MinVerTagPrefix>
</PropertyGroup>

这样我就可以用 v 软件包的版本将正确无误。

 git tag v0.0.8       
 git push origin v0.0.8

将按下此标签, 然后我将设置一个 GitHub Action 设置, 等待标签, 并构建 Niget 软件包 。

构建 Giget 软件包

我有一个GitHub Action, 建造了Nuget软件包, 并把它推到 GitHub 软件包仓库。 这是一个简单的程序, 使用 dotnet pack 命令,然后构建软件包,然后 dotnet nuget push 命令将它推到 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 }}

正在添加 readme 和图标

这很简单,我加一个 README.md 到工程根和工程根的文件 icon.png 到工程根的文件。 缩略 README.md 用于描述软件包和 icon.png 软件包使用文件作为图标。

    <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>

在我的README. md 文件中,我有一个链接 与GitHub 仓库 和对软件包的描述。

转录如下:

Umami. Net

这是Umami追踪API的.NET核心客户端。 以Umami节点客户为基础 可以找到 在这里.

你可以看到如何将乌玛美设成一个船舱集装箱 在这里. 你可以在我的博客上阅读更多关于它创建的细节 在这里.

要使用此客户端, 您需要以下 apings.json 配置 :

{
  "Analytics":{
    "UmamiPath" : "https://umamilocal.mostlylucid.net",
    "WebsiteId" : "32c2aa31-b1ac-44c0-b8f3-ff1f50403bee"
  },
}

何处处 UmamiPath 您的 Umami 实例和路径 WebsiteId 是您想要跟踪的网站的 ID 。

要使用客户端, 您需要在客户端中添加以下内容 Program.cs:

using Umami.Net;

services.SetupUmamiClient(builder.Configuration);

这将在服务收藏中增加Umami客户端。

然后,您可以用两种方式使用客户端:

  1. 注射 UmamiClient 进入班级,然后拨打 Track 方法 :
 // Inject UmamiClient umamiClient
 await umamiClient.Track("Search", new UmamiEventData(){{"query", encodedQuery}});
  1. 使用 UmamiBackgroundSender 来跟踪背景中的事件(此使用 IHostedService 发送背景中的事件:
 // Inject UmamiBackgroundSender umamiBackgroundSender
await umamiBackgroundSender.Track("Search", new UmamiEventData(){{"query", encodedQuery}});

客户将把事件发送至Umami API, 并存储该事件 。

缩略 UmamiEventData 是一个关键值对的字典,作为事件数据发送到 Umami API。

此外,还可以使用更低水平的方法将事件发送至Umami API。

两者 UmamiClientUmamiBackgroundSender 您可以调用以下方法。



 Send(UmamiPayload? payload = null, UmamiEventData? eventData = null,
        string eventType = "event")

如果你不通过 UmamiPayload 对象,客户端会为使用 WebsiteId 照片来源: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;
    }

你可以看到,这个弹出 UmamiPayload 对象 WebsiteId ......................... Url, IpAddress, UserAgent, ReferrerHostname 调自自 HttpContext.

注意: 事件类型Type 只能按照 Umami API 的“ 活动” 或“ 身份识别 ” 进行 。

在结论结论中

所以,这就是你现在可以安装 Ummi. Net 从Nuget。 并将其用于 ASP. NET 核心应用程序。 我希望你觉得这很有用 我将继续调整和添加测试 在未来的岗位上。

logo

©2024 Scott Galloway