zoomus 0.0.7 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/lib/zoomus.rb CHANGED
@@ -2,6 +2,7 @@ require 'zoomus/utils'
2
2
  require 'zoomus/actions/user'
3
3
  require 'zoomus/actions/meeting'
4
4
  require 'zoomus/client'
5
+ require 'zoomus/error'
5
6
 
6
7
  module Zoomus
7
8
 
@@ -3,23 +3,25 @@ module Zoomus
3
3
  module Meeting
4
4
 
5
5
  def meeting_list(*args)
6
- options = args.extract_options!
6
+ options = extract_options!(args)
7
7
  require_params(:host_id, options)
8
8
  parse_response self.class.post("/meeting/list", :query => options)
9
9
  end
10
10
 
11
11
  def meeting_create(*args)
12
- options = args.extract_options!
12
+ options = extract_options!(args)
13
13
  require_params([:host_id, :topic, :type], options)
14
14
  parse_response self.class.post("/meeting/create", :query => options)
15
15
  end
16
16
 
17
17
  def meeting_update(*args)
18
- options = args.extract_options!
18
+ options = extract_options!(args)
19
19
  require_params([:id, :host_id, :topic, :type], options)
20
20
  parse_response self.class.post("/meeting/update", :query => options)
21
21
  end
22
22
 
23
+ Utils::define_bang_methods(self)
24
+
23
25
  end
24
26
  end
25
- end
27
+ end
@@ -7,11 +7,19 @@ module Zoomus
7
7
  end
8
8
 
9
9
  def user_create(*args)
10
- options = args.extract_options!
10
+ options = extract_options!(args)
11
11
  require_params([:type, :email], options)
12
12
  parse_response self.class.post("/user/create", :query => options)
13
13
  end
14
14
 
15
+ def user_custcreate(*args)
16
+ options = extract_options!(args)
17
+ require_params([:type, :email], options)
18
+ parse_response self.class.post("/user/custcreate", :query => options)
19
+ end
20
+
21
+ Utils::define_bang_methods(self)
22
+
15
23
  end
16
24
  end
17
- end
25
+ end
data/lib/zoomus/client.rb CHANGED
@@ -3,9 +3,9 @@ require 'json'
3
3
 
4
4
  module Zoomus
5
5
  class Client
6
-
6
+
7
7
  include HTTParty
8
-
8
+
9
9
  include Utils
10
10
  include Actions::User
11
11
  include Actions::Meeting
@@ -14,11 +14,11 @@ module Zoomus
14
14
 
15
15
  def initialize(*args)
16
16
 
17
- options = args.extract_options!
17
+ options = extract_options!(args)
18
18
 
19
19
  raise argument_error("api_key and api_secret") unless options[:api_key] and options[:api_secret]
20
20
 
21
- self.class.default_params :api_key => options[:api_key],
21
+ self.class.default_params :api_key => options[:api_key],
22
22
  :api_secret => options[:api_secret]
23
23
  end
24
24
 
@@ -0,0 +1,3 @@
1
+ module Zoomus
2
+ class Error < StandardError; end
3
+ end
@@ -1,9 +1,4 @@
1
1
  module Zoomus
2
2
  module Interface
3
-
4
-
5
-
6
-
7
-
8
3
  end
9
- end
4
+ end
data/lib/zoomus/utils.rb CHANGED
@@ -1,30 +1,47 @@
1
1
  module Zoomus
2
2
  module Utils
3
+
3
4
  private
4
- def argument_error(name)
5
- name ? ArgumentError.new("You must provide #{name}") : ArgumentError
5
+
6
+ def argument_error(name)
7
+ name ? ArgumentError.new("You must provide #{name}") : ArgumentError
8
+ end
9
+
10
+ def raise_if_error!(response)
11
+ if response["error"]
12
+ raise Error.new(response["error"]["message"])
13
+ else
14
+ response
6
15
  end
16
+ end
17
+
18
+ def parse_response(http_response)
19
+ response = http_response.parsed_response
20
+ # Mocked response returns a string
21
+ response.kind_of?(Hash) ? response : JSON.parse(response)
22
+ end
7
23
 
