nexmos 0.2 → 0.3

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: d338a3229ac17831cea6c50deae59d12fe198ab6
4
- data.tar.gz: d8a6b6ce761fbc1a712a9d85a889a0543740ec4b
3
+ metadata.gz: f014945d28d7492c96c5f96e32116c3569e8092a
4
+ data.tar.gz: 0ad507ebe06159c30b19e588a1aff0192de44acb
5
5
  SHA512:
6
- metadata.gz: c82e6e6b05be226022d5b42aa3c3cb75b8829259c89d8de909f862c7963c62d20b08ef2f72044ae04786ca22e1280f367c68f0f8781ae3a7e50333f8766f16c7
7
- data.tar.gz: efb8d6f1da615b434dda0787e7a9501e002641ea50054a84098198ecb52e3ba6c4f237b3d2ebab03fe0dc1ca27bb381baae751177dfaa399f51648653490c1c6
6
+ metadata.gz: f29f1e3d43258f758ad848f12c6648e43b72cc1ae08ef32ae4c85d4f8702bea2bf3d1f29e20f3cedff09baca25fd3e0d7d4cadea8e2cce05d43ffe0935fa193d
7
+ data.tar.gz: 20f664251088b326b2b9306d74ba98deebdcc069960843ec12fa3af11ebc5fa759df2d1f1b50fb6ace7216db4a585d1b05be4d70596f3ab3f8dfe3ec63f143eb
data/.gitignore CHANGED
@@ -4,6 +4,7 @@
4
4
  .config
5
5
  .yardoc
6
6
  Gemfile.lock
7
+ gemfiles/*.lock
7
8
  InstalledFiles
8
9
  _yardoc
9
10
  coverage
@@ -0,0 +1,17 @@
1
+ AllCops:
2
+ Include:
3
+ - '**/Rakefile'
4
+ Exclude:
5
+ - 'spec/**/*'
6
+ Metrics/LineLength:
7
+ Max: 99
8
+ Style/FileName:
9
+ Enabled: false
10
+ Style/ModuleFunction:
11
+ Enabled: false
12
+ Style/Encoding:
13
+ Enabled: false
14
+ Documentation:
15
+ Enabled: false
16
+ Metrics/MethodLength:
17
+ Max: 15
@@ -1,7 +1,16 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 1.9.3
4
3
  - 2.0.0
4
+ - 2.1
5
5
  - ruby-head
6
6
  - jruby-19mode # JRuby in 1.9 mode
7
- - rbx-19mode
7
+ - rbx-2
8
+ gemfile:
9
+ - gemfiles/activesupport_3.2.gemfile
10
+ - gemfiles/activesupport_4.0.gemfile
11
+ - gemfiles/activesupport_4.1.gemfile
12
+ - gemfiles/activesupport_4.2.gemfile
13
+ matrix:
14
+ allow_failures:
15
+ - rvm: ruby-head
16
+ bundler_args: --without local_development
@@ -0,0 +1,15 @@
1
+ appraise "activesupport-3.2" do
2
+ gem "activesupport", "~> 3.2.0"
3
+ end
4
+
5
+ appraise "activesupport-4.0" do
6
+ gem "activesupport", "~> 4.0.0"
7
+ end
8
+
9
+ appraise "activesupport-4.1" do
10
+ gem "activesupport", "~> 4.1.0"
11
+ end
12
+
13
+ appraise "activesupport-4.2" do
14
+ gem "activesupport", "~> 4.2.0.beta4"
15
+ end
data/Gemfile CHANGED
@@ -2,9 +2,20 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in nexmo-client.gemspec
4
4
  gemspec
5
- group :development, :test do
5
+
6
+
7
+ group :test do
8
+ gem 'simplecov', '>= 0.9.0', :require => false
9
+ gem 'coveralls', :require => false
10
+ end
11
+
12
+ group :local_development do
13
+ gem 'terminal-notifier-guard', require: false if RUBY_PLATFORM.downcase.include?('darwin')
14
+ gem 'guard-rspec', '>= 4.3.1' ,require: false
15
+ gem 'guard-bundler', require: false
16
+ gem 'guard-preek', require: false
17
+ gem 'guard-rubocop', require: false
18
+ gem 'guard-reek', github: 'pericles/guard-reek', require: false
6
19
  gem 'pry'
