src/Api/OpenTelemetryExtensions.cs
+6
-0
diff --git a/src/Api/OpenTelemetryExtensions.cs b/src/Api/OpenTelemetryExtensions.cs
index 51bc509..a2b55f4 100644
@@ -4,7 +4,10 @@ using Microsoft.Extensions.Logging;
using OpenTelemetry;
using OpenTelemetry.Metrics;
using OpenTelemetry.Trace;
using Slopper.Domain;
using Slopper.Infrastructure.Ffmpeg;
using Slopper.Infrastructure.TikTok;
using Slopper.Infrastructure.YouTube;
namespace Slopper.Api;
@@ -40,6 +43,9 @@ public static class OpenTelemetryExtensions
.AddAspNetCoreInstrumentation()
.AddFfmpegInstrumentation()
.AddQuartzInstrumentation()
.AddDomainInstrumentation()
.AddYouTubeInstrumentation()
.AddTikTokInstrumentation()
.AddSource("Experimental.Microsoft.Extensions.AI");
});
src/Api/packages.lock.json
+5
-2
diff --git a/src/Api/packages.lock.json b/src/Api/packages.lock.json
index 188064d..968bf4a 100644
@@ -572,7 +572,8 @@
"Microsoft.Extensions.AI.Abstractions": "[10.5.2, )",
"Microsoft.Extensions.Logging.Abstractions": "[11.0.0-preview.3.26207.106, )",
"Microsoft.Extensions.Options": "[11.0.0-preview.3.26207.106, )",
"Microsoft.Extensions.Options.ConfigurationExtensions": "[11.0.0-preview.3.26207.106, )"
"Microsoft.Extensions.Options.ConfigurationExtensions": "[11.0.0-preview.3.26207.106, )",
"OpenTelemetry": "[1.15.3, )"
}
},
"Slopper.Infrastructure.Ai": {
@@ -604,11 +605,12 @@
"SubtitlesParserV2": "[2.4.0, )"
}
},
"slopper.infrastructure.tiktok": {
"Slopper.Infrastructure.TikTok": {
"type": "Project",
"dependencies": {
"Microsoft.Extensions.Http": "[11.0.0-preview.3.26207.106, )",
"Microsoft.Extensions.Options": "[11.0.0-preview.3.26207.106, )",
"OpenTelemetry": "[1.15.3, )",
"Slopper.Domain": "[1.0.0, )"
}
},
@@ -616,6 +618,7 @@
"type": "Project",
"dependencies": {
"Google.Apis.YouTube.v3": "[1.74.0.4137, )",
"OpenTelemetry": "[1.15.3, )",
"Slopper.Domain": "[1.0.0, )"
}
},
src/Cli/packages.lock.json
+3
-3
diff --git a/src/Cli/packages.lock.json b/src/Cli/packages.lock.json
index dcc7681..6a7f18b 100644
@@ -503,7 +503,8 @@
"Microsoft.Extensions.AI.Abstractions": "[10.5.2, )",
"Microsoft.Extensions.Logging.Abstractions": "[11.0.0-preview.3.26207.106, )",
"Microsoft.Extensions.Options": "[11.0.0-preview.3.26207.106, )",
"Microsoft.Extensions.Options.ConfigurationExtensions": "[11.0.0-preview.3.26207.106, )"
"Microsoft.Extensions.Options.ConfigurationExtensions": "[11.0.0-preview.3.26207.106, )",
"OpenTelemetry": "[1.15.3, )"
}
},
"Slopper.Infrastructure.Ai": {
@@ -539,8 +540,7 @@
"type": "Project",
"dependencies": {
"Google.Apis.YouTube.v3": "[1.74.0.4137, )",
"Microsoft.Extensions.Options": "[11.0.0-preview.3.26207.106, )",
"Microsoft.Extensions.Options.ConfigurationExtensions": "[11.0.0-preview.3.26207.106, )",
"OpenTelemetry": "[1.15.3, )",
"Slopper.Domain": "[1.0.0, )"
}
},
src/Domain/Domain.csproj
+1
-0
diff --git a/src/Domain/Domain.csproj b/src/Domain/Domain.csproj
index 46513c8..ad598d5 100644
@@ -8,5 +8,6 @@
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" />
<PackageReference Include="Microsoft.Extensions.Options" />
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" />
<PackageReference Include="OpenTelemetry" />
</ItemGroup>
</Project>
src/Domain/OpenTelemetryExtensions.cs
+11
-0
diff --git a/src/Domain/OpenTelemetryExtensions.cs b/src/Domain/OpenTelemetryExtensions.cs
new file mode 100644
index 0000000..e6d41fe
@@ -0,0 +1,11 @@
using OpenTelemetry.Trace;
namespace Slopper.Domain;
public static class OpenTelemetryExtensions
{
extension(TracerProviderBuilder tracing)
{
public TracerProviderBuilder AddDomainInstrumentation() => tracing.AddSource(Tracing.DomainActivity.Name);
}
}
src/Domain/Tracing.cs
+11
-0
diff --git a/src/Domain/Tracing.cs b/src/Domain/Tracing.cs
new file mode 100644
index 0000000..80989ff
@@ -0,0 +1,11 @@
using System.Diagnostics;
namespace Slopper.Domain;
internal static class Tracing
{
internal static ActivitySource DomainActivity { get; } = new("Slopper.Domain");
public static Activity? StartUpload(string platform) =>
DomainActivity.StartActivity("Upload", ActivityKind.Internal)?.SetTag("Platform", platform);
}
src/Domain/Uploader.cs
+2
-0
diff --git a/src/Domain/Uploader.cs b/src/Domain/Uploader.cs
index 16a8530..f565a48 100644
@@ -17,6 +17,8 @@ public sealed class Uploader(
{
public async Task Upload(string platform, CancellationToken cancellationToken)
{
using var activity = Tracing.StartUpload(platform);
var uploader = serviceProvider.GetRequiredKeyedService<IUploader>(platform);
var publishAt = timeProvider.GetUtcNow();
src/Domain/packages.lock.json
+67
-0
diff --git a/src/Domain/packages.lock.json b/src/Domain/packages.lock.json
index a63ab9a..1a4b799 100644
@@ -46,6 +46,17 @@
"Microsoft.Extensions.Primitives": "11.0.0-preview.3.26207.106"
}
},
"OpenTelemetry": {
"type": "Direct",
"requested": "[1.15.3, )",
"resolved": "1.15.3",
"contentHash": "N0i6WjPoHPbZyms1ugbDIFAJFuGlpeExJMU/+XSL0lQRUkg/D0utFkDoLXf8Z1km5B+xVZ2GyMXXiX8qdeNmPg==",
"dependencies": {
"Microsoft.Extensions.Diagnostics.Abstractions": "10.0.0",
"Microsoft.Extensions.Logging.Configuration": "10.0.0",
"OpenTelemetry.Api.ProviderBuilderExtensions": "1.15.3"
}
},
"Microsoft.Extensions.Configuration": {
"type": "Transitive",
"resolved": "11.0.0-preview.3.26207.106",
@@ -72,15 +83,71 @@
"Microsoft.Extensions.Configuration.Abstractions": "11.0.0-preview.3.26207.106"
}
},
"Microsoft.Extensions.DependencyInjection": {
"type": "Transitive",
"resolved": "10.0.0",
"contentHash": "f0RBabswJq+gRu5a+hWIobrLWiUYPKMhCD9WO3sYBAdSy3FFH14LMvLVFZc2kPSCimBLxSuitUhsd6tb0TAY6A==",
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0"
}
},
"Microsoft.Extensions.DependencyInjection.Abstractions": {
"type": "Transitive",
"resolved": "11.0.0-preview.3.26207.106",
"contentHash": "+gJnv1/kfXLXPv21R3iluhKqfXdf2zPWUaHBiSvlJurThv2D5HRUfU5z5SpmBII4I0JSpuprX9DlHrKz/1wCXA=="
},
"Microsoft.Extensions.Diagnostics.Abstractions": {
"type": "Transitive",
"resolved": "10.0.0",
"contentHash": "SfK89ytD61S7DgzorFljSkUeluC1ncn6dtZgwc0ot39f/BEYWBl5jpgvodxduoYAs1d9HG8faCDRZxE95UMo2A==",
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0",
"Microsoft.Extensions.Options": "10.0.0"
}
},
"Microsoft.Extensions.Logging": {
"type": "Transitive",
"resolved": "10.0.0",
"contentHash": "BStFkd5CcnEtarlcgYDBcFzGYCuuNMzPs02wN3WBsOFoYIEmYoUdAiU+au6opzoqfTYJsMTW00AeqDdnXH2CvA==",
"dependencies": {
"Microsoft.Extensions.DependencyInjection": "10.0.0",
"Microsoft.Extensions.Logging.Abstractions": "10.0.0",
"Microsoft.Extensions.Options": "10.0.0"
}
},
"Microsoft.Extensions.Logging.Configuration": {
"type": "Transitive",
"resolved": "10.0.0",
"contentHash": "j8zcwhS6bYB6FEfaY3nYSgHdpiL2T+/V3xjpHtslVAegyI1JUbB9yAt/BFdvZdsNbY0Udm4xFtvfT/hUwcOOOg==",
"dependencies": {
"Microsoft.Extensions.Configuration": "10.0.0",
"Microsoft.Extensions.Configuration.Abstractions": "10.0.0",
"Microsoft.Extensions.Configuration.Binder": "10.0.0",
"Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0",
"Microsoft.Extensions.Logging": "10.0.0",
"Microsoft.Extensions.Logging.Abstractions": "10.0.0",
"Microsoft.Extensions.Options": "10.0.0",
"Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.0"
}
},
"Microsoft.Extensions.Primitives": {
"type": "Transitive",
"resolved": "11.0.0-preview.3.26207.106",
"contentHash": "IBOlwyX13ax6/fXA7AoZFswKFytta9TExBv3/8qemMJGBoDXYlQEcw4WerHQCvmerJ5uP2o8bjIAvxcNdTZVLQ=="
},
"OpenTelemetry.Api": {
"type": "Transitive",
"resolved": "1.15.3",
"contentHash": "fX+fkCysfPut+qCcT3bKqyX4QN9Saf4CgX8HLOHywEVD+Xr7sULtfuypITpoDysjx8R59dn/3mWhgimMH8cm/g=="
},
"OpenTelemetry.Api.ProviderBuilderExtensions": {
"type": "Transitive",
"resolved": "1.15.3",
"contentHash": "SYn0lqYDwLMWhv/zlNGsQcl2yX++yTumanX46bmOZE/ZDOd1WjPBO2kZaZgKLEZTZk48pavIFGJ6vOvxXgWVFQ==",
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0",
"OpenTelemetry.Api": "1.15.3"
}
}
},
"net11.0/linux-arm64": {},
src/Infrastructure/Ai/packages.lock.json
+42
-1
diff --git a/src/Infrastructure/Ai/packages.lock.json b/src/Infrastructure/Ai/packages.lock.json
index 17984d4..5711623 100644
@@ -120,11 +120,40 @@
"Microsoft.Extensions.Options": "11.0.0-preview.3.26207.106"
}
},
"Microsoft.Extensions.Logging.Configuration": {
"type": "Transitive",
"resolved": "10.0.0",
"contentHash": "j8zcwhS6bYB6FEfaY3nYSgHdpiL2T+/V3xjpHtslVAegyI1JUbB9yAt/BFdvZdsNbY0Udm4xFtvfT/hUwcOOOg==",
"dependencies": {
"Microsoft.Extensions.Configuration": "10.0.0",
"Microsoft.Extensions.Configuration.Abstractions": "10.0.0",
"Microsoft.Extensions.Configuration.Binder": "10.0.0",
"Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0",
"Microsoft.Extensions.Logging": "10.0.0",
"Microsoft.Extensions.Logging.Abstractions": "10.0.0",
"Microsoft.Extensions.Options": "10.0.0",
"Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.0"
}
},
"Microsoft.Extensions.Primitives": {
"type": "Transitive",
"resolved": "11.0.0-preview.3.26207.106",
"contentHash": "IBOlwyX13ax6/fXA7AoZFswKFytta9TExBv3/8qemMJGBoDXYlQEcw4WerHQCvmerJ5uP2o8bjIAvxcNdTZVLQ=="
},
"OpenTelemetry.Api": {
"type": "Transitive",
"resolved": "1.15.3",
"contentHash": "fX+fkCysfPut+qCcT3bKqyX4QN9Saf4CgX8HLOHywEVD+Xr7sULtfuypITpoDysjx8R59dn/3mWhgimMH8cm/g=="
},
"OpenTelemetry.Api.ProviderBuilderExtensions": {
"type": "Transitive",
"resolved": "1.15.3",
"contentHash": "SYn0lqYDwLMWhv/zlNGsQcl2yX++yTumanX46bmOZE/ZDOd1WjPBO2kZaZgKLEZTZk48pavIFGJ6vOvxXgWVFQ==",
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0",
"OpenTelemetry.Api": "1.15.3"
}
},
"System.Numerics.Tensors": {
"type": "Transitive",
"resolved": "10.0.6",
@@ -136,7 +165,8 @@
"Microsoft.Extensions.AI.Abstractions": "[10.5.2, )",
"Microsoft.Extensions.Logging.Abstractions": "[11.0.0-preview.3.26207.106, )",
"Microsoft.Extensions.Options": "[11.0.0-preview.3.26207.106, )",
"Microsoft.Extensions.Options.ConfigurationExtensions": "[11.0.0-preview.3.26207.106, )"
"Microsoft.Extensions.Options.ConfigurationExtensions": "[11.0.0-preview.3.26207.106, )",
"OpenTelemetry": "[1.15.3, )"
}
},
"Microsoft.Extensions.AI.Abstractions": {
@@ -176,6 +206,17 @@
"Microsoft.Extensions.Options": "11.0.0-preview.3.26207.106",
"Microsoft.Extensions.Primitives": "11.0.0-preview.3.26207.106"
}
},
"OpenTelemetry": {
"type": "CentralTransitive",
"requested": "[1.15.3, )",
"resolved": "1.15.3",
"contentHash": "N0i6WjPoHPbZyms1ugbDIFAJFuGlpeExJMU/+XSL0lQRUkg/D0utFkDoLXf8Z1km5B+xVZ2GyMXXiX8qdeNmPg==",
"dependencies": {
"Microsoft.Extensions.Diagnostics.Abstractions": "10.0.0",
"Microsoft.Extensions.Logging.Configuration": "10.0.0",
"OpenTelemetry.Api.ProviderBuilderExtensions": "1.15.3"
}
}
},
"net11.0/linux-arm64": {},
src/Infrastructure/Database/packages.lock.json
+42
-1
diff --git a/src/Infrastructure/Database/packages.lock.json b/src/Infrastructure/Database/packages.lock.json
index 6f75e42..43da99d 100644
@@ -274,6 +274,21 @@
"Microsoft.Extensions.Options": "10.0.7"
}
},
"Microsoft.Extensions.Logging.Configuration": {
"type": "Transitive",
"resolved": "10.0.0",
"contentHash": "j8zcwhS6bYB6FEfaY3nYSgHdpiL2T+/V3xjpHtslVAegyI1JUbB9yAt/BFdvZdsNbY0Udm4xFtvfT/hUwcOOOg==",
"dependencies": {
"Microsoft.Extensions.Configuration": "10.0.0",
"Microsoft.Extensions.Configuration.Abstractions": "10.0.0",
"Microsoft.Extensions.Configuration.Binder": "10.0.0",
"Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0",
"Microsoft.Extensions.Logging": "10.0.0",
"Microsoft.Extensions.Logging.Abstractions": "10.0.0",
"Microsoft.Extensions.Options": "10.0.0",
"Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.0"
}
},
"Microsoft.Extensions.Primitives": {
"type": "Transitive",
"resolved": "11.0.0-preview.3.26207.106",
@@ -297,6 +312,20 @@
"resolved": "13.0.3",
"contentHash": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ=="
},
"OpenTelemetry.Api": {
"type": "Transitive",
"resolved": "1.15.3",
"contentHash": "fX+fkCysfPut+qCcT3bKqyX4QN9Saf4CgX8HLOHywEVD+Xr7sULtfuypITpoDysjx8R59dn/3mWhgimMH8cm/g=="
},
"OpenTelemetry.Api.ProviderBuilderExtensions": {
"type": "Transitive",
"resolved": "1.15.3",
"contentHash": "SYn0lqYDwLMWhv/zlNGsQcl2yX++yTumanX46bmOZE/ZDOd1WjPBO2kZaZgKLEZTZk48pavIFGJ6vOvxXgWVFQ==",
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0",
"OpenTelemetry.Api": "1.15.3"
}
},
"Polly": {
"type": "Transitive",
"resolved": "8.6.5",
@@ -396,7 +425,8 @@
"Microsoft.Extensions.AI.Abstractions": "[10.5.2, )",
"Microsoft.Extensions.Logging.Abstractions": "[11.0.0-preview.3.26207.106, )",
"Microsoft.Extensions.Options": "[11.0.0-preview.3.26207.106, )",
"Microsoft.Extensions.Options.ConfigurationExtensions": "[11.0.0-preview.3.26207.106, )"
"Microsoft.Extensions.Options.ConfigurationExtensions": "[11.0.0-preview.3.26207.106, )",
"OpenTelemetry": "[1.15.3, )"
}
},
"Microsoft.Extensions.AI.Abstractions": {
@@ -449,6 +479,17 @@
"Microsoft.Extensions.Options": "11.0.0-preview.3.26207.106",
"Microsoft.Extensions.Primitives": "11.0.0-preview.3.26207.106"
}
},
"OpenTelemetry": {
"type": "CentralTransitive",
"requested": "[1.15.3, )",
"resolved": "1.15.3",
"contentHash": "N0i6WjPoHPbZyms1ugbDIFAJFuGlpeExJMU/+XSL0lQRUkg/D0utFkDoLXf8Z1km5B+xVZ2GyMXXiX8qdeNmPg==",
"dependencies": {
"Microsoft.Extensions.Diagnostics.Abstractions": "10.0.0",
"Microsoft.Extensions.Logging.Configuration": "10.0.0",
"OpenTelemetry.Api.ProviderBuilderExtensions": "1.15.3"
}
}
},
"net11.0/linux-arm64": {
src/Infrastructure/Ffmpeg/packages.lock.json
+2
-1
diff --git a/src/Infrastructure/Ffmpeg/packages.lock.json b/src/Infrastructure/Ffmpeg/packages.lock.json
index c4ec2ef..00e5a63 100644
@@ -170,7 +170,8 @@
"Microsoft.Extensions.AI.Abstractions": "[10.5.2, )",
"Microsoft.Extensions.Logging.Abstractions": "[11.0.0-preview.3.26207.106, )",
"Microsoft.Extensions.Options": "[11.0.0-preview.3.26207.106, )",
"Microsoft.Extensions.Options.ConfigurationExtensions": "[11.0.0-preview.3.26207.106, )"
"Microsoft.Extensions.Options.ConfigurationExtensions": "[11.0.0-preview.3.26207.106, )",
"OpenTelemetry": "[1.15.3, )"
}
},
"Microsoft.Extensions.AI.Abstractions": {
src/Infrastructure/TikTok/OpenTelemetryExtensions.cs
+11
-0
diff --git a/src/Infrastructure/TikTok/OpenTelemetryExtensions.cs b/src/Infrastructure/TikTok/OpenTelemetryExtensions.cs
new file mode 100644
index 0000000..6803e6f
@@ -0,0 +1,11 @@
using OpenTelemetry.Trace;
namespace Slopper.Infrastructure.TikTok;
public static class OpenTelemetryExtensions
{
extension(TracerProviderBuilder tracing)
{
public TracerProviderBuilder AddTikTokInstrumentation() => tracing.AddSource(Tracing.TikTokActivity.Name);
}
}
src/Infrastructure/TikTok/TikTok.csproj
+1
-0
diff --git a/src/Infrastructure/TikTok/TikTok.csproj b/src/Infrastructure/TikTok/TikTok.csproj
index cf481c1..fe16205 100644
@@ -9,5 +9,6 @@
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Http" />
<PackageReference Include="Microsoft.Extensions.Options" />
<PackageReference Include="OpenTelemetry" />
</ItemGroup>
</Project>
src/Infrastructure/TikTok/TikTokUploader.cs
+2
-0
diff --git a/src/Infrastructure/TikTok/TikTokUploader.cs b/src/Infrastructure/TikTok/TikTokUploader.cs
index 6a7f56f..7bb93a5 100644
@@ -25,6 +25,8 @@ internal sealed class TikTokUploader(
public async Task<Upload> Upload(Clip clip, DateTimeOffset publishAt, CancellationToken cancellationToken)
{
using var activity = Tracing.StartUpload(clip.Id);
var token = accessTokenProvider.AccessToken;
var client = httpClientFactory.CreateClient("TikTok");
src/Infrastructure/TikTok/Tracing.cs
+12
-0
diff --git a/src/Infrastructure/TikTok/Tracing.cs b/src/Infrastructure/TikTok/Tracing.cs
new file mode 100644
index 0000000..dd19894
@@ -0,0 +1,12 @@
using System;
using System.Diagnostics;
namespace Slopper.Infrastructure.TikTok;
internal static class Tracing
{
internal static ActivitySource TikTokActivity { get; } = new("Slopper.Infrastructure.TikTok");
public static Activity? StartUpload(Guid clipId) =>
TikTokActivity.StartActivity("Upload", ActivityKind.Internal)?.SetTag("ClipId", clipId);
}
src/Infrastructure/TikTok/packages.lock.json
+42
-1
diff --git a/src/Infrastructure/TikTok/packages.lock.json b/src/Infrastructure/TikTok/packages.lock.json
index 0e918ce..08af806 100644
@@ -32,6 +32,17 @@
"Microsoft.Extensions.Primitives": "11.0.0-preview.3.26207.106"
}
},
"OpenTelemetry": {
"type": "Direct",
"requested": "[1.15.3, )",
"resolved": "1.15.3",
"contentHash": "N0i6WjPoHPbZyms1ugbDIFAJFuGlpeExJMU/+XSL0lQRUkg/D0utFkDoLXf8Z1km5B+xVZ2GyMXXiX8qdeNmPg==",
"dependencies": {
"Microsoft.Extensions.Diagnostics.Abstractions": "10.0.0",
"Microsoft.Extensions.Logging.Configuration": "10.0.0",
"OpenTelemetry.Api.ProviderBuilderExtensions": "1.15.3"
}
},
"Microsoft.Extensions.Configuration": {
"type": "Transitive",
"resolved": "11.0.0-preview.3.26207.106",
@@ -100,18 +111,48 @@
"Microsoft.Extensions.Options": "11.0.0-preview.3.26207.106"
}
},
"Microsoft.Extensions.Logging.Configuration": {
"type": "Transitive",
"resolved": "10.0.0",
"contentHash": "j8zcwhS6bYB6FEfaY3nYSgHdpiL2T+/V3xjpHtslVAegyI1JUbB9yAt/BFdvZdsNbY0Udm4xFtvfT/hUwcOOOg==",
"dependencies": {
"Microsoft.Extensions.Configuration": "10.0.0",
"Microsoft.Extensions.Configuration.Abstractions": "10.0.0",
"Microsoft.Extensions.Configuration.Binder": "10.0.0",
"Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0",
"Microsoft.Extensions.Logging": "10.0.0",
"Microsoft.Extensions.Logging.Abstractions": "10.0.0",
"Microsoft.Extensions.Options": "10.0.0",
"Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.0"
}
},
"Microsoft.Extensions.Primitives": {
"type": "Transitive",
"resolved": "11.0.0-preview.3.26207.106",
"contentHash": "IBOlwyX13ax6/fXA7AoZFswKFytta9TExBv3/8qemMJGBoDXYlQEcw4WerHQCvmerJ5uP2o8bjIAvxcNdTZVLQ=="
},
"OpenTelemetry.Api": {
"type": "Transitive",
"resolved": "1.15.3",
"contentHash": "fX+fkCysfPut+qCcT3bKqyX4QN9Saf4CgX8HLOHywEVD+Xr7sULtfuypITpoDysjx8R59dn/3mWhgimMH8cm/g=="
},
"OpenTelemetry.Api.ProviderBuilderExtensions": {
"type": "Transitive",
"resolved": "1.15.3",
"contentHash": "SYn0lqYDwLMWhv/zlNGsQcl2yX++yTumanX46bmOZE/ZDOd1WjPBO2kZaZgKLEZTZk48pavIFGJ6vOvxXgWVFQ==",
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0",
"OpenTelemetry.Api": "1.15.3"
}
},
"Slopper.Domain": {
"type": "Project",
"dependencies": {
"Microsoft.Extensions.AI.Abstractions": "[10.5.2, )",
"Microsoft.Extensions.Logging.Abstractions": "[11.0.0-preview.3.26207.106, )",
"Microsoft.Extensions.Options": "[11.0.0-preview.3.26207.106, )",
"Microsoft.Extensions.Options.ConfigurationExtensions": "[11.0.0-preview.3.26207.106, )"
"Microsoft.Extensions.Options.ConfigurationExtensions": "[11.0.0-preview.3.26207.106, )",
"OpenTelemetry": "[1.15.3, )"
}
},
"Microsoft.Extensions.AI.Abstractions": {
src/Infrastructure/YouTube/OpenTelemetryExtensions.cs
+11
-0
diff --git a/src/Infrastructure/YouTube/OpenTelemetryExtensions.cs b/src/Infrastructure/YouTube/OpenTelemetryExtensions.cs
new file mode 100644
index 0000000..01fcc30
@@ -0,0 +1,11 @@
using OpenTelemetry.Trace;
namespace Slopper.Infrastructure.YouTube;
public static class OpenTelemetryExtensions
{
extension(TracerProviderBuilder tracing)
{
public TracerProviderBuilder AddYouTubeInstrumentation() => tracing.AddSource(Tracing.YouTubeActivity.Name);
}
}
src/Infrastructure/YouTube/Tracing.cs
+12
-0
diff --git a/src/Infrastructure/YouTube/Tracing.cs b/src/Infrastructure/YouTube/Tracing.cs
new file mode 100644
index 0000000..68a395d
@@ -0,0 +1,12 @@
using System;
using System.Diagnostics;
namespace Slopper.Infrastructure.YouTube;
internal static class Tracing
{
internal static ActivitySource YouTubeActivity { get; } = new("Slopper.Infrastructure.YouTube");
public static Activity? StartUpload(Guid clipId) =>
YouTubeActivity.StartActivity("Upload", ActivityKind.Internal)?.SetTag("ClipId", clipId);
}
src/Infrastructure/YouTube/YouTube.csproj
+1
-0
diff --git a/src/Infrastructure/YouTube/YouTube.csproj b/src/Infrastructure/YouTube/YouTube.csproj
index 6b776ab..49d3ea5 100644
@@ -8,5 +8,6 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="Google.Apis.YouTube.v3" />
<PackageReference Include="OpenTelemetry" />
</ItemGroup>
</Project>
src/Infrastructure/YouTube/YouTubeUploader.cs
+2
-0
diff --git a/src/Infrastructure/YouTube/YouTubeUploader.cs b/src/Infrastructure/YouTube/YouTubeUploader.cs
index 575fa7b..df55c9d 100644
@@ -14,6 +14,8 @@ internal sealed class YouTubeUploader(TimeProvider timeProvider, YouTubeService
{
public async Task<Upload> Upload(Clip clip, DateTimeOffset publishAt, CancellationToken cancellationToken)
{
using var activity = Tracing.StartUpload(clip.Id);
var video = new Video()
{
Snippet = new()
src/Infrastructure/YouTube/packages.lock.json
+69
-1
diff --git a/src/Infrastructure/YouTube/packages.lock.json b/src/Infrastructure/YouTube/packages.lock.json
index 3a76423..bc00c96 100644
@@ -18,6 +18,17 @@
"Google.Apis.Auth": "1.74.0"
}
},
"OpenTelemetry": {
"type": "Direct",
"requested": "[1.15.3, )",
"resolved": "1.15.3",
"contentHash": "N0i6WjPoHPbZyms1ugbDIFAJFuGlpeExJMU/+XSL0lQRUkg/D0utFkDoLXf8Z1km5B+xVZ2GyMXXiX8qdeNmPg==",
"dependencies": {
"Microsoft.Extensions.Diagnostics.Abstractions": "10.0.0",
"Microsoft.Extensions.Logging.Configuration": "10.0.0",
"OpenTelemetry.Api.ProviderBuilderExtensions": "1.15.3"
}
},
"Google.Apis": {
"type": "Transitive",
"resolved": "1.74.0",
@@ -70,11 +81,53 @@
"Microsoft.Extensions.Configuration.Abstractions": "11.0.0-preview.3.26207.106"
}
},
"Microsoft.Extensions.DependencyInjection": {
"type": "Transitive",
"resolved": "10.0.0",
"contentHash": "f0RBabswJq+gRu5a+hWIobrLWiUYPKMhCD9WO3sYBAdSy3FFH14LMvLVFZc2kPSCimBLxSuitUhsd6tb0TAY6A==",
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0"
}
},
"Microsoft.Extensions.DependencyInjection.Abstractions": {
"type": "Transitive",
"resolved": "11.0.0-preview.3.26207.106",
"contentHash": "+gJnv1/kfXLXPv21R3iluhKqfXdf2zPWUaHBiSvlJurThv2D5HRUfU5z5SpmBII4I0JSpuprX9DlHrKz/1wCXA=="
},
"Microsoft.Extensions.Diagnostics.Abstractions": {
"type": "Transitive",
"resolved": "10.0.0",
"contentHash": "SfK89ytD61S7DgzorFljSkUeluC1ncn6dtZgwc0ot39f/BEYWBl5jpgvodxduoYAs1d9HG8faCDRZxE95UMo2A==",
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0",
"Microsoft.Extensions.Options": "10.0.0"
}
},
"Microsoft.Extensions.Logging": {
"type": "Transitive",
"resolved": "10.0.0",
"contentHash": "BStFkd5CcnEtarlcgYDBcFzGYCuuNMzPs02wN3WBsOFoYIEmYoUdAiU+au6opzoqfTYJsMTW00AeqDdnXH2CvA==",
"dependencies": {
"Microsoft.Extensions.DependencyInjection": "10.0.0",
"Microsoft.Extensions.Logging.Abstractions": "10.0.0",
"Microsoft.Extensions.Options": "10.0.0"
}
},
"Microsoft.Extensions.Logging.Configuration": {
"type": "Transitive",
"resolved": "10.0.0",
"contentHash": "j8zcwhS6bYB6FEfaY3nYSgHdpiL2T+/V3xjpHtslVAegyI1JUbB9yAt/BFdvZdsNbY0Udm4xFtvfT/hUwcOOOg==",
"dependencies": {
"Microsoft.Extensions.Configuration": "10.0.0",
"Microsoft.Extensions.Configuration.Abstractions": "10.0.0",
"Microsoft.Extensions.Configuration.Binder": "10.0.0",
"Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0",
"Microsoft.Extensions.Logging": "10.0.0",
"Microsoft.Extensions.Logging.Abstractions": "10.0.0",
"Microsoft.Extensions.Options": "10.0.0",
"Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.0"
}
},
"Microsoft.Extensions.Primitives": {
"type": "Transitive",
"resolved": "11.0.0-preview.3.26207.106",
@@ -85,6 +138,20 @@
"resolved": "13.0.4",
"contentHash": "pdgNNMai3zv51W5aq268sujXUyx7SNdE2bj1wZcWjAQrKMFZV260lbqYop1d2GM67JI1huLRwxo9ZqnfF/lC6A=="
},
"OpenTelemetry.Api": {
"type": "Transitive",
"resolved": "1.15.3",
"contentHash": "fX+fkCysfPut+qCcT3bKqyX4QN9Saf4CgX8HLOHywEVD+Xr7sULtfuypITpoDysjx8R59dn/3mWhgimMH8cm/g=="
},
"OpenTelemetry.Api.ProviderBuilderExtensions": {
"type": "Transitive",
"resolved": "1.15.3",
"contentHash": "SYn0lqYDwLMWhv/zlNGsQcl2yX++yTumanX46bmOZE/ZDOd1WjPBO2kZaZgKLEZTZk48pavIFGJ6vOvxXgWVFQ==",
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0",
"OpenTelemetry.Api": "1.15.3"
}
},
"System.CodeDom": {
"type": "Transitive",
"resolved": "7.0.0",
@@ -104,7 +171,8 @@
"Microsoft.Extensions.AI.Abstractions": "[10.5.2, )",
"Microsoft.Extensions.Logging.Abstractions": "[11.0.0-preview.3.26207.106, )",
"Microsoft.Extensions.Options": "[11.0.0-preview.3.26207.106, )",
"Microsoft.Extensions.Options.ConfigurationExtensions": "[11.0.0-preview.3.26207.106, )"
"Microsoft.Extensions.Options.ConfigurationExtensions": "[11.0.0-preview.3.26207.106, )",
"OpenTelemetry": "[1.15.3, )"
}
},
"Microsoft.Extensions.AI.Abstractions": {