adwords4r 0.2 → 0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. data/ChangeLog.txt +1 -1
  2. data/Rakefile +21 -10
  3. data/examples/campaign.rb +5 -2
  4. data/examples/get_unit_count.rb +16 -0
  5. data/lib/adwords4r.rb +4 -5
  6. data/lib/adwords4r/v2/AccountService.rb +2 -2
  7. data/lib/adwords4r/v2/AccountServiceDriver.rb +1 -3
  8. data/lib/adwords4r/v2/AdGroupService.rb +1 -1
  9. data/lib/adwords4r/v2/AdGroupServiceDriver.rb +1 -3
  10. data/lib/adwords4r/v2/CampaignService.rb +4 -4
  11. data/lib/adwords4r/v2/CampaignServiceDriver.rb +1 -3
  12. data/lib/adwords4r/v2/CreativeService.rb +1 -1
  13. data/lib/adwords4r/v2/CreativeServiceDriver.rb +1 -3
  14. data/lib/adwords4r/v2/CriterionService.rb +4 -4
  15. data/lib/adwords4r/v2/CriterionServiceDriver.rb +1 -3
  16. data/lib/adwords4r/v2/InfoService.rb +23 -23
  17. data/lib/adwords4r/v2/InfoServiceDriver.rb +1 -3
  18. data/lib/adwords4r/v2/KeywordService.rb +3 -3
  19. data/lib/adwords4r/v2/KeywordServiceDriver.rb +1 -3
  20. data/lib/adwords4r/v2/ReportService.rb +60 -60
  21. data/lib/adwords4r/v2/ReportServiceDriver.rb +1 -3
  22. data/lib/adwords4r/v2/TrafficEstimatorService.rb +24 -24
  23. data/lib/adwords4r/v2/TrafficEstimatorServiceDriver.rb +1 -3
  24. data/lib/adwords4r/v3/AccountService.rb +2 -2
  25. data/lib/adwords4r/v3/AccountServiceDriver.rb +1 -3
  26. data/lib/adwords4r/v3/AdGroupService.rb +1 -1
  27. data/lib/adwords4r/v3/AdGroupServiceDriver.rb +1 -3
  28. data/lib/adwords4r/v3/CampaignService.rb +5 -5
  29. data/lib/adwords4r/v3/CampaignServiceDriver.rb +1 -3
  30. data/lib/adwords4r/v3/CreativeService.rb +1 -1
  31. data/lib/adwords4r/v3/CreativeServiceDriver.rb +1 -3
  32. data/lib/adwords4r/v3/CriterionService.rb +4 -4
  33. data/lib/adwords4r/v3/CriterionServiceDriver.rb +1 -3
  34. data/lib/adwords4r/v3/InfoService.rb +23 -23
  35. data/lib/adwords4r/v3/InfoServiceDriver.rb +1 -3
  36. data/lib/adwords4r/v3/KeywordService.rb +3 -3
  37. data/lib/adwords4r/v3/KeywordServiceDriver.rb +1 -3
  38. data/lib/adwords4r/v3/KeywordToolService.rb +1 -1
  39. data/lib/adwords4r/v3/KeywordToolServiceDriver.rb +1 -3
  40. data/lib/adwords4r/v3/ReportService.rb +60 -60
  41. data/lib/adwords4r/v3/ReportServiceDriver.rb +1 -3
  42. data/lib/adwords4r/v3/TrafficEstimatorService.rb +23 -23
  43. data/lib/adwords4r/v3/TrafficEstimatorServiceDriver.rb +1 -3
  44. metadata +74 -67
data/ChangeLog.txt CHANGED
@@ -1,4 +1,4 @@
1
- 0.2 added packaging and made it a gem, for easy installation.
1
+ 0.2 added packaging, made it a gem, and added a setup program, for easy installation in all configurations (gem and non gem).
2
2
  0.1 -first version, not fully tested
3
3
  works for Campaigns
4
4
 
data/Rakefile CHANGED
@@ -20,7 +20,7 @@ end
20
20
 
21
21
  CLOBBER.include('pkg')
22
22
 
23
- CURRENT_VERSION = '0.2'
23
+ CURRENT_VERSION = '0.3'
24
24
  PKG_VERSION = ENV['REL'] ? ENV['REL'] : CURRENT_VERSION
25
25
 
