문서로 건너뛰기
Ruby

파일

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

모든 메서드

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

메일함이 보관하는 모든 파일로, 보내고 받은 첨부 파일과 업로드한 파일을 포함합니다: 앱의 파일 페이지에 해당합니다. download는 바이트를 바이너리 String으로 돌려주며, File.binwrite로 그대로 저장할 수 있습니다. 링크는 파일이 나간 다운로드 링크와 각 링크를 받아 간 횟수이며, stats는 분석 탭입니다.

list, list_all, iterate는 q:, kind:, sort:와 함께 direction:(inbound, outbound, uploaded), address:(대소문자를 구분하지 않고 비교하는 한 주소의 파일), 그리고 since:와 until:(Time, DateTime, 또는 ISO 8601 String)을 받습니다. since:는 그 시점을 포함하고 until:은 그 직전에서 멈춥니다. Ruby의 Date는 날짜만 있는 값으로 전송되며, 이 목록은 이를 UTC 자정으로 읽습니다.

q:는 파일 이름과 그 유형을 검색합니다. kind:는 image, pdf, audio, video, text 중 하나이고, sort:는 newest(기본값), oldest, largest, name 중 하나입니다. OpenEmail::FILE_KINDS, OpenEmail::FILE_SORTS, OpenEmail::FILE_DIRECTIONS가 선택지를 정의합니다. list는 OpenEmail::Page 하나를 반환하고, list_all은 모든 파일을 하나의 Array로 반환합니다. iterate는 각 파일을 블록에 yield하며, 루프가 필요로 할 때만 다음 페이지를 가져옵니다. 블록이 없으면 Enumerator를 반환합니다.

읽으려면 files:read, 업로드, 삭제, 링크 게시와 취소에는 files:write가 필요하며, 이는 files:read를 포함합니다. 파일에 자체 스코프가 생기기 전에 만든 키에는 그에 맞는 스코프가 부여되었습니다. 스코프가 없는 키는 403 insufficient_scope로 거부되며, 그 오류에서 scope_missing?이 true입니다. 특정 주소나 도메인으로 제한된 키는 그곳에 도착한 파일만 보므로, 워크스페이스 전체를 위해 업로드된 파일은 보지 못합니다.

download는 파일 전체를 메모리에 담으므로, 아주 큰 파일은 하나씩 가져오세요.

업로드와 삭제

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는 바이트를 그대로, 100 MB까지, filename:의 이름으로 저장하고 파일을 돌려줍니다. 발송은 이를 emails.send의 attachments에 {fileId: upload[:id]}로 첨부합니다. content_type:을 전달하거나 자체 유형을 가진 바이트를 전달하세요. 그 밖의 것은 application/octet-stream으로 저장됩니다. 두 번째 시도는 두 번째 사본을 저장하게 되므로 절대 재시도되지 않습니다.

바이트는 바이너리 String, IO, Pathname 중 하나입니다. Pathname이나 File에는 두 키워드 모두 필요 없습니다: 이름은 파일 자신의 것이고, 유형은 gem이 아는 확장자(.pdf나 .png 등)에서 가져옵니다. Rails 업로드는 자신의 original_filename과 content_type을 가지고 옵니다. 일반 바이트에는 이름이 없으므로, filename: 없는 String이나 StringIO는 무엇이든 보내기 전에 ArgumentError를 발생시킵니다.

업로드는 600초, 또는 클라이언트의 timeout이 더 길면 그 시간까지 실행될 수 있으며, timeout:으로 호출 하나에 다른 상한을 정할 수 있습니다. timeout: 0으로 만든 클라이언트는 업로드가 걸리는 만큼 기다립니다.

아무것도 의존하지 않는 업로드된 파일만 삭제할 수 있으며, 파일마다 deletable과 usage가 이를 미리 알려 줍니다. delete는 다른 파일을 409 file_in_use로 거부하며, 이는 OpenEmail::ConflictError로 발생합니다. delete_many는 id를 최대 100개 받아 삭제할 수 있는 것을 삭제하고, 나머지는 kept에 각각의 이유와 함께, 그리고 missing에 알려 줍니다. 둘 다 재시도되지 않습니다. 응답을 잃은 뒤 두 번째 delete에서 404가 나오면 첫 번째가 성공했다는 뜻이며, 두 번째 delete_many는 그 파일들을 missing에 알려 줍니다.