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.