26
26
  SRC_RB = FileList['lib/**/*.rb']
@@ -62,6 +62,7 @@ task :generate do
62
62
  worker.opt.update(getWsdlOpt(name))
63
63
  worker.run
64
64
  fixImport(v, File.join(gendir, "#{name}Driver.rb"))
65
+ #fixImport(v, File.join(gendir, "#{name}.rb"))
65
66
  end
66
67
  end
67
68
  end
@@ -71,22 +72,18 @@ def fixImport(version, file)
71
72
  tempfile = file + '.tmp'
72
73
  outfile = File.new(tempfile,"w")
73
74
  File.open(file, "r") do |infile|
74
- req = 0
75
+ # outfile.puts "module AdWords"
76
+ #outfile.puts "module AdWordsV#{version}"
75
77
  infile.each do |l|
76
- if (l =~/require/) then
78
+ if (l =~/require.*Service.rb/) then
77
79
  # outfile.puts l.gsub(/require \'(.*)Service.rb\'/, 'require #\'adwords4r/' + vname + '/\1Service\'')
78
80
  outfile.puts l.gsub(/require \'(.*)Service.rb\'/, 'require \'adwords4r/' + vname + '/\1Service\'')
79
- req = req + 1
80
81
  else
81
- if (req == 2) then
82
- outfile.puts "module AdWordsV#{version}"
83
- req = req + 1
84
- end
85
82
  outfile.puts l
86
83
  end
87
84
  end
85
+ # outfile.puts "end"
88
86
  end
89
- outfile.puts "end"
90
87
  outfile.close
91
88
  File.rename(tempfile, file)
92
89
  end
@@ -117,11 +114,25 @@ def getfile(host, path)
117
114
  https.start { |w| w.get2(path).body }
118
115
  end
119
116
 
117
+ def fix_attribute(text, name, type)
118
+ text.gsub!(Regexp.new("#{name}=\"#{type}\""),"#{name}=\"xsd:#{type}\"")
119
+ end
120
+
121
+ def fixWsdl(wsdl)
122
+ ['type', 'base'].each {|name| ['long', 'string', 'date', 'int', 'boolean'].each {|type| fix_attribute(wsdl, name, type)}}
123
+ schema_ns = "xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\""
124
+ if wsdl !~ Regexp.new(schema_ns)
125
+ wsdl.gsub!(/(<wsdl:definitions[^>]*)>/, '\1 ' + schema_ns + '>')
126
+ end
127
+ return wsdl
128
+ #wsdl.gsub(/type=\"long\"/, 'type="xsd:long"')
129
+ end
130
+
120
131
  # Saves this document to the specified @var path.
121
132
  #doesn't create the file if contains markup for google 404 page
122
133
  def save(content, path)
123
134
  if content !~ /<H2>Error 404<\/H2>/
124
- File::open(path, 'w') {|f| f.write(content)}
135
+ File::open(path, 'w') {|f| f.write(fixWsdl(content))}
125
136
  end
126
137
  end
127
138
 
data/examples/campaign.rb CHANGED
@@ -20,11 +20,14 @@ end
20
20
  begin
21
21
  adwords = AdWords::API.new
22
22
  #pp adwords.thismethodDoesNotExist()
23
- adwords.getAllAdWordsCampaigns(123).each {|c| puts dumpObj(c)}
23
+ res = adwords.getAllAdWordsCampaigns(123)
24
+ pp res
25
+ res.each {|c| puts dumpObj(c)}
26
+ #adwords.getAllAdWordsCampaigns(123).each {|c| puts dumpObj(c)}
24
27
  c = Campaign.new
25
28
  c.dailyBudget = 10000
26
29
  c.status = 'Paused'
27
- c.name = 'Test P@ #{rand(10000}'
30
+ c.name = "Test P@ #{rand(10000)}"
28
31
  pp adwords.addCampaign(c)
29
32
 
30
33
  rescue AdWords::Error::UnknownAPICall => e
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'adwords4r'
4
+ require 'pp'
5
+
6
+ begin
7
+ adwords = AdWords::API.new
8
+ puts "result = #{adwords.getUnitCount(Date.new(2006, 4,1), Date.new(2006,4,13)).getUnitCountReturn}"
9
+
10
+ rescue AdWords::Error::UnknownAPICall => e
11
+ puts e
12
+ rescue AdWords::Error::ApiError => e
13
+ puts e.code
14
+ puts e.message
15
+ end
16
+
data/lib/adwords4r.rb CHANGED
@@ -5,7 +5,6 @@ require 'soap/soap'
5
5
  module AdWords