8
- def parse_response(http_response)
9
- response = http_response.parsed_response
10
- # Mocked response returns a string
11
- response.kind_of?(Hash) ? response : JSON.parse(response)
24
+ def require_params(params, options)
25
+ params = [params] unless params.is_a? Array
26
+ params.each do |param|
27
+ unless options[param]
28
+ raise argument_error(param.to_s)
29
+ break
30
+ end
12
31
  end
32
+ end
13
33
 
14
- def require_params(params, options)
15
- params = [params] unless params.is_a? Array
16
- params.each do |param|
17
- unless options[param]
18
- raise argument_error(param.to_s)
19
- break
20
- end
34
+ # Dinamically defines bang methods for Actions modules
35
+ def self.define_bang_methods(klass)
36
+ klass.instance_methods.each do |m|
37
+ klass.send(:define_method, "#{m}!") do |*args|
38
+ raise_if_error! send(m, *args)
21
39
  end
22
40
  end
23
- end
24
- end
41
+ end
25
42
 
26
- class Array
27
- def extract_options!
28
- last.is_a?(::Hash) ? pop : {}
43
+ def extract_options!(array)
44
+ array.last.is_a?(::Hash) ? array.pop : {}
45
+ end
29
46
  end
30
- end
47
+ end
@@ -0,0 +1,10 @@
1
+ {
2
+ "id": "eIimBAXqSrWOcB_EOIXTog",
3
+ "email": "foo@bar.com",
4
+ "first_name": "Foo",
5
+ "last_name": "Bar",
6
+ "type": 1,
7
+ "verified": 0,
8
+ "created_at": "2013-04-04T15:57:55Z",
9
+ "token": null
10
+ }
@@ -20,16 +20,16 @@ describe Zoomus::Actions::User do
20
20
  end
21
21
 
22
22
  it "returns a hash" do
