mailosaur 0.0.17 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
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