mailclerk 0.1.1 → 1.0.0

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.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +5 -5
  3. data/lib/mailclerk.rb +34 -5
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0746f6e459e89ebf5c23c33c940f10f4639d7b92e9bffbb7bb0f0c217608d8e9
4
- data.tar.gz: 12c12b1846326a577d6423dd7b20ecf77156c50d4e3ab084327b72224a4b8023
3
+ metadata.gz: 227b81d20c20b98dc4fd1d582d18aa48c7687354b28a73da03480604859afae2
4
+ data.tar.gz: '0291df4fb61da622535bd19a1cef6662ae32732397e93e42d06bf08b4ca81c8a'
5
5
  SHA512:
6
- metadata.gz: 1867bff480e230a049d3ec3f14221ca83ace81ed745cbefd1b3b7ef7ec6d6d561f7b8f9fe37b9d0d83d178f50ed28061bf6f35768f806dd4e9d27997a7f6c289
7
- data.tar.gz: 5aa6071e289c6194fe43abfba94ed141200b1c385c42ac897e4c09dd0b0bf722f079f7e69b0d96d767deac7273a47a5475b31d60aac3160575dfb431e0006ffa
6
+ metadata.gz: 2a518499c62151117b5369f5be66ab8dc475b379780f072516e6061f29b9d2103e867ce53d9ab96ae2b457f4971b12a7e95a1f51feeae8160a37478c9c81c104
7
+ data.tar.gz: 794a86c97badf077d70e12ab39e6c6cf1a07a24605e27bbda8e4562df29bb75a021f6f1c56da4a1945862a84527ae08f5cd0b0357936381be40b5a703db532be
data/README.md CHANGED
@@ -1,5 +1,5 @@
1
1
  <p align="center">
2
- <img src="mailcerk.png" alt="Mailclerk Logo"/>
2
+ <img src="https://github.com/mailclerk/mailclerk-ruby/blob/main/mailclerk.png?raw=true" alt="Mailclerk Logo"/>
3
3
  </p>
4
4
 
5
5
  # Mailclerk
@@ -51,15 +51,15 @@ environmental variable: `MAILCLERK_API_KEY`. Alternatively, you can
51
51
  set it directly on the Mailclerk module:
52
52
 
53
53
  ```
54
- # config/initializers/mailcerk.rb
54
+ # config/initializers/mailclerk.rb
55
55
  Mailclerk.api_key = "mc_yourprivatekey"
56
56
  ```
57
57
 
58
58
  _If you are using version control like git, we strongly recommend storing your
59
59
  production API keys in environmental variables_.
60
60
 
61
- The default API endpoint is `https://api.mailcerk.app`. To change this, you
62
- can provide a `MAILCLERK_API_URL` ENV variable or set `Mailclerk.mailcerk_url`.
61
+ The default API endpoint is `https://api.mailclerk.app`. To change this, you
62
+ can provide a `MAILCLERK_API_URL` ENV variable or set `Mailclerk.mailclerk_url`.
63
63
 
64
64
  ## Usage
65
65
 
@@ -99,7 +99,7 @@ Mailclerk.deliver("welcome-email", "bob@example.com")
99
99
 
100
100
  ## Tests
101
101
 
102
- Tests aren't current implemented. When they are, to test, run:
102
+ Tests aren't currently implemented. When they are, to test, run:
103
103
 
104
104
  ```
105
105
  bundle exec rake
data/lib/mailclerk.rb CHANGED
@@ -22,7 +22,7 @@ module Mailclerk
22
22
  end
23
23
 
24
24
  def self.version
25
- "0.1.1"
25
+ "1.0.0"
26
26
  end
27
27
 
28
28
  def self.version_label
@@ -33,17 +33,31 @@ module Mailclerk
33
33
  class MailclerkError < StandardError
34
34
  end
35
35
 
36
+ class MailclerkAPIError < MailclerkError
37
+ attr_accessor :http_status
38
+ attr_accessor :http_response
39
+
40
+ def initialize(description, http_status=nil, http_response=nil)
41
+ super(description)
42
+ self.http_status = http_status
43
+ self.http_response = http_response
44
+ end
45
+
46
+ end
47
+
36
48
  class Client
37
49
  def initialize(api_key, api_url=nil)
38
50
  @api_key = api_key
39
51
  @api_url = api_url || ENV['MAILCLERK_API_URL'] || DEFAULT_API_URL
40
52
 
41
53
  if @api_key.nil?
42
- raise MailclerkError.new "No Mailclerk API Key provided. Set `Mailclerk.api_key`"
54
+ raise MailclerkError.new(
55
+ "No Mailclerk API Key provided. Set `Mailclerk.api_key`"
56
+ )
43
57
  end
44
58
 
45
59
  if @api_url.nil? || @api_url.empty?
46
- raise MailclerkError.new "Mailclerk API URL empty"
60
+ raise MailclerkError.new("Mailclerk API URL empty")
47
61
  end
48
62
  end
49
63
 
@@ -51,7 +65,7 @@ module Mailclerk
51
65
  conn = Faraday.new(url: @api_url)
52
66
  conn.basic_auth(@api_key, '')
53
67
 
54
- resp = conn.post('deliver', {
68
+ response = conn.post('deliver', {
55
69
  'template' => template,
56
70
  'recipient' => recipient,
57
71
  'data' => data,
@@ -60,8 +74,23 @@ module Mailclerk
60
74
  'Content-Type' => 'application/json',
61
75
  'X-Client-Version' => Identity.version_label
62
76
  })
77
+
78
+ if response.status >= 400
79
+ body = response.body
80
+ begin
81
+ message = JSON.parse("{ } { }")
82
+ description = "Mailclerk API Error: #{ message }"
83
+ rescue JSON::ParserError
84
+ description = "Mailclerk API Unknown Error"
85
+ end
86
+
87
+ raise MailclerkAPIError.new(
88
+ description, response.status, response
89
+ )
63
90
 
64
- return resp
91
+ end
92
+
93
+ return response
65
94
  end
66
95
  end
67
96
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mailclerk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Noah Litvin
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2021-01-28 00:00:00.000000000 Z
12
+ date: 2021-02-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: faraday