zuora4r 1.1.2 → 1.2.1

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.1.2
1
+ 1.2.1
data/custom_fields.yml CHANGED
@@ -8,7 +8,9 @@ Product:
8
8
  NumInstances
9
9
  InclusionList
10
10
  AvailabilityList
11
+ ProductType
11
12
  ProductRatePlan:
13
+ NumInstances
12
14
  Slug
13
15
  NextSlug
14
16
  Duration
@@ -76,9 +76,31 @@ class Soap < ::SOAP::RPC::Driver
76
76
  super(endpoint_url, nil)
77
77
  self.mapping_registry = DefaultMappingRegistry::EncodedRegistry
78
78
  self.literal_mapping_registry = DefaultMappingRegistry::LiteralRegistry
79
- init_methods
80
79
  end
81
80
 
81
+
82
+
83
+ def do_init(custom_fields)
84
+
85
+ if custom_fields
86
+ custom_fields.each do |key, value|
87
+ fields = value.strip.split(/\s+/).map { |e| "#{e}__c" }
88
+ type_class = Object.const_get('ZUORA').const_get(key)
89
+
90
+ product_definition = self.literal_mapping_registry.schema_definition_from_class(type_class)
91
+
92
+ fields.each do |field|
93
+ field_uncapitalize = field.gsub(/^\w/) { |i| i.downcase }
94
+ element_definition_input = [field_uncapitalize, ["SOAP::SOAPString", XSD::QName.new(ZUORA::DefaultMappingRegistry::NsObjectApiZuoraCom, field)], [0, 1]]
95
+ element_schema_definition = ::SOAP::Mapping::parse_schema_element_definition(element_definition_input, nil)
96
+ product_definition.elements << element_schema_definition
97
+ end
98
+ end
99
+ end
100
+
101
+ init_methods
102
+ end
103
+
82
104
  private
83
105
 
84
106
  def init_methods
data/lib/zuora_client.rb CHANGED
@@ -43,9 +43,25 @@ class SOAP::Header::HandlerSet
43
43
  end
44
44
 
45
45
  class ZuoraClient
46
+
46
47
  PROD_URL = 'https://www.zuora.com/apps/services/a/27.0'
47
48
  SANDBOX_URL = 'https://apisandbox.zuora.com/apps/services/a/27.0'
48
49
 
50
+ def self.parse_custom_fields
51
+ custom_fields = YAML.load_file(File.dirname(__FILE__) + '/../custom_fields.yml')
52
+ if custom_fields
53
+ custom_fields.each do |key, value|
54
+ fields = value.strip.split(/\s+/).map { |e| "#{e}__c" }
55
+ type_class = Object.const_get('ZUORA').const_get(key)
56
+ fields.each do |field|
57
+ custom_field = field.gsub(/^\w/) { |i| i.downcase }
58
+ type_class.send :attr_accessor, custom_field
59
+ end
60
+ end
61
+ end
62
+ custom_fields
63
+ end
64
+
49
65
  def initialize(username, password, url=PROD_URL)
50
66
  $ZUORA_USER = username
51
67
  $ZUORA_PASSWORD = password
@@ -54,19 +70,8 @@ class ZuoraClient
54
70
  @client = ZuoraInterface.new
55
71
 
56
72
  # add custom fields, if any
57
- custom_fields = YAML.load_file(File.dirname(__FILE__) + '/../custom_fields.yml')
58
- if custom_fields
59
- custom_fields.each do |key, value|
60
- fields = value.strip.split(/\s+/).map { |e| "#{e}__c" }
61
- type_class = Object.const_get('ZUORA').const_get(key)
62
- fields.each do |field|
63
- custom_field = field.gsub(/^\w/) { |i| i.downcase }
64
- type_class.send :attr_accessor, custom_field
65
- end
66
- end
67
- end
68
-
69
- @client.session_start
73
+ custom_fields = ZuoraClient.parse_custom_fields
74
+ @client.session_start(custom_fields)
70
75
  end
71
76
 
72
77
  def query(query_string)
@@ -157,8 +157,9 @@ class ZuoraInterface
157
157
  @session.session = @z.login(loginargs).result.session
158
158
  end
159
159
 
160
- def session_start
160
+ def session_start(custom_fields)
161
161
  get_driver
162
+ @z.do_init(custom_fields)
162
163
  session_cleanup
163
164
  login
164
165
  @z.headerhandler.set @session
data/zuora4r.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{zuora4r}
8
- s.version = "1.1.1"
8
+ s.version = "1.2.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Cloocher"]
12
- s.date = %q{2011-04-26}
12
+ s.date = %q{2011-06-01}
13
13
  s.description = %q{A client for Zuora API}
14
14
  s.email = %q{gene@ning.com}
15
15
  s.executables = ["zuora-query", "zuora-create", "zuora-update", "zuora-bill-run", "zuora-payment-run", "zuora-delete", "zq"]
@@ -40,15 +40,10 @@ Gem::Specification.new do |s|
40
40
  s.homepage = %q{http://github.com/cloocher/zuora4r}
41
41
  s.require_paths = ["lib"]
42
42
  s.requirements = ["none"]
43
- s.rubygems_version = %q{1.3.7}
43
+ s.rubygems_version = %q{1.6.2}
44
44
  s.summary = %q{Zuora4r}
45
- s.test_files = [
46
- "test/helper.rb",
47
- "test/test_zuora_client.rb"
48
- ]
49
45
 
50
46
  if s.respond_to? :specification_version then
51
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
52
47
  s.specification_version = 3
53
48
 
54
49
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zuora4r
3
3
  version: !ruby/object:Gem::Version
4
- hash: 23
5
- prerelease: false
4
+ hash: 29
5
+ prerelease:
6
6
  segments:
7
7
  - 1
8
- - 1
9
8
  - 2
10
- version: 1.1.2
9
+ - 1
10
+ version: 1.2.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - Cloocher
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-04-26 00:00:00 -07:00
18
+ date: 2011-06-01 00:00:00 -07:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -86,8 +86,6 @@ files:
86
86
  - zuora4r.gemspec
87
87
  - LICENSE
88
88
  - README.rdoc
89
- - test/helper.rb
90
- - test/test_zuora_client.rb
91
89
  has_rdoc: true
92
90
  homepage: http://github.com/cloocher/zuora4r
93
91
  licenses: []
@@ -118,10 +116,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
118
116
  requirements:
119
117
  - none
120
118
  rubyforge_project:
121
- rubygems_version: 1.3.7
119
+ rubygems_version: 1.6.2
122
120
  signing_key:
123
121
  specification_version: 3
124
122
  summary: Zuora4r
125
- test_files:
126
- - test/helper.rb
127
- - test/test_zuora_client.rb
123
+ test_files: []
124
+
data/test/helper.rb DELETED
@@ -1,6 +0,0 @@
1
- require 'rubygems'
2
- require 'test/unit'
3
-
4
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
5
- $LOAD_PATH.unshift(File.dirname(__FILE__))
6
- require 'zuora_client'
@@ -1,11 +0,0 @@
1
- require 'helper'
2
-
3
- class TestZuoraClient < Test::Unit::TestCase
4
- def test_query
5
- z = ZuoraClient.new('tester', 'qaqa')
6
- result = z.query('select Id, Name, SKU, CreatedDate from Product')
7
- assert_not_nil(result)
8
- assert(result.size > 0)
9
- end
10
-
11
- end