mailerlite 1.1.0 → 1.2.0

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: 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