mailerlite 1.1.0 → 1.2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a739963fd127ae8c42af6a2ceacfded67e42eb96
4
- data.tar.gz: 21d605553139028079007949fc7515877aa5c218
3
+ metadata.gz: c12879562f401358996022b1ca5cdebbbadda822
4
+ data.tar.gz: 871117ea177f7b68c68cdf6bfcca64daacdd3c9d
5
5
  SHA512:
6
- metadata.gz: e3ee319eda69a4cb89625a105c09baa29a2291efb40ec1c55235c2336c177ece212ad376793722b56490eb3b792f10a596624d7861b8d35ecb28e414f4faa03d
7
- data.tar.gz: 2d189d579c72281e66a45065f5b7ed3f785a36b9ab64d397e2dadf08d8b1d2e99c0bee41d4e0f3f2db742b680333524838ac1ec5191c8abeccb480febb75f8e7
6
+ metadata.gz: a7087390b80ed3f0ca82b0d2e4cd91c0b1fd73974ee548ba03964fbcf56b99edec4ad7e38182c3d49a71e6d5ed6cb23049c6d3baaca0f65c8b9d613ba89dc1ea
7
+ data.tar.gz: 52ae9d8a5750e887d7ce477380a0e63afbdb58c32a5d73ea4442e4a0bdc0a4244e72096ca7bfd4b7fff552d2cfdb6812a6f0f4a174e99e04c411ed8c391efd86
@@ -1,4 +1,5 @@
1
1
  AllCops:
2
+ TargetRubyVersion: 2.0
2
3
  Include:
3
4
  - '**/Rakefile'
4
5
  - '**/Gemfile'
@@ -29,6 +30,10 @@ Lint/EndAlignment:
29
30
  Style/FrozenStringLiteralComment:
30
31
  Enabled: false
31
32
 
33
+ Style/DoubleNegation:
34
+ Exclude:
35
+ - 'lib/mailerlite/utils.rb'
36
+
32
37
  Metrics/BlockLength:
33
38
  ExcludedMethods:
34
39
  - 'describe'
data/README.md CHANGED
@@ -32,6 +32,12 @@ You can find your API key in page: Integrations » Developer API.
32
32
  client = MailerLite::Client.new(api_key: 'my-secret-api-key')
33
33
  ```
34
34
 
35
+ Example:
36
+
37
+ ```ruby
38
+ client.campaigns
39
+ ```
40
+
35
41
  Or create file under `config/initializers/mailerlite.rb`
36
42
 
37
43
  ```ruby
@@ -40,6 +46,15 @@ MailerLite.configure do |config|
40
46
  end
41
47
  ```
42
48
 
49
+ When you configured global settings in file, then you can request methods
50
+ on `MailerLite` class directly.
51
+
52
+ Example:
53
+
54
+ ```ruby
55
+ MailerLite.campaigns
56
+ ```
57
+
43
58
  See more documentation in [examples][examples] directory.
44
59
 
45
60
  ## Supported Ruby Versions
@@ -26,8 +26,8 @@ MailerLite.configure do |config|
26
26
  end
27
27
  ```
28
28
 
29
- When you configured in file, you can request methods on `MailerLite` class
30
- directly.
29
+ When you configured global settings in file, then you can request methods
30
+ on `MailerLite` class directly.
31
31
 
32
32
  Example:
33
33
 
@@ -1,6 +1,5 @@
1
- require 'mailerlite/core_ext/string'
2
-
3
1
  require 'mailerlite/version'
2
+ require 'mailerlite/utils'
4
3
  require 'mailerlite/error'
5
4
  require 'mailerlite/client'
6
5
 
@@ -66,9 +66,9 @@ module MailerLite
66
66
  builder.use FaradayMiddleware::FollowRedirects
67
67
  builder.use FaradayMiddleware::Mashify, mash_class: MailerLite::Mash
68
68
  builder.use MailerLite::Middleware::UnderscoreKeys
69
+ builder.use MailerLite::Middleware::RaiseError
69
70
  builder.use FaradayMiddleware::ParseJson
70
71
  builder.use MailerLite::Middleware::FixUnparsedJson
71
- builder.use MailerLite::Middleware::RaiseError
72
72
 
73
73
  builder.adapter Faraday.default_adapter
74
74
  end
@@ -1,14 +1,19 @@
1
1
  module MailerLite
2
2
  # Base MailerLite error.
3
3
  class Error < StandardError
4
+ def initialize(msg = nil)
5
+ @message = msg
6
+ end
7
+
4
8
  # Returns the appropriate MailerLite::Error sublcass based on status and
5
9
  # response message.
6
10
  #
7
- # @param response [Hash] HTTP response.
11
+ # @param response [Faraday::Env] HTTP response.
8
12
  #
9
13
  # @return [MailerLite::Error]
10
14
  def self.from_response(response)