6
6
 
7
7
  class API
8
-
9
8
  attr_reader :credentials, :drivers, :version
10
9
  @methodMap = Hash.new
11
10
 
@@ -27,10 +26,9 @@ module AdWords
27
26
  def method_missing(m, *args)
28
27
  methodName = m.id2name
29
28
  requestName = AdWords::fix_case_up(m.id2name) # upper first character
30
- param = args[0]
31
-
32
29
  if valid_call?(methodName)
33
- req = eval("#{requestName}.new(param)")
30
+ constructor = eval("#{requestName}.method(\"new\")")
31
+ req = constructor.call(*args)
34
32
  resp = eval("getDriver(methodName).#{methodName}(req)")
35
33
  return resp
36
34
  else
@@ -55,7 +53,8 @@ module AdWords
55
53
  end
56
54
 
57
55
  def prepareDriver(s)
58
- driver = eval("AdWordsV#{@version}::#{getServiceName(s)}.new")
56
+ #driver = eval("AdWordsV#{@version}::#{getServiceName(s)}.new")
57
+ driver = eval("#{getServiceName(s)}.new")
59
58
  @credentials.handlers.each {|h| driver.headerhandler << h}
60
59
  #driver.wiredump_dev = STDOUT if @debug
61
60
  driver.wiredump_file_base = "log"
@@ -476,7 +476,7 @@ class CreditCard
476
476
  @@schema_type = "CreditCard"
477
477
  @@schema_ns = "https://adwords.google.com/api/adwords/v2"
478
478
  @@schema_element = [
479
- ["cardType", "CreditCardType"],
479
+ ["cardType", "SOAP::SOAPString"],
480
480
  ["cardNumber", "SOAP::SOAPString"],
481
481
  ["expirationMonth", "SOAP::SOAPInt"],
482
482
  ["expirationYear", "SOAP::SOAPInt"],
@@ -484,7 +484,7 @@ class CreditCard
484
484
  ["issueNumber", "SOAP::SOAPString"],
485
485
  ["startMonth", "SOAP::SOAPInt"],
486
486
  ["startYear", "SOAP::SOAPInt"],
487
- ["status", "TaxStatus"],
487
+ ["status", "SOAP::SOAPString"],
488
488
  ["taxNumber", "SOAP::SOAPString"]
489
489
  ]
490
490
 
@@ -1,10 +1,9 @@
1
1
  require 'adwords4r/v2/AccountService'
2
2
 
3
3
  require 'soap/rpc/driver'
4
- module AdWordsV2
5
4
 
6
5
  class AccountService < ::SOAP::RPC::Driver
7
- DefaultEndpointUrl = "https://adwords.google.com:443/api/adwords/v2/AccountService"
6
+ DefaultEndpointUrl = "https://adwords.google.com/api/adwords/v2/AccountService"
8
7
  MappingRegistry = ::SOAP::Mapping::Registry.new
9
8
 
10
9
  Methods = [
@@ -150,4 +149,3 @@ private
150
149
  end
151
150
  end
152
151
 
153
- end
@@ -251,7 +251,7 @@ class AdGroup
251
251
  ["name", "SOAP::SOAPString"],
252
252
  ["id", "SOAP::SOAPInt"],
253
253
  ["campaignId", "SOAP::SOAPInt"],
254
- ["status", "AdGroupStatus"]
254
+ ["status", "SOAP::SOAPString"]
255
255
  ]
256
256
 
257
257
  attr_accessor :maxCpc
@@ -1,10 +1,9 @@
1
1
  require 'adwords4r/v2/AdGroupService'
2
2
 
3
3
  require 'soap/rpc/driver'
4
- module AdWordsV2
5
4
 
6
5
  class AdGroupService < ::SOAP::RPC::Driver
7
- DefaultEndpointUrl = "https://adwords.google.com:443/api/adwords/v2/AdGroupService"
6
+ DefaultEndpointUrl = "https://adwords.google.com/api/adwords/v2/AdGroupService"
8
7
  MappingRegistry = ::SOAP::Mapping::Registry.new
9
8
 
