Belgelere geç
Ruby

Dosyalar

`files.list`, `list_all`, `iterate`, `get`, `download`, `list_links`, `list_all_links`, `iterate_links`, `create_link`, `revoke_link`, `stats`, `upload`, `delete` ve `delete_many`.

Her yöntem

files.rb
page = client.files.list(kind: "pdf", sort: "largest")file = page.items.first links = client.files.list_all_links(file[:id])p links.map { |link| [link[:url], link[:downloads]] } stats = client.files.statsputs stats.dig(:totals, :files), stats.dig(:uploaded, :bytes) File.binwrite(file[:filename], client.files.download(file[:id]))

Posta kutusunun tuttuğu her dosya: gönderilen ve alınan ekler ve ona yüklenen dosyalar; yani uygulamanın Dosyalar sayfası. download baytları, File.binwrite ile değiştirilmeden kaydedilebilen ikili bir String olarak döndürür. Bağlantılar, bir dosyanın gönderildiği indirme bağlantılarıdır ve her birinin kaç kez getirildiğini içerir; stats ise Analiz sekmesidir.

list, list_all ve iterate; q:, kind: ve sort: ile birlikte direction: (inbound, outbound ya da uploaded), address: (büyük/küçük harf gözetmeksizin karşılaştırılan tek bir adresin dosyaları) ve bir Time, bir DateTime ya da bir ISO 8601 String'i olarak since: ve until: alır. since: kendi anını içerir, until: ise ondan önce durur. Bir Ruby Date çıplak bir tarih olarak gönderilir ve bu liste onu UTC gece yarısı olarak okur.

q: dosya adında ve türünde arar. kind: değeri image, pdf, audio, video ya da text; sort: değeri ise varsayılan olan newest, oldest, largest ya da name olur. OpenEmail::FILE_KINDS, OpenEmail::FILE_SORTS ve OpenEmail::FILE_DIRECTIONS seçenekleri adlandırır. list bir OpenEmail::Page, list_all ise tüm dosyaları tek bir Array içinde döndürür. iterate her dosyayı bir bloğa verir ve bir sonraki sayfayı yalnızca döngü ihtiyaç duyduğunda getirir. Blok olmadan bir Enumerator döndürür.

Okuma files:read gerektirir; yükleme, silme ve bağlantıları yayımlama ya da iptal etme ise files:read iznini de içeren files:write gerektirir. Dosyaların kendi kapsamları olmadan önce oluşturulmuş bir anahtara eşleşen kapsamlar verilmiştir. Kapsamı olmayan bir anahtar 403 insufficient_scope ile reddedilir ve hatadaki scope_missing? true olur. Belirli adreslerle ya da alan adlarıyla sınırlı bir anahtar yalnızca onlara gelen dosyaları görür; bu yüzden tüm çalışma alanı için yüklenen dosyaları görmez.

download dosyanın tamamını bellekte tutar; bu yüzden çok büyük dosyaları birer birer getirin.

Yükleme ve silme

upload.rb
upload = client.files.upload(File.binread("report.pdf"), filename: "report.pdf", content_type: "application/pdf")client.files.delete(upload[:id]) if upload[:deletable] invoice = client.files.upload(Pathname("invoice.pdf"))puts invoice[:filename], invoice[:mimeType] result = client.files.delete_many(["file_0c4e7a91d2b84f63a5e19b7d", "file_6bb640f5b99e47deb758f1f5"])result[:kept].each { |kept| puts "#{kept[:filename]} #{kept[:reason]}" }

upload baytları olduğu gibi, 100 MB'a kadar, filename: içindeki adla saklar ve dosyayı döndürür. Bir gönderim onu emails.send çağrısının attachments alanında {fileId: upload[:id]} olarak ekler. content_type: ya da kendi türünü taşıyan baytlar geçirin; geri kalan her şey application/octet-stream olarak saklanır. Asla yeniden denenmez, çünkü ikinci bir deneme ikinci bir kopya saklardı.

Baytlar ikili bir String, bir IO ya da bir Pathname'dir. Bir Pathname ya da File iki anahtar kelimeye de ihtiyaç duymaz: ad dosyanın kendi adıdır, tür ise gem uzantıyı tanıyorsa (örneğin .pdf ya da .png) uzantıdan gelir. Bir Rails yüklemesi kendi original_filename ve content_type değerlerini getirir. Düz baytlar ad taşımaz; bu yüzden filename: olmadan bir String ya da StringIO, hiçbir şey gönderilmeden önce ArgumentError fırlatır.

Bir yükleme 600 saniye ya da daha uzunsa istemcinin timeout değeri kadar sürebilir; timeout: ise tek bir çağrı için başka bir sınır belirler. timeout: 0 ile kurulmuş bir istemci bir yükleme ne kadar sürerse o kadar bekler.

Yalnızca hiçbir şeyin bağlı olmadığı bir yükleme silinebilir ve bunu her dosyadaki deletable ve usage önceden söyler. delete diğer her dosyayı OpenEmail::ConflictError olarak fırlatılan 409 file_in_use ile reddeder. delete_many en fazla 100 kimlik alır, silebildiğini siler ve geri kalanları her biri nedeniyle birlikte kept içinde ve missing içinde bildirir. İkisi de yeniden denenmez. Kaybolan bir yanıttan sonra ikinci bir delete üzerindeki 404, ilkinin çalıştığı anlamına gelir; ikinci bir delete_many ise bu dosyaları missing içinde bildirir.