Skip to content

feat(http): Postman-parity auto headers#17

Merged
mertbekci merged 1 commit into
mainfrom
feat/auto-headers
Apr 14, 2026
Merged

feat(http): Postman-parity auto headers#17
mertbekci merged 1 commit into
mainfrom
feat/auto-headers

Conversation

@mertbekci

Copy link
Copy Markdown
Member

Kapatır #12.

Postman tarzı auto header sistemi: kullanıcı her request öncesi hangi header'ların otomatik eklendiğini görür, istediğini disable eder ve kendi eklediği header otomatik olanı case-insensitive override eder.

Kapsam (7 madde)

  1. packages/http-core/src/auto-headers.ts (yeni) — buildAutoHeaders, contentTypeForBody, mergeHeaders. User-Agent / Accept / Accept-Encoding / Cache-Control / Connection / X-Scrapeman-Token (per-request UUID) + body'den türetilen Content-Type.
  2. packages/shared-types/src/index.tsScrapemanRequest.disabledAutoHeaders?: string[] alanı eklendi.
  3. packages/http-core/src/adapters/undici-executor.tsautoHeaderEnv constructor opsiyonu; her execute çağrısında buildAutoHeaders + mergeHeaders uygulanıyor, böylece executor tek başına kullanıldığında da doğru header'lar gidiyor.
  4. apps/desktop/src/main/index.tsUndiciExecutor gerçek app.getVersion() + process.platform process.arch ile kuruluyor; disabledAutoHeaders mevcut ScrapemanRequest alanı üzerinden doğal olarak geçiyor (variable / auth / scrape-do / cookie çözümleme sırası değişmedi).
  5. apps/desktop/src/renderer/src/components/AutoHeadersPanel.tsx (yeni) — Headers tab'ının üstünde collapsible panel; her satır için toggle, user header varsa "overridden" badge, Host + Content-Length readonly.
  6. apps/desktop/src/renderer/src/store.tsBuilderState.disabledAutoHeaders + setDisabledAutoHeaders action; buildRequest serialize sırasında request'e ekliyor.
  7. packages/http-core/tests/auto-headers.test.ts (yeni) — 12 vitest case: her header'ın varlığı, User-Agent formatı, UUID uniqueness, Content-Type tablosu, multipart skip, user override case-insensitive, disabled set, user+disabled kombinasyonu.

Test sonucu

  • pnpm -r typecheck — temiz
  • pnpm -r test137 passed (12 yeni)
  • pnpm --filter=@scrapeman/desktop build — başarılı

Notlar / judgment calls

  • decompress: true atlandı: kurulu undici 7.25.0 sürümü request() için decompress opsiyonunu kabul etmiyor (node_modules/undici/types içinde böyle bir alan yok). Accept-Encoding header'ı yine de gönderiliyor; response decompress otomatik değil. Upgrade sonrası tek satırla eklenebilir.
  • Auto header merge executor içine kondu (defense-in-depth). Desktop main process gerçek version/platform'u constructor üzerinden geçiriyor, böylece preview panel dışındaki tüm request path'ler aynı logic'i kullanıyor.
  • X-Scrapeman-Token UI preview'ında <uuid per request> placeholder gösteriliyor — gerçek değer her request'te yeniden üretiliyor.

@mertbekci mertbekci added the ready for review PR ready for review label Apr 14, 2026
@mertbekci mertbekci self-assigned this Apr 14, 2026
@mertbekci
mertbekci merged commit ad6cb38 into main Apr 14, 2026
3 checks passed
@mertbekci
mertbekci deleted the feat/auto-headers branch April 14, 2026 18:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ready for review PR ready for review

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant