nexmos 0.2 → 0.3

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