7
- gem 'rake'
8
- gem 'webmock'
9
- gem 'coveralls', require: false
20
+ gem 'appraisal'
10
21
  end
@@ -0,0 +1,20 @@
1
+ guard 'rspec', cmd: 'rspec' do
2
+ watch(%r{^spec/.+_spec\.rb$})
3
+ watch(%r{^lib/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
4
+ watch('spec/spec_helper.rb') { "spec" }
5
+ end
6
+
7
+ guard 'bundler' do
8
+ watch('Gemfile')
9
+ watch('ar_json_serialize.gemspec')
10
+ end
11
+
12
+ guard :rubocop do
13
+ watch(%r{.+\.rb$})
14
+ watch(%r{(?:.+/)?\.rubocop\.yml$}) { |m| File.dirname(m[0]) }
15
+ end
16
+
17
+ guard :preek, run_all_dir: 'lib' do
18
+ watch(/^lib\/(.*).rb/)
19
+ end
20
+
data/Rakefile CHANGED
@@ -1,6 +1,6 @@
1
- require "bundler/gem_tasks"
1
+ require 'bundler/gem_tasks'
2
2
  require 'rspec/core/rake_task'
3
3
 
4
4
  RSpec::Core::RakeTask.new(:spec)
5
5
 
6
- task :default => :spec
6
+ task default: :spec
@@ -0,0 +1,11 @@
1
+ ---
2
+ NestedIterators:
3
+ max_allowed_nesting: 2
4
+ UtilityFunction:
5
+ enabled: false
6
+ IrresponsibleModule:
7
+ enabled: false
8
+ DuplicateMethodCall:
9
+ max_calls: 5
10
+ FeatureEnvy:
11
+ enabled: false
@@ -0,0 +1,23 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "activesupport", "~> 3.2.0"
6
+
7
+ group :test do
8
+ gem "simplecov", ">= 0.9.0", :require => false
9
+ gem "coveralls", :require => false
10
+ end
11
+
12
+ group :local_development do
13
+ gem "terminal-notifier-guard", :require => false
14
+ gem "guard-rspec", ">= 4.3.1", :require => false
15
+ gem "guard-bundler", :require => false
16
+ gem "guard-preek", :require => false
17
+ gem "guard-rubocop", :require => false
18
+ gem "guard-reek", :github => "pericles/guard-reek", :require => false
19
+ gem "pry"
20
+ gem "appraisal"
21
+ end
22
+
23
+ gemspec :path => "../"
@@ -0,0 +1,23 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "activesupport", "~> 4.0.0"
6
+
7
+ group :test do
8
+ gem "simplecov", ">= 0.9.0", :require => false
9
+ gem "coveralls", :require => false
10
+ end
11
+
12
+ group :local_development do
13
+ gem "terminal-notifier-guard", :require => false
14
+ gem "guard-rspec", ">= 4.3.1", :require => false
15
+ gem "guard-bundler", :require => false
16
+ gem "guard-preek", :require => false
17
+ gem "guard-rubocop", :require => false
18
+ gem "guard-reek", :github => "pericles/guard-reek", :require => false
19
+ gem "pry"
20
+ gem "appraisal"
21
+ end
22
+
23
+ gemspec :path => "../"
@@ -0,0 +1,23 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "activesupport", "~> 4.1.0"
6
+
7
+ group :test do
8
+ gem "simplecov", ">= 0.9.0", :require => false
9
+ gem "coveralls", :require => false
10
+ end
11
+
12
+ group :local_development do
13
+ gem "terminal-notifier-guard", :require => false
14
+ gem "guard-rspec", ">= 4.3.1", :require => false
15
+ gem "guard-bundler", :require => false
16
+ gem "guard-preek", :require => false
17
+ gem "guard-rubocop", :require => false
18
+ gem "guard-reek", :github => "pericles/guard-reek", :require => false
19
+ gem "pry"
20
+ gem "appraisal"
21
+ end
22
+
23
+ gemspec :path => "../"
@@ -0,0 +1,23 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "activesupport", "~> 4.2.0.beta4"
6
+
7
+ group :test do
8
+ gem "simplecov", ">= 0.9.0", :require => false
9
+ gem "coveralls", :require => false
10
+ end
11
+
12
+ group :local_development do
13
+ gem "terminal-notifier-guard", :require => false
14
+ gem "guard-rspec", ">= 4.3.1", :require => false
15
+ gem "guard-bundler", :require => false
16
+ gem "guard-preek", :require => false
17
+ gem "guard-rubocop", :require => false
18
+ gem "guard-reek", :github => "pericles/guard-reek", :require => false
19
+ gem "pry"
20
+ gem "appraisal"
21
+ end
22
+
23
+ gemspec :path => "../"
@@ -0,0 +1,19 @@
1
+ require 'faraday_middleware/response/mashify'
2
+
3
+ module FaradayMiddleware
4
+ # Public: Converts parsed response bodies to a Hashie::Trash if they were of
5
+ # Hash or Array type.
6
+ class MashRashify < Mashify
7
+ dependency do
8
+ require 'hashie/mash/rash'
9
+ self.mash_class = ::Hashie::Mash::Rash
10
+ end
11
+ end
12
+ end
13
+
14
+ if Faraday::Middleware.respond_to? :register_middleware
15
+ Faraday::Response.register_middleware mashrashify: FaradayMiddleware::MashRashify
16
+ end
17
+
18
+ # deprecated alias
19
+ Faraday::Response::MashRashify = FaradayMiddleware::MashRashify
@@ -0,0 +1,41 @@
1
+ require 'hashie/mash'
2
+
3
+ module Hashie
4
+ class Mash::Rash < Mash
5
+ protected
6
+
7
+ def convert_key(key) #:nodoc:
8
+ underscore_string(key.to_s)
9
+ end
10
+
11
+ # Unlike its parent Mash, a Rash will convert other Hashie::Hash values to a Rash when assigning
12
+ # instead of respecting the existing subclass
13
+ def convert_value(val, duping = false) #:nodoc:
14
+ case val
15
+ when self.class
16
+ val.dup
17
+ when ::Hash
18
+ val = val.dup if duping
19
+ self.class.new(val)
20
+ when Array
21
+ val.collect { |e| convert_value(e) }
22
+ else
23
+ val
24
+ end
25
+ end
26
+
27
+ # converts a camel_cased string to a underscore string
28
+ # subs spaces with underscores, strips whitespace
29
+ # Same way ActiveSupport does string.underscore
30
+ def underscore_string(str)
31
+ str.to_s.strip
32
+ .gsub(' ', '_')
33
+ .gsub(/::/, '/')
34
+ .gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
35
+ .gsub(/([a-z\d])([A-Z])/, '\1_\2')
36
+ .tr('-', '_')
37
+ .squeeze('_')
38
+ .downcase
39
+ end
40
+ end
41
+ end
@@ -2,6 +2,7 @@ require 'logger'
2
2
  require 'active_support/core_ext/hash'
3
3
  require 'faraday'
4
4
  require 'faraday_middleware'
5
+ require 'faraday_middleware/response/mashrashify'
5
6
  require 'nexmos/version'
6
7
  require 'nexmos/base'
7
8
  module Nexmos
@@ -1,5 +1,5 @@
1
1
  module Nexmos
2
2
  class Account < Base
3
- self.define_api_calls(:account)
3
+ define_api_calls(:account)
4
4
  end
5
- end
5
+ end
@@ -1,11 +1,10 @@
1
1
  module Nexmos
2
2
  class Base
3
-
4
3
  def initialize(key = ::Nexmos.api_key, secret = ::Nexmos.api_secret)
5
- raise 'api_key should be set' if !key.present?
6
- raise 'api_secret should be set' if !secret.present?
4
+ fail 'api_key should be set' unless key.present?
5
+ fail 'api_secret should be set' unless secret.present?
7
6
  @default_params = {
8
- 'api_key' => key,
7
+ 'api_key' => key,
9
8
  'api_secret' => secret
10
9
  }
11
10
  end
@@ -24,23 +23,23 @@ module Nexmos
24
23
 
25
24
  def get_response(args, params)
26
25
  method = args[:method]
27
- url = args[:url]
28
- raise 'url or method params missing' if !method.present? || !url.present?
26
+ url = args[:url]
27
+ fail 'url or method params missing' if !method.present? || !url.present?
29
28
  res = connection.__send__(method, url, params)
30
29
  if res.success?
31
30
  data = if res.body.is_a?(::Hash)
32
31
  res.body.merge(:success? => true)
33
32
  else
34
- ::Hashie::Mash.new({:success? => true})
33
+ ::Hashie::Mash.new(:success? => true)
35
34
  end
36
35
  return data
37
36
  end
38
- failed_res = ::Hashie::Mash.new({:success? => false, :not_authorized? => false, :failed? => false})
37
+ failed_res = ::Hashie::Mash.new(:success? => false, :not_authorized? => false, :failed? => false)
39
38
  case res.status
40
39
  when 401
41
- failed_res.merge! :not_authorized? => true
40
+ failed_res.merge! :not_authorized? => true
42
41
  when 420
43
- failed_res.merge! :failed? => true
42
+ failed_res.merge! :failed? => true
44
43
  end
45
44
  failed_res
46
45
  end
@@ -51,7 +50,7 @@ module Nexmos
51
50
 
52
51
  def camelize_params(params)
53
52
  if params.respond_to?(:transform_keys!)
54
- params.transform_keys!{|key| key.camelize(:lower)}
53
+ params.transform_keys! { |key| key.camelize(:lower) }
55
54
  else
56
55
  params.keys.each do |key|
57
56
  params[key.camelize(:lower)] = params.delete(key)
@@ -60,19 +59,16 @@ module Nexmos
60
59
  end
61
60
 
62
61
  def check_required_params(args, params)
63
- if args[:required]
64
- required = params.slice(*args[:required])
65
- unless required.keys.sort == args[:required].sort
66
- missed = (args[:required] - required.keys).join(',')
67
- raise ArgumentError, "#{missed} params required"
68
- end
69
- end
62
+ return unless args[:required]
63
+ required = params.slice(*args[:required])
64
+ return if required.keys.sort == args[:required].sort
65
+ missed = (args[:required] - required.keys).join(',')
66
+ fail ArgumentError, "#{missed} params required"
70
67
  end
71
68
 
72
69
  class << self
73
-
74
70
  def define_api_calls(key)
75
- ::Nexmos.apis[key].each do |k,v|
71
+ ::Nexmos.apis[key].each do |k, v|
76
72
  define_method(k) do |*args|
77
73
  params = args[0] || {}
78
74
  make_api_call(v, params)
@@ -82,22 +78,22 @@ module Nexmos
82
78
 
83
79
  def faraday_options
84
80
  {
85
- :url => 'https://rest.nexmo.com',
86
- :headers => {
87
- :accept => 'application/json',
88
- :user_agent => ::Nexmos.user_agent
81
+ url: 'https://rest.nexmo.com',
82
+ headers: {
83
+ accept: 'application/json',
84
+ user_agent: ::Nexmos.user_agent
89
85
  }
90
86
  }
91
87
  end
92
88
 
93
89
  def connection
94
90
  @connection ||= Faraday::Connection.new(faraday_options) do |conn|
95
- conn.request :url_encoded
96
- conn.response :rashify
97
- conn.response :json, :content_type => /\bjson$/
98
- conn.adapter Faraday.default_adapter
91
+ conn.request :url_encoded
92
+ conn.response :mashrashify
93
+ conn.response :json, content_type: /\bjson$/
94
+ conn.adapter Faraday.default_adapter
99
95
  end
100
96
  end
101
97
  end # self
102
98
  end # Base
103
- end # Nexmos
99
+ end # Nexmos
@@ -1,5 +1,5 @@
1
1
  module Nexmos
2
2
  class Message < Base
3
- self.define_api_calls(:message)
3
+ define_api_calls(:message)
4
4
  end
5
- end
5
+ end
@@ -1,5 +1,5 @@
1
1
  module Nexmos
2
2
  class Number < Base
3
- self.define_api_calls(:number)
3
+ define_api_calls(:number)
4
4
  end
5
- end
5
+ end