Ana içeriğe geç

Medyaya genel bakış

TEBHOS medyayı üç yerden sunar. Bir URL'nin hangisine ait olduğunu bilmek, hangi sorgu parametrelerini kabul ettiğini ve hangi başlıkları döndürdüğünü gösterir.

Yüzey Temel URL Sunduğu içerik
Medya yolları endpoints.media (https://tebhos.com/api/v1) Avatarlar, afişler, sunucu simgeleri ve istek üzerine yeniden boyutlandırılan, karma değeriyle adreslenen diğer görseller; /files/{key} üzerinden anahtarla erişilen her depolanmış nesne
Yüklenen dosya CDN'i https://cdn.tebhos.com Yüklendiği hâliyle depolanmış nesneler: mesaj ekleri, özel emoji ve çıkartma görselleri, giriş sesleri, grup DM simgeleri ve diğer dosyalar
Medya vekili https://tebhos.com İmzalı harici medya (/external/...) ve OpenGraph meta verileri (/og)

endpoints.media değerini koda gömmek yerine örnek (instance) keşfinden alın. CDN nesnelerinin URL'leri API tarafından her zaman eksiksiz döndürülür (ör. bir ekin url alanı); bu nedenle bunları hiçbir zaman kendiniz oluşturmazsınız.

Yol aileleri

Aile Yollar Başvuru
Görsel varlık endpoints.media altında /avatars, /banners, /server-icons, /server-banners, /server-invite-bg, /server-embed-bg, /live-room-banners Görsel varlık sözleşmesi
Depolanmış nesne endpoints.media altında /files/{key} Depolanmış nesneyi al
İmzalı harici /external/{signature}/v2/{target} İmzalı harici medyayı al
OpenGraph /og?url= OpenGraph meta verilerini al
İmzalama HTTP API üzerinde GET /media/sign Harici bir URL'yi imzala

Dönüşümler sayfası boyut, biçim ve animasyon seçen sorgu parametrelerini tanımlar. Yanıtlar ve sınırlar sayfası durum kodlarını, boyut sınırlarını, süre sınırlarını ve önbellek politikalarını listeler.

TEBHOS'ta desteklenmez

TEBHOS'ta imzalı ek URL'leri (ex, is, hm sorgu parametreleri), yükleme aktarıcısı ve ayrı tema ya da giriş sesi okuma yolları yoktur. Ekler ve diğer yüklemeler düz CDN URL'leridir; yüklemeler önceden imzalanmış URL'ler üzerinden doğrudan depolamaya gider, bkz. Yüklemeler.

Yetkilendirme

Hiçbir medya okuma yolu Authorization başlığını okumaz. Görsel varlıklar ve depolanmış nesneler yalnızca yollarıyla, imzalı harici medya ise yolundaki imzayla yetkilendirilir.

Medya URL'si bir taşıyıcı yetkisidir

Bir medya URL'sine sahip olan herkes, hesabı olmadan nesneyi indirebilir; bir sunucudan veya kanaldan ayrılmak, daha önce aldığınız bir URL'yi geçersiz kılmaz. Depolama anahtarları ve içerik karmaları uzun ve tahmin edilemezdir, ancak kendi yayımlamadığınız medya URL'lerini gizli kabul edin.

Bu yüzeydeki kimlik doğrulama gerektiren tek işlem, oturum açmış bir kullanıcı oturumu gerektiren harici bir URL'yi imzalamaktır.

Hız sınırları

Medya okumalarında istek sayısına dayalı hız sınırı yoktur. Medya yollarına yapılan GET ve HEAD istekleri HTTP API'nin genel hız sınırından muaftır ve medya vekilinde sınırlayıcı yoktur; bu nedenle hiçbir medya yanıtı hız sınırı başlıkları taşımaz.

Metotlar

endpoints.media altındaki medya yolları GET ve HEAD kabul eder. HEAD, GET ile aynı durum kodunu ve başlıkları (Content-Length dahil) boş bir gövdeyle döndürür.

Medya vekili yolları (/external/... ve /og) yalnızca GET kabul eder.

Çapraz kaynaklı okumalar

endpoints.media altındaki her başarılı medya yolu yanıtı, istek hangi Origin değerini gönderirse göndersin Access-Control-Allow-Origin: * içerir ve Vary başlığı hiçbir zaman Origin içermez. Bu nedenle tarayıcılar ve masaüstü uygulaması URL başına tek bir önbellek girdisini paylaşır.

Medya vekili çapraz kaynaklı GET isteklerine yalnızca TEBHOS web uygulaması kaynaklarından (https://tebhos.com ve alt alan adları) izin verir. Düz bir <img> veya <video> öğesi Origin göndermez ve herhangi bir sayfadan yüklenir.

Bayt aralıkları

endpoints.media altındaki medya yolları, seçilen gösterim üzerinde (varsa dönüşümden sonra) tek bir bayt aralığını dikkate alır.

Değer Açıklama
bytes={start}-{end} Uçlar dahil aralığı seçer; gösterimin ötesindeki bir bitiş değeri sıkıştırılır
bytes={start}- start değerinden son bayta kadar seçer
bytes=-{length} Son length baytı seçer

Karşılanabilir bir aralık 206 ve Content-Range: bytes {start}-{end}/{size} döndürür. Ters bir aralık, sıfır uzunluklu bir sonek, gösterimin dışında kalan bir başlangıç veya boş bir gösterim üzerindeki herhangi bir aralık 416, Content-Range: bytes */{size} ve boş bir gövde döndürür. Birimi bytes= olmayan ya da birden fazla aralık belirten (virgül içeren) bir değer yok sayılır ve gösterimin tamamı döndürülür.

Medya vekili Range başlığını iletmez ve dikkate almaz.

Gösterim başlıkları

Görsel varlık ve depolanmış nesne yollarından gelen başarılı yanıtlar şunları taşır:

Başlık Açıklama
Content-Type Döndürülen baytların medya türü (dosya adından değil içerikten algılanır)
Content-Length Döndürülen gövdenin uzunluğu; HEAD isteğinde de bulunur
Content-Range? 206 yanıtında bulunur
Accept-Ranges Her zaman bytes
Access-Control-Allow-Origin Her zaman *
Cache-Control Bkz. önbellek politikaları
CDN-Cache-Control public, max-age=31536000
Vary Accept-Encoding; biçim Accept üzerinden belirlendiyse Accept, Accept-Encoding
X-Content-Type-Options Her zaman nosniff
X-Robots-Tag noindex, nofollow, noimageindex
x-tebhos-media-cache hit, miss veya bypass: gösterimin bellek içi dönüşüm önbelleğinden gelip gelmediği. Yalnızca bilgi amaçlıdır

Hiçbir medya yanıtında Content-Disposition başlığı yoktur. Bir dosyayı kaydederken uzantısını Content-Type değerinden türetin.

İçerik algılama

Medya yolları bir nesnenin türünü ilk baytlarından algılar. Görsel varlık olarak yalnızca PNG, JPEG, GIF ve WebP içerik sunulur: başka içeriğe sahip bir nesne görsel varlık yollarında 404 olarak bildirilir; depolanmış nesne yolu ise onu, türünü anahtar uzantısından türeterek değiştirmeden döndürür (bkz. Depolanmış nesneyi al).

Medya vekilinde, hedefin vekil üzerinden sunulup sunulmayacağına kaynağın Content-Type değeri karar verir, bkz. Hedef doğrulama.