Aller à la documentation
Ruby

Fichiers

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

Toutes les méthodes

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]))

Chaque fichier que contient la boîte aux lettres, pièces jointes envoyées et reçues et fichiers importés : la page Fichiers de l'application. download renvoie les octets sous forme de String binaire, que File.binwrite enregistre sans modification. Les liens sont les liens de téléchargement sous lesquels un fichier est parti, avec le nombre de fois où chacun a été récupéré, et stats correspond à l'onglet Statistiques.

list, list_all et iterate prennent q:, kind: et sort:, ainsi que direction: (inbound, outbound ou uploaded), address:, les fichiers d'une adresse comparée sans tenir compte de la casse, et since: et until:, un Time, un DateTime ou une String ISO 8601. since: inclut son moment et until: s'arrête juste avant. Une Date Ruby est envoyée comme une date seule, que cette liste lit comme minuit UTC.

q: cherche dans le nom du fichier et dans son type. kind: vaut image, pdf, audio, video ou text, et sort: vaut newest, la valeur par défaut, oldest, largest ou name. OpenEmail::FILE_KINDS, OpenEmail::FILE_SORTS et OpenEmail::FILE_DIRECTIONS nomment les choix possibles. list renvoie une OpenEmail::Page, et list_all renvoie tous les fichiers dans un seul Array. iterate passe chaque fichier à un bloc et ne récupère la page suivante que lorsque la boucle en a besoin. Sans bloc, il renvoie un Enumerator.

Lire demande files:read, et importer, supprimer, publier ou révoquer des liens demandent files:write, qui inclut files:read. Une clé créée avant que les fichiers aient leurs propres portées a reçu les portées correspondantes. Une clé sans la portée est refusée avec un 403 insufficient_scope, et scope_missing? vaut true sur l'erreur. Une clé limitée à certaines adresses ou certains domaines ne voit que les fichiers arrivés à ceux-ci : elle ne voit donc pas les fichiers importés pour tout l'espace de travail.

download garde le fichier entier en mémoire : récupérez donc les très gros fichiers un par un.

Importer et supprimer

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 enregistre les octets tels quels, jusqu'à 100 Mo, sous le nom indiqué dans filename:, et renvoie le fichier. Un envoi le joint sous la forme {fileId: upload[:id]} dans les attachments d'emails.send. Passez content_type:, ou des octets qui portent leur propre type, sinon le fichier est enregistré comme application/octet-stream. Il n'est jamais réessayé, car une seconde tentative enregistrerait une seconde copie.

Les octets sont une String binaire, un IO ou un Pathname. Un Pathname ou un File n'a besoin d'aucun des deux mots-clés : le nom est celui du fichier, et le type vient de son extension quand la gem la connaît, comme .pdf ou .png. Un fichier importé par Rails apporte ses propres original_filename et content_type. De simples octets ne portent pas de nom : une String ou un StringIO sans filename: lève donc ArgumentError avant que rien ne soit envoyé.

Un import peut durer 600 secondes, ou le timeout du client s'il est plus long, et timeout: fixe une autre limite pour un seul appel. Un client construit avec timeout: 0 attend aussi longtemps que dure l'import.

Seul un fichier importé dont rien ne dépend peut être supprimé, et deletable et usage sur chaque fichier l'indiquent à l'avance. delete refuse tout autre fichier avec un 409 file_in_use, levé sous forme d'OpenEmail::ConflictError. delete_many prend jusqu'à 100 id, supprime ce qu'il peut et signale le reste dans kept, chacun avec sa raison, et dans missing. Aucun des deux n'est réessayé. Un 404 sur un second delete après une réponse perdue signifie que le premier a fonctionné, et un second delete_many signale ces fichiers dans missing.