11
- status = response[:status].to_i
15
+ status = response.status.to_i
16
+ message = error_message(response)
12
17
 
13
18
  klass = case status
14
19
  when 400 then MailerLite::BadRequest
@@ -17,7 +22,20 @@ module MailerLite
17
22
  when 500 then MailerLite::InternalServerError
18
23
  end
19
24
 
20
- klass.new if klass
25
+ klass.new(message) if klass
26
+ end
27
+
28
+ # Returns the appropriate MailerLite error message based on response
29
+ #
30
+ # @param response [Faraday::Env] HTTP response.
31
+ #
32
+ # @return [String] MailerLite error message.
33
+ def self.error_message(response)
34
+ return unless response.body.is_a?(Hash)
35
+ return unless response.body['error']
36
+
37
+ message = response.body['error']['message']
38
+ MailerLite::Utils.presence(message)
21
39
  end
22
40
  end
23
41
 
@@ -25,7 +43,7 @@ module MailerLite
25
43
  class BadRequest < Error
26
44
  # Default error message.
27
45
  def to_s
28
- 'Missing a required parameter or calling invalid method'
46
+ @message || 'Missing a required parameter or calling invalid method'
29
47
  end
30
48
  end
31
49
 
@@ -33,7 +51,7 @@ module MailerLite
33
51
  class Unauthorized < Error
34
52
  # Default error message.
35
53
  def to_s
36
- 'Invalid API key provided'
54
+ @message || 'Invalid API key provided'
37
55
  end
38
56
  end
39
57
 
@@ -41,7 +59,7 @@ module MailerLite
41
59
  class NotFound < Error
42
60
  # Default error message.
43
61
  def to_s
44
- "Can't find requested items"
62
+ @message || "Can't find requested items"
45
63
  end
46
64
  end
47
65
 
@@ -49,7 +67,7 @@ module MailerLite
49
67
  class InternalServerError < Error
50
68
  # Default error message.
51
69
  def to_s
52
- 'The server encountered an unexpected condition'
70
+ @message || 'The server encountered an unexpected condition'
53
71
  end
54
72
  end
55
73
  end
@@ -18,7 +18,8 @@ module MailerLite
18
18
 
19
19
  def underscore_hash_keys(hash)
20
20
  hash.each_with_object({}) do |(k, v), new_hash|
21
- new_hash[k.underscore] = updated_response(v)
21
+ key = MailerLite::Utils.underscore(k.to_s)
22
+ new_hash[key] = updated_response(v)
22
23
  end
23
24
  end
24
25
  end
@@ -0,0 +1,29 @@
1
+ module MailerLite
2
+ module Utils
3
+ BLANK_RE = /\A[[:space:]]*\z/
4
+
5
+ class << self
6
+ def underscore(string)
7
+ string.gsub(/::/, '/')
8
+ .gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
9
+ .gsub(/([a-z\d])([A-Z])/, '\1_\2')
10
+ .tr('-', '_')
11
+ .downcase
12
+ end
13
+
14
+ def blank?(obj)
15
+ return !!BLANK_RE.match(obj) if obj.is_a?(String)
16
+
17
+ obj.respond_to?(:empty?) ? !!obj.empty? : !obj
18
+ end
19
+
20
+ def present?(obj)
21
+ !blank?(obj)
22
+ end
23
+
24
+ def presence(obj)
25
+ obj if present?(obj)
26
+ end
27
+ end
28
+ end
29
+ end
@@ -1,4 +1,4 @@
1
1
  module MailerLite
2
2
  # @return [String] Version number.
3
- VERSION = '1.1.0'.freeze
3
+ VERSION = '1.2.0'.freeze
4
4
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mailerlite
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justas Palumickas
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-04-05 00:00:00.000000000 Z
11
+ date: 2017-04-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -114,12 +114,12 @@ files:
114
114
  - lib/mailerlite/clients/subscribers.rb
115
115
  - lib/mailerlite/configuration.rb
116
116
  - lib/mailerlite/connection.rb
117
- - lib/mailerlite/core_ext/string.rb
118
117
  - lib/mailerlite/error.rb
119
118
  - lib/mailerlite/mash.rb
120
119
  - lib/mailerlite/middleware/fix_unparsed_json.rb
121
120
  - lib/mailerlite/middleware/raise_error.rb
122
121
  - lib/mailerlite/middleware/underscore_keys.rb
122
+ - lib/mailerlite/utils.rb
123
123
  - lib/mailerlite/version.rb
124
124
  - mailerlite.gemspec
125
125
  homepage: https://github.com/jpalumickas/mailerlite-ruby
@@ -1,10 +0,0 @@
1
- # Custom String extensions
2
- class String
3
- def underscore
4
- gsub(/::/, '/')
5
- .gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
6
- .gsub(/([a-z\d])([A-Z])/, '\1_\2')
7
- .tr('-', '_')
8
- .downcase
9
- end
10
- end