23
- expect(@zc.user_create(:email => "foo@bar.com",
24
- :first_name => "Foo",
25
- :last_name => "Bar",
23
+ expect(@zc.user_create(:email => "foo@bar.com",
24
+ :first_name => "Foo",
25
+ :last_name => "Bar",
26
26
  :type => 1)).to be_kind_of(Hash)
27
27
  end
28
28
 
29
29
  it "returns same params" do
30
- res = @zc.user_create(:email => "foo@bar.com",
31
- :first_name => "Foo",
32
- :last_name => "Bar",
30
+ res = @zc.user_create(:email => "foo@bar.com",
31
+ :first_name => "Foo",
32
+ :last_name => "Bar",
33
33
  :type => 1)
34
34
 
35
35
  expect(res["email"]).to eq("foo@bar.com")
@@ -0,0 +1,43 @@
1
+ require 'spec_helper'
2
+
3
+ describe Zoomus::Actions::User do
4
+
5
+ before :all do
6
+ @zc = zoomus_client
7
+ end
8
+
9
+ describe "#user_custcreate action" do
10
+ before :each do
11
+ stub_request(:post, zoomus_url("/user/custcreate")).to_return(:body => json_response("user_custcreate"))
12
+ end
13
+
14
+ it "requires email param" do
15
+ expect{@zc.user_custcreate(:type => 1, :password => "lolcat")}.to raise_error(ArgumentError)
16
+ end
17
+
18
+ it "requires type param" do
19
+ expect{@zc.user_custcreate(:email => "foo@bar.com", :password => "lolcat")}.to raise_error(ArgumentError)
20
+ end
21
+
22
+ it "returns a hash" do
23
+ expect(@zc.user_custcreate(:email => "foo@bar.com",
24
+ :first_name => "Foo",
25
+ :last_name => "Bar",
26
+ :password => "lolcat",
27
+ :type => 1)).to be_kind_of(Hash)
28
+ end
29
+
30
+ it "returns same params" do
31
+ res = @zc.user_custcreate(:email => "foo@bar.com",
32
+ :first_name => "Foo",
33
+ :last_name => "Bar",
34
+ :password => "lolcat",
35
+ :type => 1)
36
+
37
+ expect(res["email"]).to eq("foo@bar.com")
38
+ expect(res["first_name"]).to eq("Foo")
39
+ expect(res["last_name"]).to eq("Bar")
40
+ expect(res["type"]).to eq(1)
41
+ end
42
+ end
43
+ end
@@ -21,4 +21,4 @@ describe Zoomus::Client do
21
21
  expect(Zoomus::Client.new(:api_key => "xxx", :api_secret => "xxx")).to be_an_instance_of(Zoomus::Client)
22
22
  end
23
23
  end
24
- end
24
+ end
@@ -0,0 +1,15 @@
1
+ require 'spec_helper'
2
+
3
+ describe Zoomus::Utils do
4
+
5
+ describe "#argument_error"
6
+
7
+ describe "#raise_if_error!"
8
+
9
+ describe "#parse_response"
10
+
11
+ describe "#require_params"
12
+
13
+ describe "#extract_options!"
14
+
15
+ end
data/spec/spec_helper.rb CHANGED
@@ -21,4 +21,4 @@ end
21
21
 
22
22
  def zoomus_client
23
23
  Zoomus.new(:api_key => "xxx", :api_secret => "xxx")
24
- end
24
+ end
data/zoomus.gemspec CHANGED
@@ -16,5 +16,5 @@ Gem::Specification.new do |gem|
16
16
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
17
17
  gem.name = 'zoomus'
18
18
  gem.require_paths = ['lib']
19
- gem.version = '0.0.7'
19
+ gem.version = '0.1.0'
20
20
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zoomus
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-03-16 00:00:00.000000000 Z
12
+ date: 2013-04-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: httparty
16
- requirement: &80098480 !ruby/object:Gem::Requirement
16
+ requirement: &69721570 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *80098480
24
+ version_requirements: *69721570
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: json
27
- requirement: &80097530 !ruby/object:Gem::Requirement
27
+ requirement: &69721110 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,7 +32,7 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *80097530
35
+ version_requirements: *69721110
36
36
  description: A Ruby wrapper for zoom.us API v1
37
37
  email:
38
38
  - collsmaxim@gmail.com
@@ -49,19 +49,23 @@ files:
49
49
  - lib/zoomus/actions/meeting.rb
50
50
  - lib/zoomus/actions/user.rb
51
51
  - lib/zoomus/client.rb
52
+ - lib/zoomus/error.rb
52
53
  - lib/zoomus/interface.rb
53
54
  - lib/zoomus/utils.rb
54
55
  - spec/fixtures/meeting_create.json
55
56
  - spec/fixtures/meeting_list.json
56
57
  - spec/fixtures/meeting_update.json
57
58
  - spec/fixtures/user_create.json
59
+ - spec/fixtures/user_custcreate.json
58
60
  - spec/fixtures/user_list.json
59
61
  - spec/lib/zoomus/actions/meeting/create_spec.rb
60
62
  - spec/lib/zoomus/actions/meeting/list_spec.rb
61
63
  - spec/lib/zoomus/actions/meeting/update_spec.rb
62
64
  - spec/lib/zoomus/actions/user/create_spec.rb
65
+ - spec/lib/zoomus/actions/user/custcreate_spec.rb
63
66
  - spec/lib/zoomus/actions/user/list_spec.rb
64
67
  - spec/lib/zoomus/client_spec.rb
68
+ - spec/lib/zoomus/utils_spec.rb
65
69
  - spec/spec_helper.rb
66
70
  - zoomus.gemspec
67
71
  homepage: https://github.com/mllocs/zoomus
@@ -93,11 +97,14 @@ test_files:
93
97
  - spec/fixtures/meeting_list.json
94
98
  - spec/fixtures/meeting_update.json
95
99
  - spec/fixtures/user_create.json
100
+ - spec/fixtures/user_custcreate.json
96
101
  - spec/fixtures/user_list.json
97
102
  - spec/lib/zoomus/actions/meeting/create_spec.rb
98
103
  - spec/lib/zoomus/actions/meeting/list_spec.rb
99
104
  - spec/lib/zoomus/actions/meeting/update_spec.rb
100
105
  - spec/lib/zoomus/actions/user/create_spec.rb
106
+ - spec/lib/zoomus/actions/user/custcreate_spec.rb
101
107
  - spec/lib/zoomus/actions/user/list_spec.rb
102
108
  - spec/lib/zoomus/client_spec.rb
109
+ - spec/lib/zoomus/utils_spec.rb
103
110
  - spec/spec_helper.rb