savon_model 0.1.2 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,9 @@
1
+ .DS_Store
2
+ .yardoc
3
+ doc
4
+ coverage
5
+ tmp
6
+ *~
7
+ *.gem
8
+ .bundle
9
+ Gemfile.lock
data/Gemfile.lock CHANGED
@@ -24,7 +24,7 @@ GEM
24
24
  rspec-mocks (2.0.1)
25
25
  rspec-core (~> 2.0.1)
26
26
  rspec-expectations (~> 2.0.1)
27
- savon (0.8.0.alpha.2)
27
+ savon (0.8.0.beta.1)
28
28
  builder (~> 2.1.2)
29
29
  crack (~> 0.1.8)
30
30
  httpi (>= 0.6.0)
@@ -35,5 +35,5 @@ PLATFORMS
35
35
  DEPENDENCIES
36
36
  mocha (~> 0.9.8)
37
37
  rspec (~> 2.0.0)
38
- savon (~> 0.8.0.alpha.1)
38
+ savon (~> 0.8.0.beta.1)
39
39
  savon_model!
@@ -5,7 +5,7 @@ module Savon
5
5
  module SOAP
6
6
  class Response
7
7
 
8
- # Returns the +original_hash+
8
+ # Returns the original result of <tt>Savon::SOAP::Response#to_hash</tt>.
9
9
  def new_hash
10
10
  @new_hash ||= response_pattern original_hash
11
11
  end
@@ -13,6 +13,7 @@ module Savon
13
13
  alias_method :original_hash, :to_hash
14
14
  alias_method :to_hash, :new_hash
15
15
 
16
+ # Returns the response Hash as an Array.
16
17
  def to_array
17
18
  @array ||= begin
18
19
  array = to_hash.kind_of?(Array) ? to_hash : [to_hash]
data/lib/savon/model.rb CHANGED
@@ -2,34 +2,47 @@ require "savon"
2
2
  require "savon/ext/response"
3
3
 
4
4
  module Savon
5
+
6
+ # = Savon::Model
7
+ #
8
+ # Model for SOAP service oriented applications.
5
9
  module Model
6
10
 
7
- VERSION = "0.1.2"
11
+ VERSION = "0.2.0"
8
12
 
9
13
  class << self
10
14
 
15
+ # Returns the response pattern to apply.
11
16
  def response_pattern
12
17
  @response_pattern ||= []
13
18
  end
14
19
 
20
+ # Sets the response pattern. This is required to be an Array of Regexps or Symbols.
15
21
  attr_writer :response_pattern
16
22
 
17
23
  end
18
24
 
19
25
  module ClassMethods
20
26
 
27
+ # Returns a memoized <tt>Savon::Client</tt> instance. Accepts a block and passes it
28
+ # to <tt>Savon::Client.new</tt> when called for the first time.
21
29
  def client(&block)
22
30
  @@client ||= Savon::Client.new &block
23
31
  end
24
32
 
33
+ # Sets the SOAP endpoint.
25
34
  def endpoint(uri)
26
35
  client.wsdl.endpoint = uri
27
36
  end
28
37
 
38
+ # Sets the target namespace.
29
39
  def namespace(uri)
30
40
  client.wsdl.namespace = uri
31
41
  end
32
42
 
43
+ # Accepts one or more SOAP actions and generates both class and instance methods named
44
+ # after the given actions. Each generated method accepts an optional SOAP body Hash and
45
+ # a block to be passed to <tt>Savon::Client#request</tt> and executes a SOAP request.
33
46
  def actions(*args)
34
47
  args.each do |arg|
35
48
  define_class_action arg
@@ -41,16 +54,16 @@ module Savon
41
54
 
42
55
  def define_class_action(action)
43
56
  instance_eval %Q{
44
- def #{action}(body = nil, &block)
45
- client.request :wsdl, :#{action}, :body => body, &block
57
+ def #{action.to_s.snakecase}(body = nil, &block)
58
+ client.request :wsdl, #{action.inspect}, :body => body, &block
46
59
  end
47
60
  }
48
61
  end
49
62
 
50
63
  def define_instance_action(action)
51
64
  class_eval %Q{
52
- def #{action}(body = nil, &block)
53
- self.class.#{action} body, &block
65
+ def #{action.to_s.snakecase}(body = nil, &block)
66
+ self.class.#{action.to_s.snakecase} body, &block
54
67
  end
55
68
  }
56
69
  end
@@ -61,6 +74,7 @@ module Savon
61
74
  base.extend ClassMethods
62
75
  end
63
76
 
77
+ # Returns a memoized <tt>Savon::Client</tt> instance.
64
78
  def client
65
79
  self.class.client
66
80
  end
data/savon_model.gemspec CHANGED
@@ -14,7 +14,7 @@ Gem::Specification.new do |s|
14
14
 
15
15
  s.rubyforge_project = s.name
16
16
 
17
- s.add_development_dependency "savon", "~> 0.8.0.alpha.1"
17
+ s.add_development_dependency "savon", "~> 0.8.0.beta.1"
18
18
 
19
19
  s.add_development_dependency "rspec", "~> 2.0.0"
20
20
  s.add_development_dependency "mocha", "~> 0.9.8"
@@ -34,7 +34,7 @@ describe Savon::Model do
34
34
  end
35
35
 
36
36
  describe ".actions" do
37
- before(:all) { model.actions :get_user, :get_all_users }
37
+ before(:all) { model.actions :get_user, "GetAllUsers" }
38
38
 
39
39
  it "should define class methods each action" do
40
40
  model.should respond_to(:get_user, :get_all_users)
@@ -49,6 +49,11 @@ describe Savon::Model do
49
49
  model.client.expects(:request).with(:wsdl, :get_user, :body => { :id => 1 })
50
50
  model.get_user :id => 1
51
51
  end
52
+
53
+ it "should accept and pass Strings for action names" do
54
+ model.client.expects(:request).with(:wsdl, "GetAllUsers", :body => { :id => 1 })
55
+ model.get_all_users :id => 1
56
+ end
52
57
  end
53
58
 
54
59
  context "(instance-level)" do
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: savon_model
3
3
  version: !ruby/object:Gem::Version
4
- hash: 31
4
+ hash: 23
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
- - 1
9
8
  - 2
10
- version: 0.1.2
9
+ - 0
10
+ version: 0.2.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Daniel Harrington
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-10-26 00:00:00 +02:00
18
+ date: 2010-10-30 00:00:00 +02:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -26,14 +26,14 @@ dependencies:
26
26
  requirements:
27
27
  - - ~>
28
28
  - !ruby/object:Gem::Version
29
- hash: -3702664226
29
+ hash: 62196257
30
30
  segments:
31
31
  - 0
32
32
  - 8
33
33
  - 0
34
- - alpha
34
+ - beta
35
35
  - 1
36
- version: 0.8.0.alpha.1
36
+ version: 0.8.0.beta.1
37
37
  type: :development
38
38
  version_requirements: *id001
39
39
  - !ruby/object:Gem::Dependency
@@ -77,6 +77,7 @@ extensions: []
77
77
  extra_rdoc_files: []
78
78
 
79
79
  files:
80
+ - .gitignore
80
81
  - .rspec
81
82
  - Gemfile
82
83
  - Gemfile.lock