Remove duplicate Vimeo DI registration; use NimblePros.Vimeo AddVimeoServices and upgrade package

Đang mở Phù hợp với người mới
#1,486 1 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
2/5
Thời gian dự kiến
1-3 giờ
Mức phù hợp với người mới
72/100
Loại issue
Tái cấu trúc
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
csharp
Lĩnh vực
backend

Hướng nghiên cứu

Bắt đầu trong src/DevBetterWeb.Infrastructure/VimeoServiceCollectionExtensions.cs và Program.cs tại lời gọi AddInfrastructureServices(...) (~dòng 92) và AddVimeoServices (~dòng 148), cùng với factory Autofac đã bị chú thích ở dòng 45. Xóa tệp phần mở rộng cục bộ, bỏ lời gọi RegisterVimeoServicesDependencies và mọi tham số vimeoToken hiện không còn dùng, sau đó build và smoke test các luồng video quản trị (tải lên theo chunk, cập nhật mô tả, xóa, chi tiết, oEmbed). Hoàn tất nghĩa là chỉ có một đường đăng ký và không có client được đặt tên hay header trùng lặp; việc nâng cấp package lên 2.2.1 vẫn bị chặn bởi khóa API NuGet.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

Background

When Autofac was removed (#1358), devBetter added its own IServiceCollection version of RegisterVimeoServicesDependencies in src/DevBetterWeb.Infrastructure/VimeoServiceCollectionExtensions.cs. NimblePros.Vimeo already ships the equivalent registration, services.AddVimeoServices(token). It wasn't documented, which is how NimblePros/NimblePros.Vimeo#16 came about. NimblePros/NimblePros.Vimeo#19 adds the documentation and tests.

devBetter currently runs both registrations:

  • Program.cs:92 → AddInfrastructureServices(...) → the local services.RegisterVimeoServicesDependencies(vimeoToken)
  • Program.cs:148 → builder.Services.AddVimeoServices(vimeoSettings.Token)

Effects of the duplicate registration

  • Named HttpClients are configured twice. VimeoApi, VimeoOEmbed and VimeoTusApi are each registered by both methods, and both configure actions run. Default headers are added twice: Accept on every client, and Tus-Resumable on the Tus client.
  • Two ClientApiConfigurations singletons. The last one registered wins, which is the one from AddVimeoServices. The local configuration (default JSON settings, token on the Tus client) is effectively dead code.
  • The tus services are registered twice. ISleepService, IUploadVideoSessionService and IUploadVideoTusService are each registered twice with the same implementation. This is harmless, but it's noise.
  • AuthHeaderHandler in VimeoServiceCollectionExtensions.cs is never used. The bearer token is actually added by AddVimeoServices, on the VimeoApi client only.

AddVimeoServices on its own registers everything devBetter needs:

  • every Vimeo service, such as GetVideoService, GetOEmbedVideoService and UploadVideoChunkService;
  • the NimblePros.ApiClient HTTP services;
  • the three named clients, with the token attached to VimeoApi;
  • the tus services and logging.

Tasks

  • Delete src/DevBetterWeb.Infrastructure/VimeoServiceCollectionExtensions.cs, including the unused AuthHeaderHandler.
  • Remove services.RegisterVimeoServicesDependencies(vimeoToken); from AddInfrastructureServices, along with the vimeoToken parameter if nothing else uses it. Keep AddVimeoServices(vimeoSettings.Token) in Program.cs.
  • Remove the commented-out AutofacServiceProviderFactory line in Program.cs:45.
  • Upgrade NimblePros.Vimeo from 2.1.2 to 2.2.1 once it is published (see below). The new version:
    • adds net10.0 and net11.0 targets (devBetter targets net11.0);
    • updates dependencies;
    • pins a patched Microsoft.AspNetCore.WebUtilities (NimblePros.ApiClient 2.2.0 pulls in 9.0.4, which is affected by GHSA-x33c-w48q-qrgc);
    • makes the VimeoTusApi client set its base address and Accept header.
  • Smoke test the admin video flows: chunked upload (UploadChunkEndpoint), update description, delete, video details and oEmbed.

Behavior notes

Removing the local registration shouldn't change runtime behavior, apart from dropping the duplicated default headers:

  • The JSON settings from AddVimeoServices (NullValueHandling.Ignore) already win today.
  • The Tus client already sends no bearer token. Tus upload links are signed, so it isn't needed.

The package still depends on Autofac transitively, because AutofacExtensions ships in NimblePros.Vimeo. That's tracked as a possible follow-up there.

Blocker for the package upgrade

The NimblePros.Vimeo publish workflow is failing. nuget push returns 403: The specified API key is invalid, has expired, or does not have permission, so 2.2.0 was never published and nuget.org still has 2.1.2. The NUGET_API_KEY secret in NimblePros/NimblePros.Vimeo needs to be regenerated before the upgrade task can be done. The registration cleanup tasks don't depend on the upgrade and can be done now.

Ngôn ngữ chính
C#
Star
157
Fork
59
Merge trung bình
3 giờ 12 phút
Pull request đã merge (30 ngày)
4

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của DevBetterCom/DevBetterWeb

Tất cả issue của DevBetterCom/DevBetterWeb

Issue tương tự

Thêm issue về C#

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.