mailosaur 0.0.17 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6953dda6f7d708942053af12e89965e0600085c0
4
- data.tar.gz: 141d25ea3ba910931c04d57003e7853b387817d1
3
+ metadata.gz: 958bed120db8df13a226f1f8cbfb58c0b6675d3f
4
+ data.tar.gz: 2339ed43752ac88db945241349114715dd722f0a
5
5
  SHA512:
6
- metadata.gz: b0e021f78701c9f5db9e2e8a08979195a6152bf682f842103e0a34f7bbc1058b40e6ae5468e0eeeef97c3fd4156322a258669c23dc532250722e8c3bce574753
7
- data.tar.gz: 644bfdf04cea4a5562b353749e47f3994d5ab3a1c5a47a15b76f19a2f650580783f776d506aa5f41aae0aaad4aeda77dee19b2783b7f91597019bce6582ac1ef
6
+ metadata.gz: 7ad786ad1421004232b750c89b6645f4ea9e53b66ede0fef35d6b8f988640c91e813ca3985a4145451043a740d55f5d081b3ca6851ee0dfb06dfc7625a4799f8
7
+ data.tar.gz: 89117a52e1f693a10824314ee6f6725aa7dcc1ff35809ac61bdf0f28684b1ae5df9df81ac71488683ed521a641383ce257efe62d73f638b61777c4691f9d0eee
data/README.md CHANGED
@@ -7,47 +7,54 @@ For more info go to [mailosaur.com](https://mailosaur.com/)
7
7
 
8
8
  ## Installation
9
9
 
10
- gem install mailosaur
10
+ ``` gem install mailosaur ```
11
11
 
12
12
  ## Usage
13
13
  ```ruby
14
14
  require 'mailosaur'
15
- require "test/unit"
16
15
 
17
16
  mailbox = Mailosaur.new(mailbox,apikey)
18
17
 
19
- emails = mailbox.getEmailsByRecipient('anything.1eaaeef6@mailosaur.in')
20
-
21
- assert_equal('something', emails[0].Subject, 'The subject should be something')
18
+ emails = mailbox.get_emails_by_recipient('anything.1eaaeef6@mailosaur.in')
22
19
  ```
20
+
21
+ Optional: Timeout
22
+
23
+ - Default timeout is set to 20, if you want to increase or decrease this, set the time in seconds to the `MAILOSAUR_TIMEOUT` variable.
24
+
25
+ ``` export MAILOSAUR_TIMEOUT=60 ```
26
+
27
+
23
28
  ##Api
24
29
 
25
30
  *functions:*
26
31
 
27
- - **Email[] GetEmails(String searchPattern)** - Retrieves all emails which have the searchPattern text in their body or subject.
32
+ - get_emails - Retrieves all emails
33
+
34
+ - get_emails('search_text') - Retrieves all emails with ``` search_text ``` in their body or subject.
28
35
 
29
- - **Email[] GetEmailsByRecipient(String recipientEmail)** -
36
+ - get_emails_by_recipient('recipient_email') -
30
37
  Retrieves all emails sent to the given recipient.
31
38
 
32
- - **Email GetEmail(String emailId)** -
39
+ - get_email('email_id') -
33
40
  Retrieves the email with the given id.
34
41
 
35
- - **Void DeleteAllEmail()** -
42
+ - delete_all_emails -
36
43
  Deletes all emails in a mailbox.
37
44
 
38
- - **Void DeleteEmail(String emailId)** -
45
+ - delete_email('email_id') -
39
46
  Deletes the email with the given id.
40
47
 
41
- - **Byte[] GetAttachment(String attachmentId)** -
48
+ - get_attachment('attachment_id') -
42
49
  Retrieves the attachment with specified id.
43
50
 
44
- - **Byte[] GetRawEmail(String rawId)** -
51
+ - get_raw_email('raw_id') -
45
52
  Retrieves the complete raw EML file for the rawId given. RawId is a property on the email object.
46
53
 
47
- - **String GenerateEmailAddress()** -
54
+ - generate_email_address -
48
55
  Generates a random email address which can be used to send emails into the mailbox.
49
56
 
50
- *structures*
57
+ *Email Object Structure*
51
58
 
52
59
  - **Email** - The core object returned by the Mailosaur API
53
60
  - **id** - The email identifier
data/lib/helper.rb ADDED
@@ -0,0 +1,6 @@
1
+ require 'rubygems'
2
+ require 'rest_client'
3
+ require 'json'
4
+ require 'securerandom'
5
+ require "#{File.dirname(__FILE__)}/mailosaur/email"
6
+ require "#{File.dirname(__FILE__)}/mailosaur/message_generator"
data/lib/mailosaur.rb CHANGED
@@ -1,100 +1,123 @@
1
- require 'rubygems'
2
- require 'rest_client'
3
- require 'json'
4
- require 'rest_client'
5
- require 'securerandom'
6
- require 'date'
7
- require "#{File.dirname(__FILE__)}/mailosaur/email"
1
+ require_relative 'helper.rb'
8
2
 
9
- # Main class to access Mailosaur.com api.
10
3
  class Mailosaur
11
- @MAILBOX
12
- @API_KEY
13
- @BASE_URI
4
+ attr_reader :message
14
5
 
15
- # Pass in your mailbox id and api key to authenticate
16
- # Leave mailbox and/or apiKey empty to load settings from environment.
17
- # export MAILOSAUR_APIKEY=abcex7
18
- # export MAILOSAUR_MAILBOX=123456abcde
19
- def initialize(mailbox, apiKey)
20
- @MAILBOX = ENV['MAILOSAUR_MAILBOX'] || mailbox
21
- @API_KEY = ENV['MAILOSAUR_APIKEY'] || apiKey
22
- @BASE_URI = 'https://mailosaur.com/v2'
6
+ def initialize(mailbox, apiKey, timeout=20)
7
+ @mailbox = ENV['MAILOSAUR_MAILBOX'] || mailbox
8
+ @api_key = ENV['MAILOSAUR_APIKEY'] || apiKey
9
+ @timeout = timeout
10
+ @base_uri = 'https://mailosaur.com/v2'
11
+ @message = MessageGenerator.new
23
12
  end
24
13
 
25
14
  # Retrieves all emails which have the searchPattern text in their body or subject.
26
- def getEmails(searchCriteria = Hash.new)
27
- if searchCriteria.is_a? String
28
- search = searchCriteria
29
- searchCriteria = Hash.new
30
- searchCriteria['search'] = search
15
+ def get_emails(search_criteria = {})
16
+ if search_criteria.is_a? String
17
+ search_criteria = {'search' => search_criteria}
31
18
  end
32
- searchCriteria['key'] = @API_KEY
33
- searchCriteria['mailbox'] = @MAILBOX
34
- for i in 1..10
35
- response = RestClient.get("#{@BASE_URI}/emails", {:params => searchCriteria})
36
- data = JSON.parse(response.body)
37
- emails = data.map { |em| Email.new(em) }
38
-
39
- if !emails.nil? && emails.length>0
40
- return emails
41
- end
42
- # back off and retry
43
- sleep(i*i)
19
+ search_criteria['key'] = @api_key
20
+ search_criteria['mailbox'] = @mailbox
21
+ response = send_get_emails_request(search_criteria)
22
+ if response.length > 2
23
+ data = JSON.parse(response.body)
24
+ data.map { |em| Email.new(em) }
25
+ else
26
+ message.no_emails_found(search_criteria)
44
27
  end
45
28
  end
46
29
 
47
30
  # Retrieves all emails sent to the given recipient.
48
- def getEmailsByRecipient(recipientEmail)
49
- searchCriteria = Hash.new
50
- searchCriteria['recipient']= recipientEmail
51
- return getEmails(searchCriteria)
31
+ def get_emails_by_recipient(recipient_email)
32
+ search_criteria = {'recipient' => recipient_email}
33
+ get_emails(search_criteria)
52
34
  end
53
35
 
54
36
  # Retrieves the email with the given id.
55
- def getEmail(emailId)
56
- params = Hash.new
57
- params['key'] = @API_KEY
58
- response = RestClient.get(@BASE_URI + '/email/' + emailId, {:params => params})
59
- data = JSON.parse(response.body)
60
- email = Email.new(data)
61
- return email
37
+ def get_email(email_id)
38
+ params = {'key' => @api_key}
39
+ response = RestClient.get("#{@base_uri}/email/#{email_id}", {:params => params})
40
+ data = JSON.parse(response.body)
41
+ Email.new(data)
62
42
  end
63
43
 
64
- # Deletes all emails in a mailbox.
65
- def deleteAllEmail
66
- queryParams = Hash.new
67
- queryParams['key'] = @API_KEY
68
- queryParams['mailbox'] = @MAILBOX
69
- RestClient.post("#{@BASE_URI}/emails/deleteall", nil, {:params => queryParams})
44
+ # Deletes all emails in a @mailbox.
45
+ def delete_all_emails
46
+ query_params = {'key' => @api_key, '@mailbox' => @mailbox }
47
+ RestClient.post("#{@base_uri}/emails/deleteall", nil, {:params => query_params})
70
48
  end
71
49
 
72
50
  # Deletes the email with the given id.
73
- def deleteEmail(emailId)
74
- params = Hash.new
75
- params['key'] = @API_KEY
76
- RestClient.post(@BASE_URI + '/email/' + emailId + '/delete/', nil,{:params => params})
51
+ def delete_email(email_id)
52
+ params = {'key' => @api_key}
53
+ RestClient.post("#{@base_uri}/email/#{email_id}/delete/", nil, {:params => params})
77
54
  end
78
55
 
79
56
  # Retrieves the attachment with specified id.
80
- def getAttachment(attachmentId)
81
- params = Hash.new
82
- params['key'] = @API_KEY
83
- response = RestClient.get(@BASE_URI + '/attachment/' + attachmentId, {:params => params})
84
- return response.body
57
+ def get_attachment(attachment_id)
58
+ params = {'key' => @api_key}
59
+ RestClient.get("#{@base_uri}/attachment/#{attachment_id}", {:params => params}).body
85
60
  end
86
61
 
87
62
  # Retrieves the complete raw EML file for the rawId given. RawId is a property on the email object.
88
- def getRawEmail(rawId)
89
- params = Hash.new
90
- params['key'] = @API_KEY
91
- response = RestClient.get(@BASE_URI + '/raw/' + rawId, {:params => params})
92
- return response.body
63
+ def get_raw_email(raw_id)
64
+ params = {'key' => @api_key}
65
+ RestClient.get("#{@base_uri}/raw/#{raw_id}", {:params => params}).body
93
66
  end
94
67
 
95
- # Generates a random email address which can be used to send emails into the mailbox.
96
- def generateEmailAddress()
68
+ # Generates a random email address which can be used to send emails into the @mailbox.
69
+ def generate_email_address
97
70
  uuid = SecureRandom.hex(3)
98
- return "%s.%s@mailosaur.in" % [uuid, @MAILBOX]
71
+ "%s.%s@mailosaur.in" % [uuid, @mailbox]
72
+ end
73
+
74
+ # old methods
75
+ def getEmails(search_criteria = {})
76
+ message.new_syntax('getEmails')
77
+ get_emails(search_criteria)
78
+ end
79
+ def getEmailsByRecipient(recipient_email)
80
+ message.new_syntax('getEmailsByRecipient')
81
+ get_emails_by_recipient(recipient_email)
82
+ end
83
+ def getEmail(email_id)
84
+ message.new_syntax('getEmail')
85
+ get_email(email_id)
86
+ end
87
+ def deleteAllEmail
88
+ message.new_syntax('deleteAllEmail')
89
+ delete_all_emails
90
+ end
91
+ def deleteEmail(email_id)
92
+ message.new_syntax('deleteEmail')
93
+ delete_email(email_id)
94
+ end
95
+ def getAttachment(attachment_id)
96
+ message.new_syntax('getAttachment')
97
+ get_attachment(attachment_id)
98
+ end
99
+ def getRawEmail(raw_id)
100
+ message.new_syntax('getRawEmail')
101
+ get_raw_email(raw_id)
102
+ end
103
+ def generateEmailAddress
104
+ message.new_syntax('generateEmailAddress')
105
+ generate_email_address
106
+ end
107
+
108
+ private
109
+
110
+ def send_get_emails_request(search_criteria)
111
+ r = ''
112
+ begin
113
+ Timeout::timeout(@timeout) {
114
+ until r.length > 2 && !r.nil?
115
+ r = RestClient.get("#{@base_uri}/emails", {:params => search_criteria})
116
+ end
117
+ r
118
+ }
119
+ rescue Timeout::Error
120
+ ''
121
+ end
99
122
  end
100
123
  end
@@ -0,0 +1,31 @@
1
+ class MessageGenerator
2
+ attr_accessor :message
3
+
4
+ def no_emails_found(data)
5
+ "\e[36m No emails were found for #{data} \e[0m\n\e[32m Try checking the params. \e[0m"
6
+ end
7
+
8
+ def new_syntax(method)
9
+ puts ":::::: Please use new syntax for #{method} ::::::\n
10
+ \e[36m @mailbox.#{look_ruby(method)}(params) \e[0m"
11
+ end
12
+
13
+ def sleep
14
+ puts "\e[36m Let's give the email some time to get there... \e[0m"
15
+ end
16
+
17
+ private
18
+
19
+ def look_ruby(method)
20
+ output = String.new
21
+ caps = method.scan(/[A-Z]+/).map(&:downcase!)
22
+ other = method.split(/[A-Z]+/)
23
+ a3 = other.join('_ ')
24
+ a4 = a3.split(' ')
25
+ words = ''
26
+ other.count.times do |i|
27
+ words << "#{a4[i]}#{caps[i]}"
28
+ end
29
+ words
30
+ end
31
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mailosaur
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.17
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Clickity Ltd
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-09-22 00:00:00.000000000 Z
11
+ date: 2016-03-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json
@@ -88,6 +88,7 @@ extra_rdoc_files: []
88
88
  files:
89
89
  - LICENSE
90
90
  - README.md
91
+ - lib/helper.rb
91
92
  - lib/mailosaur.rb
92
93
  - lib/mailosaur/attachment.rb
93
94
  - lib/mailosaur/email.rb
@@ -95,6 +96,7 @@ files:
95
96
  - lib/mailosaur/email_data.rb
96
97
  - lib/mailosaur/image.rb
97
98
  - lib/mailosaur/link.rb
99
+ - lib/mailosaur/message_generator.rb
98
100
  homepage: http://mailosaur.com
99
101
  licenses:
100
102
  - MIT