10
9
  Methods = [
@@ -94,4 +93,3 @@ private
94
93
  end
95
94
  end
96
95
 
97
- end
@@ -268,7 +268,7 @@ class Criterion
268
268
  ["exemptionRequest", "SOAP::SOAPString"],
269
269
  ["criterionType", "SOAP::SOAPString"],
270
270
  ["language", "SOAP::SOAPString"],
271
- ["status", "CriterionStatus"],
271
+ ["status", "SOAP::SOAPString"],
272
272
  ["negative", "SOAP::SOAPBoolean"],
273
273
  ["destinationUrl", "SOAP::SOAPString"]
274
274
  ]
@@ -304,10 +304,10 @@ class Keyword
304
304
  ["exemptionRequest", "SOAP::SOAPString"],
305
305
  ["criterionType", "SOAP::SOAPString"],
306
306
  ["language", "SOAP::SOAPString"],
307
- ["status", "CriterionStatus"],
307
+ ["status", "SOAP::SOAPString"],
308
308
  ["negative", "SOAP::SOAPBoolean"],
309
309
  ["destinationUrl", "SOAP::SOAPString"],
310
- ["type", "KeywordType"],
310
+ ["type", "SOAP::SOAPString"],
311
311
  ["minCpc", "SOAP::SOAPLong"],
312
312
  ["maxCpc", "SOAP::SOAPLong"],
313
313
  ["text", "SOAP::SOAPString"]
