Class: Mailosaur::Files
- Inherits:
-
Object
- Object
- Mailosaur::Files
- Defined in:
- lib/Mailosaur/files.rb
Instance Attribute Summary collapse
-
#conn ⇒ Connection
readonly
The client connection.
Instance Method Summary collapse
-
#get_attachment(id) ⇒ NOT_IMPLEMENTED
Download an attachment.
-
#get_email(id) ⇒ NOT_IMPLEMENTED
Download EML.
-
#get_preview(id) ⇒ NOT_IMPLEMENTED
Download an email preview.
-
#initialize(conn, handle_http_error) ⇒ Files
constructor
Creates and initializes a new instance of the Files class.
Constructor Details
#initialize(conn, handle_http_error) ⇒ Files
Creates and initializes a new instance of the Files class.
7 8 9 10 |
# File 'lib/Mailosaur/files.rb', line 7 def initialize(conn, handle_http_error) @conn = conn @handle_http_error = handle_http_error end |
Instance Attribute Details
#conn ⇒ Connection (readonly)
Returns the client connection.
13 14 15 |
# File 'lib/Mailosaur/files.rb', line 13 def conn @conn end |
Instance Method Details
#get_attachment(id) ⇒ NOT_IMPLEMENTED
Download an attachment
Downloads a single attachment. Simply supply the unique identifier for the required attachment.
25 26 27 28 29 |
# File 'lib/Mailosaur/files.rb', line 25 def (id) response = conn.get "api/files/attachments/#{id}" @handle_http_error.call(response) unless response.status == 200 response.body end |
#get_email(id) ⇒ NOT_IMPLEMENTED
Download EML
Downloads an EML file representing the specified email. Simply supply the unique identifier for the required email.
41 42 43 44 45 |
# File 'lib/Mailosaur/files.rb', line 41 def get_email(id) response = conn.get "api/files/email/#{id}" @handle_http_error.call(response) unless response.status == 200 response.body end |
#get_preview(id) ⇒ NOT_IMPLEMENTED
Download an email preview
Downloads a screenshot of your email rendered in a real email client. Simply supply the unique identifier for the required preview.
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'lib/Mailosaur/files.rb', line 57 def get_preview(id) timeout = 120_000 poll_count = 0 start_time = Time.now.to_f loop do response = conn.get "api/files/screenshots/#{id}" return response.body if response.status == 200 @handle_http_error.call(response) unless response.status == 202 delay_pattern = (response.headers['x-ms-delay'] || '1000').split(',').map(&:to_i) delay = poll_count >= delay_pattern.length ? delay_pattern[delay_pattern.length - 1] : delay_pattern[poll_count] poll_count += 1 ## Stop if timeout will be exceeded if ((1000 * (Time.now.to_f - start_time).to_i) + delay) > timeout msg = format('An email preview was not generated in time. The email client may not be available, or the preview ID [%s] may be incorrect.', id) raise Mailosaur::MailosaurError.new(msg, 'preview_timeout') end sleep(delay / 1000.0) end end |