NOTE: Apart from
(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
//Less than a minute
الآن لدي عميل أومامي، أريد أن أحزمه وأجعله متاحاً كحزمة نيوغيت. هذه عملية بسيطة جداً ولكن هناك بعض الأشياء التي يجب أن ندركها.
[رابعاً -
قررت أن أنسخ خالد خالد و استخدم الحزمة الممتازة لنسخ حزمتي النوغيت هذه الحزمة البسيطة التي تستخدم شارة النسخة المشتقة لتحديد رقم الإصدارة.
لأستخدمه قمت ببساطة بإضافة التالي إلى 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 }}
هذا بسيط جداً، اضيف 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 ووصف للحزمة.
يُستَخدَمَ فيما يلي:
هذا هو العميل الأساسي لتعقب 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);
وهذا من شأنه أن يضيف عميل أومامي إلى مجموعة الخدمات.
يمكنك بعد ذلك استخدام العميل بطريقتين:
UmamiClient
في صفّك واتّصل بـ Track
طريقة: // Inject UmamiClient umamiClient
await umamiClient.Track("Search", new UmamiEventData(){{"query", encodedQuery}});
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 الأساسي الخاص بك. آمل أن تجده مفيداً سأستمر في التعديل و إضافة الإختبارات في المواقع المستقبلية