@@ -380,7 +380,7 @@ class Campaign
380
380
  @@schema_element = [
381
381
  ["id", "SOAP::SOAPInt"],
382
382
  ["name", "SOAP::SOAPString"],
383
- ["status", "CampaignStatus"],
383
+ ["status", "SOAP::SOAPString"],
384
384
  ["startDate", "SOAP::SOAPDateTime"],
385
385
  ["endDate", "SOAP::SOAPDateTime"],
386
386
  ["dailyBudget", "SOAP::SOAPLong"],
@@ -1,10 +1,9 @@
1
1
  require 'adwords4r/v2/CampaignService'
2
2
 
3
3
  require 'soap/rpc/driver'
4
- module AdWordsV2
5
4
 
6
5
  class CampaignService < ::SOAP::RPC::Driver
7
- DefaultEndpointUrl = "https://adwords.google.com:443/api/adwords/v2/CampaignService"
6
+ DefaultEndpointUrl = "https://adwords.google.com/api/adwords/v2/CampaignService"
8
7
  MappingRegistry = ::SOAP::Mapping::Registry.new
9
8
 
10
9
  Methods = [
@@ -108,4 +107,3 @@ private
108
107
  end
109
108
  end
110
109
 
111
- end
@@ -256,7 +256,7 @@ class Image
256
256
  ["data", "SOAP::SOAPBase64"],
257
257
  ["width", "SOAP::SOAPInt"],
258
258
  ["height", "SOAP::SOAPInt"],
259
- ["type", "ImageType"],
259
+ ["type", "SOAP::SOAPString"],
260
260
  ["mimeType", "SOAP::SOAPString"],
261
261
  ["imageUrl", "SOAP::SOAPString"],
262
262
  ["thumbnailUrl", "SOAP::SOAPString"]
@@ -1,10 +1,9 @@
1
1
  require 'adwords4r/v2/CreativeService'
2
2
 
3
3
  require 'soap/rpc/driver'
4
- module AdWordsV2
5
4
 
6
5
  class CreativeService < ::SOAP::RPC::Driver
7
- DefaultEndpointUrl = "https://adwords.google.com:443/api/adwords/v2/CreativeService"
6
+ DefaultEndpointUrl = "https://adwords.google.com/api/adwords/v2/CreativeService"
8
7
  MappingRegistry = ::SOAP::Mapping::Registry.new
9
8
 
10
9
  Methods = [
@@ -101,4 +100,3 @@ private
101
100
  end
102
101
  end
103
102
 
104
- end
@@ -213,7 +213,7 @@ class Criterion
213
213
  ["exemptionRequest", "SOAP::SOAPString"],
214
214
  ["criterionType", "SOAP::SOAPString"],
215
215
  ["language", "SOAP::SOAPString"],
216
- ["status", "CriterionStatus"],
216
+ ["status", "SOAP::SOAPString"],
217
217
  ["negative", "SOAP::SOAPBoolean"],
218
218
  ["destinationUrl", "SOAP::SOAPString"]
219
219
  ]
@@ -249,10 +249,10 @@ class Keyword
249
249
  ["exemptionRequest", "SOAP::SOAPString"],
250
250
  ["criterionType", "SOAP::SOAPString"],
251
251
  ["language", "SOAP::SOAPString"],
252
- ["status", "CriterionStatus"],
252
+ ["status", "SOAP::SOAPString"],
253
253
  ["negative", "SOAP::SOAPBoolean"],
254
254
  ["destinationUrl", "SOAP::SOAPString"],
255
- ["type", "KeywordType"],
255
+ ["type", "SOAP::SOAPString"],
256
256
  ["minCpc", "SOAP::SOAPLong"],
257
257
  ["maxCpc", "SOAP::SOAPLong"],
258
258
  ["text", "SOAP::SOAPString"]
@@ -297,7 +297,7 @@ class Website
297
297
  ["exemptionRequest", "SOAP::SOAPString"],
298
298
  ["criterionType", "SOAP::SOAPString"],
299
299
  ["language", "SOAP::SOAPString"],
300
- ["status", "CriterionStatus"],
300
+ ["status", "SOAP::SOAPString"],
301
301
  ["negative", "SOAP::SOAPBoolean"],
302
302
  ["destinationUrl", "SOAP::SOAPString"],
303
303
  ["maxCpm", "SOAP::SOAPLong"],
@@ -1,10 +1,9 @@
1
1
  require 'adwords4r/v2/CriterionService'
2
2
 
3
3
  require 'soap/rpc/driver'
4
- module AdWordsV2
5
4
 
6
5
  class CriterionService < ::SOAP::RPC::Driver
7
- DefaultEndpointUrl = "https://adwords.google.com:443/api/adwords/v2/CriterionService"
6
+ DefaultEndpointUrl = "https://adwords.google.com/api/adwords/v2/CriterionService"
8
7
  MappingRegistry = ::SOAP::Mapping::Registry.new
9
8
 
10
9
  Methods = [
@@ -94,4 +93,3 @@ private
94
93
  end
95
94
  end
96
95
 
97
- end
@@ -6,8 +6,8 @@ class GetOperationCount
6
6
  @@schema_ns = "https://adwords.google.com/api/adwords/v2"
7
7
  @@schema_qualified = "true"
8
8
  @@schema_element = [
9
- ["startDate", "Date"],
10
- ["endDate", "Date"]
9
+ ["startDate", "SOAP::SOAPDate"],
10
+ ["endDate", "SOAP::SOAPDate"]
11
11
  ]
12
12
 
13
13
  attr_accessor :startDate
@@ -25,7 +25,7 @@ class GetOperationCountResponse
25
25
  @@schema_ns = "https://adwords.google.com/api/adwords/v2"
26
26
  @@schema_qualified = "true"
27
27
  @@schema_element = [
28
- ["getOperationCountReturn", "Long"]
28
+ ["getOperationCountReturn", "SOAP::SOAPLong"]
29
29
  ]
30
30
 
31
31
  attr_accessor :getOperationCountReturn
@@ -52,7 +52,7 @@ class GetOperationsQuotaThisMonthResponse
52
52
  @@schema_ns = "https://adwords.google.com/api/adwords/v2"
53
53
  @@schema_qualified = "true"
54
54
  @@schema_element = [
55
- ["getOperationsQuotaThisMonthReturn", "Long"]
55
+ ["getOperationsQuotaThisMonthReturn", "SOAP::SOAPLong"]
56
56
  ]
57
57
 
58
58
  attr_accessor :getOperationsQuotaThisMonthReturn
@@ -79,7 +79,7 @@ class GetUsageQuotaThisMonthResponse
79
79
  @@schema_ns = "https://adwords.google.com/api/adwords/v2"
80
80
  @@schema_qualified = "true"
81
81
  @@schema_element = [
82
- ["getUsageQuotaThisMonthReturn", "Long"]
82
+ ["getUsageQuotaThisMonthReturn", "SOAP::SOAPLong"]
83
83
  ]
84
84
 
85
85
  attr_accessor :getUsageQuotaThisMonthReturn
@@ -106,7 +106,7 @@ class GetFreeUsageQuotaThisMonthResponse
106
106
  @@schema_ns = "https://adwords.google.com/api/adwords/v2"
107
107
  @@schema_qualified = "true"
108
108
  @@schema_element = [
109
- ["getFreeUsageQuotaThisMonthReturn", "Long"]
109
+ ["getFreeUsageQuotaThisMonthReturn", "SOAP::SOAPLong"]
110
110
  ]
111
111
 
112
112
  attr_accessor :getFreeUsageQuotaThisMonthReturn
@@ -122,9 +122,9 @@ class GetMethodCost
122
122
  @@schema_ns = "https://adwords.google.com/api/adwords/v2"
123
123
  @@schema_qualified = "true"
124
124
  @@schema_element = [
125
- ["service", "String"],
126
- ["method", "String"],
127
- ["date", "Date"]
125
+ ["service", "SOAP::SOAPString"],
126
+ ["method", "SOAP::SOAPString"],
127
+ ["date", "SOAP::SOAPDate"]
128
128
  ]
129
129
 
130
130
  attr_accessor :service
@@ -144,7 +144,7 @@ class GetMethodCostResponse
144
144
  @@schema_ns = "https://adwords.google.com/api/adwords/v2"
145
145
  @@schema_qualified = "true"
146
146
  @@schema_element = [
147
- ["getMethodCostReturn", "Int"]
147
+ ["getMethodCostReturn", "SOAP::SOAPInt"]
148
148
  ]
149
149
 
150
150
  attr_accessor :getMethodCostReturn
@@ -160,8 +160,8 @@ class GetUnitCount
160
160
  @@schema_ns = "https://adwords.google.com/api/adwords/v2"
161
161
  @@schema_qualified = "true"
162
162
  @@schema_element = [
163
- ["startDate", "Date"],
164
- ["endDate", "Date"]
163
+ ["startDate", "SOAP::SOAPDate"],
164
+ ["endDate", "SOAP::SOAPDate"]
165
165
  ]
166
166
 
167
167
  attr_accessor :startDate
@@ -179,7 +179,7 @@ class GetUnitCountResponse
179
179
  @@schema_ns = "https://adwords.google.com/api/adwords/v2"
180
180
  @@schema_qualified = "true"
181
181
  @@schema_element = [
182
- ["getUnitCountReturn", "Long"]
182
+ ["getUnitCountReturn", "SOAP::SOAPLong"]
183
183
  ]
184
184
 
185
185
  attr_accessor :getUnitCountReturn
@@ -195,10 +195,10 @@ class GetUnitCountForMethod
195
195
  @@schema_ns = "https://adwords.google.com/api/adwords/v2"
196
196
  @@schema_qualified = "true"
197
197
  @@schema_element = [
198
- ["service", "String"],
199
- ["method", "String"],
200
- ["startDate", "Date"],
201
- ["endDate", "Date"]
198
+ ["service", "SOAP::SOAPString"],
199
+ ["method", "SOAP::SOAPString"],
200
+ ["startDate", "SOAP::SOAPDate"],
201
+ ["endDate", "SOAP::SOAPDate"]
202
202
  ]
203
203
 
204
204
  attr_accessor :service
@@ -220,7 +220,7 @@ class GetUnitCountForMethodResponse
220
220
  @@schema_ns = "https://adwords.google.com/api/adwords/v2"
221
221
  @@schema_qualified = "true"
222
222
  @@schema_element = [
223
- ["getUnitCountForMethodReturn", "Long"]
223
+ ["getUnitCountForMethodReturn", "SOAP::SOAPLong"]
224
224
  ]
225
225
 
226
226
  attr_accessor :getUnitCountForMethodReturn
@@ -235,11 +235,11 @@ class ApiException
235
235
  @@schema_type = "ApiException"
236
236
  @@schema_ns = "https://adwords.google.com/api/adwords/v2"
237
237
  @@schema_element = [
238
- ["code", "Int"],
239
- ["internal", "Boolean"],
240
- ["message", "String"],
241
- ["trigger", "String"],
242
- ["violations", "String"]
238
+ ["code", "SOAP::SOAPInt"],
239
+ ["internal", "SOAP::SOAPBoolean"],
240
+ ["message", "SOAP::SOAPString"],
241
+ ["trigger", "SOAP::SOAPString"],
242
+ ["violations", "SOAP::SOAPString"]
243
243
  ]
244
244
 
245
245
  attr_accessor :code