Back to "جاري إضافة::::::::::::::::::::::: جاري جاري تنفيذ العميل حزمة"

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

ASP.NET Nuget Umami

جاري إضافة::::::::::::::::::::::: جاري جاري تنفيذ العميل حزمة

Friday, 13 September 2024

أولاً

الآن لدي عميل أومامي، أريد أن أحزمه وأجعله متاحاً كحزمة نيوغيت. هذه عملية بسيطة جداً ولكن هناك بعض الأشياء التي يجب أن ندركها.

[رابعاً -

يجري إنشاء الحزمة

تنفيذ

قررت أن أنسخ خالد خالد و استخدم الحزمة الممتازة لنسخ حزمتي النوغيت هذه الحزمة البسيطة التي تستخدم شارة النسخة المشتقة لتحديد رقم الإصدارة.

لأستخدمه قمت ببساطة بإضافة التالي إلى Umami.Net.csproj

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

بهذه الطريقة أستطيع أن ألصق نسختي مع v والحزمة سيتم نسخها بشكل صحيح.

 git tag v0.0.8       
 git push origin v0.0.8

سَيَدْفعُ هذه العلامةِ، ثمّ أنا عِنْدي a جيت Hub إجراء ضبط إلى إنتظار لـ بطاقة و بناء حزمة nuget.

مبنى الحزمة الجديدة

لدي إجراء جيت هوب الذي يبني حزمة النوتات ويدفعها إلى مستودع حزم جيت هوب. هذه عملية بسيطة تستخدم 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 }}

إضافة إ_ ad adme و الأيقون

هذا بسيط جداً، اضيف README.md إلى جذ الجذر من المشروع و a 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 ووصف للحزمة.

يُستَخدَمَ فيما يلي:

الشبكة الوطنية (Net)

هذا هو العميل الأساسي لتعقب Amamami API. إنه مبني على عميل "أمامامي ندي" الذي يمكن العثور عليه هنا هنا.

يمكنك أن ترى كيفية وضع أومامي على أنها حاوية docker هنا هنا. يمكنك قراءة المزيد من التفاصيل عن إنشاءه على مدونتي هنا هنا.

إلى استخدام هذا العميل تحتاج إلى التالي: states. jusn recondment:

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

المكان UmamiPath هو الطريق إلى أوماج الخاص بك و WebsiteId هو هوية الموقع الذي تريد تعقبه.

إلى استخدام العميل الذي تحتاج إلى إضافة التالي إلى Program.cs:

using Umami.Net;

services.SetupUmamiClient(builder.Configuration);

وهذا من شأنه أن يضيف عميل أومامي إلى مجموعة الخدمات.

يمكنك بعد ذلك استخدام العميل بطريقتين:

  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}});

وسيرسل العميل الحدث إلى Aomami API وسيتم تخزينه.

الـ UmamiEventData هو قاموس لأزواج القيمة الرئيسية التي سترسل إلى AMAmi API كبيانات الحدث.

وبالإضافة إلى ذلك، هناك أساليب أكثر انخفاضاً يمكن استخدامها لإرسال الأحداث إلى معهد أومامي.

على كل من UmamiClient وقد عقد مؤتمراً بشأن UmamiBackgroundSender بإمكانك الاتصال بالطريقة التالية.



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

إذا كنت لا تمر في UmamiPayload كائن العميل سينشئ واحد لك مستخدماً WebsiteId (من (التقديرات، (جيسون

    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, Referrer وقد عقد مؤتمراً بشأن Hostname باء - HttpContext.

ملاحظة: يمكن أن يكون الحدث "حدثاً" أو "تعريفياً" فقط وفقاً لمعيار AMAMAMI API.

في الإستنتاج

إذاً يمكنك الآن تثبيت إمامي. Net من Nuget واستخدامها في تطبيق ASP.Net الأساسي الخاص بك. آمل أن تجده مفيداً سأستمر في التعديل و إضافة الإختبارات في المواقع المستقبلية

logo

©2024 Scott Galloway