akamai_api 0.0.7 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Guardfile +24 -0
- data/README.md +3 -0
- data/akamai_api.gemspec +4 -3
- data/lib/akamai_api/ccu.rb +60 -52
- data/lib/akamai_api/cp_code.rb +12 -7
- data/lib/akamai_api/eccu_request.rb +70 -62
- data/lib/akamai_api/soap_body.rb +15 -27
- data/lib/akamai_api/version.rb +1 -1
- data/lib/akamai_api.rb +1 -1
- data/spec/fixtures/{purge_request/success.xml → ccu/successful_purge.xml} +0 -0
- data/spec/fixtures/{get_cp_codes/sample.xml → cp_code/collection.xml} +0 -0
- data/spec/fixtures/{get_cp_codes/sample_one_item.xml → cp_code/single.xml} +0 -0
- data/spec/fixtures/{delete/success.xml → eccu/delete/successful.xml} +0 -0
- data/spec/fixtures/{get_ids/success.xml → eccu/get_ids/successful.xml} +0 -0
- data/spec/fixtures/{get_info/success.xml → eccu/get_info/successful.xml} +0 -0
- data/spec/fixtures/{set_notes/success.xml → eccu/set_notes/successful.xml} +0 -0
- data/spec/fixtures/eccu/set_status_change_email/fault.xml +8 -0
- data/spec/fixtures/{set_status_change_email/success.xml → eccu/set_status_change_email/successful.xml} +0 -0
- data/spec/fixtures/{upload → eccu/upload}/fault.xml +0 -0
- data/spec/fixtures/{upload/success.xml → eccu/upload/successful.xml} +0 -0
- data/spec/lib/akamai_api/ccu_spec.rb +24 -74
- data/spec/lib/akamai_api/cp_code_spec.rb +30 -26
- data/spec/lib/akamai_api/eccu_request_spec.rb +84 -46
- data/spec/lib/akamai_api/soap_body_spec.rb +10 -13
- data/spec/spec_helper.rb +7 -3
- data/spec/support/savon_backports.rb +10 -0
- data/wsdls/cpcode.wsdl +2765 -0
- data/wsdls/eccu.wsdl +584 -0
- metadata +36 -31
- data/spec/support/savon_tester.rb +0 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 05749989fb5d5d5044e107dcb316294da2527c5d
|
4
|
+
data.tar.gz: 8f92d043cacc95919066b09dcf8c04f04c7b3983
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 288616d2301a49c4b7a0aa2c2efc3c3d3169403d1d86df57486ea3f2d39741bc11ec854a4ec653e1bb0a61f0b69083e566b5dcc88da8dc049b03cec7ada6f971
|
7
|
+
data.tar.gz: 1255972a4a6a76673fa630736783c4ba5f1d5706afe61c3f7e087ca9cdccf158e7944c194049a470bafeec34e76799c8197d61ddb8a1f289d3edefa948d9c41f
|
data/Guardfile
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
# A sample Guardfile
|
2
|
+
# More info at https://github.com/guard/guard#readme
|
3
|
+
|
4
|
+
guard :rspec do
|
5
|
+
watch(%r{^spec/.+_spec\.rb$})
|
6
|
+
watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
|
7
|
+
watch('spec/spec_helper.rb') { "spec" }
|
8
|
+
|
9
|
+
# Rails example
|
10
|
+
watch(%r{^app/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
|
11
|
+
watch(%r{^app/(.*)(\.erb|\.haml)$}) { |m| "spec/#{m[1]}#{m[2]}_spec.rb" }
|
12
|
+
watch(%r{^app/controllers/(.+)_(controller)\.rb$}) { |m| ["spec/routing/#{m[1]}_routing_spec.rb", "spec/#{m[2]}s/#{m[1]}_#{m[2]}_spec.rb", "spec/acceptance/#{m[1]}_spec.rb"] }
|
13
|
+
watch(%r{^spec/support/(.+)\.rb$}) { "spec" }
|
14
|
+
watch('config/routes.rb') { "spec/routing" }
|
15
|
+
watch('app/controllers/application_controller.rb') { "spec/controllers" }
|
16
|
+
|
17
|
+
# Capybara features specs
|
18
|
+
watch(%r{^app/views/(.+)/.*\.(erb|haml)$}) { |m| "spec/features/#{m[1]}_spec.rb" }
|
19
|
+
|
20
|
+
# Turnip features and steps
|
21
|
+
watch(%r{^spec/acceptance/(.+)\.feature$})
|
22
|
+
watch(%r{^spec/acceptance/steps/(.+)_steps\.rb$}) { |m| Dir[File.join("**/#{m[1]}.feature")][0] || 'spec/acceptance' }
|
23
|
+
end
|
24
|
+
|
data/README.md
CHANGED
@@ -2,6 +2,8 @@
|
|
2
2
|
|
3
3
|
AkamaiApi is a ruby library and command line utility to interact with Akamai CCU (Content Control Utility) and ECCU (Enhanced Content Control Utility) services.
|
4
4
|
|
5
|
+
__Note__: If you need ruby 1.8 compatibility or if you have any problem with the current release, try to use the [savon1](https://github.com/nicolaracco/akamai_api/tree/savon1) branch (or [version 0.0.7](https://github.com/nicolaracco/akamai_api/tree/v0.0.7))... and open a pull request, of course :-)
|
6
|
+
|
5
7
|
# Using the CLI
|
6
8
|
|
7
9
|
After gem installation you will have a CLI utility to execute operations on Akamai. Each method requires authentication. You can provide auth info using one of the following methods:
|
@@ -14,6 +16,7 @@ After gem installation you will have a CLI utility to execute operations on Akam
|
|
14
16
|
auth:
|
15
17
|
- user
|
16
18
|
- pass
|
19
|
+
log: true # optional for enabling logging. false by default
|
17
20
|
```
|
18
21
|
|
19
22
|
## Tasks
|
data/akamai_api.gemspec
CHANGED
@@ -16,12 +16,13 @@ Gem::Specification.new do |gem|
|
|
16
16
|
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
17
17
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
18
18
|
gem.require_paths = ["lib"]
|
19
|
+
gem.required_ruby_version = Gem::Requirement.new(">= 1.9.2")
|
19
20
|
|
20
|
-
gem.add_dependency 'activesupport', '>= 2.3.9',
|
21
|
+
gem.add_dependency 'activesupport', '>= 2.3.9', '< 4.0'
|
21
22
|
gem.add_dependency 'thor', '>= 0.14.0', '< 2.0'
|
22
|
-
gem.add_dependency 'savon', '~>
|
23
|
+
gem.add_dependency 'savon', '~> 2.2.0'
|
23
24
|
gem.add_dependency 'builder', '~> 3.0'
|
24
25
|
|
25
26
|
gem.add_development_dependency 'rspec', '~> 2.11'
|
26
|
-
gem.add_development_dependency '
|
27
|
+
gem.add_development_dependency 'guard-rspec', '~> 3.0.2'
|
27
28
|
end
|
data/lib/akamai_api/ccu.rb
CHANGED
@@ -1,75 +1,83 @@
|
|
1
1
|
require 'active_support/core_ext'
|
2
2
|
|
3
3
|
module AkamaiApi
|
4
|
-
|
5
|
-
extend
|
4
|
+
module Ccu
|
5
|
+
extend self
|
6
6
|
|
7
|
-
|
7
|
+
class UnrecognizedOption < StandardError; end
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
9
|
+
[:invalidate, :remove].each do |action|
|
10
|
+
send :define_method, action do |*params|
|
11
|
+
raise ArgumentError, "wrong number of arguments (#{params.length} for 2..3)" if params.length < 2
|
12
|
+
type, items, opts = params
|
13
|
+
purge action, type, items, (opts || {})
|
14
|
+
end
|
15
|
+
[:arl, :cpcode].each do |type|
|
16
|
+
method_name = "#{action}_#{type}".to_sym
|
17
|
+
send :define_method, method_name do |*params|
|
18
|
+
raise ArgumentError, "wrong number of arguments (#{params.length} for 1..2)" if params.length < 1
|
19
|
+
items, opts = params
|
14
20
|
purge action, type, items, (opts || {})
|
15
21
|
end
|
16
|
-
[:arl, :cpcode].each do |type|
|
17
|
-
method_name = "#{action}_#{type}".to_sym
|
18
|
-
send :define_method, method_name do |*params|
|
19
|
-
raise ArgumentError, "wrong number of arguments (#{params.length} for 1..2)" if params.length < 1
|
20
|
-
items, opts = params
|
21
|
-
purge action, type, items, (opts || {})
|
22
|
-
end
|
23
|
-
end
|
24
22
|
end
|
23
|
+
end
|
25
24
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
array :uri, items
|
39
|
-
end
|
40
|
-
end
|
41
|
-
CcuResponse.new response, items
|
25
|
+
def purge action, type, items, args = {}
|
26
|
+
validate_action action
|
27
|
+
validate_type type
|
28
|
+
options = ["action=#{action}", "type=#{type}"]
|
29
|
+
add_domain args[:domain], options
|
30
|
+
add_email args[:email], options
|
31
|
+
body = SoapBody.new do
|
32
|
+
string :name, AkamaiApi.config[:auth].first
|
33
|
+
string :pwd, AkamaiApi.config[:auth].last
|
34
|
+
string :network, ''
|
35
|
+
array :opt, options
|
36
|
+
array :uri, Array.wrap(items)
|
42
37
|
end
|
38
|
+
response = client.call :purge_request, :message => body.to_s
|
39
|
+
CcuResponse.new response, items
|
40
|
+
end
|
43
41
|
|
44
|
-
|
42
|
+
private
|
45
43
|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
end
|
44
|
+
def validate_action action
|
45
|
+
unless %w[invalidate remove].include? action.to_s
|
46
|
+
raise UnrecognizedOption, "Unknown type '#{action}' (only 'remove' and 'invalidate' are allowed)"
|
50
47
|
end
|
48
|
+
end
|
51
49
|
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
end
|
50
|
+
def validate_type type
|
51
|
+
unless %w[cpcode arl].include? type.to_s
|
52
|
+
raise UnrecognizedOption, "Unknown type '#{type}' (only 'cpcode' and 'arl' are allowed)"
|
56
53
|
end
|
54
|
+
end
|
57
55
|
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
end
|
63
|
-
options << "domain=#{domain}"
|
56
|
+
def add_domain domain, options
|
57
|
+
if domain.present?
|
58
|
+
unless %w[production staging].include? domain.to_s
|
59
|
+
raise "Unknown domain type '#{domain}' (only :production and :staging are allowed)"
|
64
60
|
end
|
61
|
+
options << "domain=#{domain}"
|
65
62
|
end
|
63
|
+
end
|
66
64
|
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
end
|
65
|
+
def add_email email, options
|
66
|
+
if email.present?
|
67
|
+
emails = Array.wrap(email).join ','
|
68
|
+
options << "email-notification=#{emails}"
|
72
69
|
end
|
73
70
|
end
|
71
|
+
|
72
|
+
def client
|
73
|
+
savon_args = {
|
74
|
+
:wsdl => File.expand_path('../../../wsdls/ccuapi.wsdl', __FILE__),
|
75
|
+
:namespaces => {
|
76
|
+
'xmlns:soapenc' => 'http://schemas.xmlsoap.org/soap/encoding/'
|
77
|
+
},
|
78
|
+
:log => AkamaiApi.config[:log]
|
79
|
+
}
|
80
|
+
Savon.client savon_args
|
81
|
+
end
|
74
82
|
end
|
75
83
|
end
|
data/lib/akamai_api/cp_code.rb
CHANGED
@@ -1,9 +1,5 @@
|
|
1
1
|
module AkamaiApi
|
2
2
|
class CpCode
|
3
|
-
extend Savon::Model
|
4
|
-
|
5
|
-
document 'https://control.akamai.com/nmrws/services/SiteAcceleratorReportService?wsdl'
|
6
|
-
|
7
3
|
attr_accessor :code, :description, :service
|
8
4
|
|
9
5
|
def initialize attributes
|
@@ -13,9 +9,7 @@ module AkamaiApi
|
|
13
9
|
end
|
14
10
|
|
15
11
|
def self.all
|
16
|
-
|
17
|
-
response = client.request('getCPCodes').body[:multi_ref]
|
18
|
-
|
12
|
+
response = client.call(:get_cp_codes).body[:multi_ref]
|
19
13
|
Array.wrap(response).map do |hash|
|
20
14
|
new({
|
21
15
|
:code => hash[:cpcode],
|
@@ -24,5 +18,16 @@ module AkamaiApi
|
|
24
18
|
})
|
25
19
|
end
|
26
20
|
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
def self.client
|
25
|
+
savon_args = {
|
26
|
+
:wsdl => File.expand_path('../../../wsdls/cpcode.wsdl', __FILE__),
|
27
|
+
:basic_auth => AkamaiApi.config[:auth],
|
28
|
+
:log => AkamaiApi.config[:log]
|
29
|
+
}
|
30
|
+
Savon.client savon_args
|
31
|
+
end
|
27
32
|
end
|
28
33
|
end
|
@@ -1,9 +1,5 @@
|
|
1
1
|
module AkamaiApi
|
2
2
|
class EccuRequest
|
3
|
-
extend Savon::Model
|
4
|
-
|
5
|
-
document 'https://control.akamai.com/webservices/services/PublishECCU?wsdl'
|
6
|
-
|
7
3
|
attr_accessor :file, :status, :code, :notes, :property, :email, :upload_date, :uploaded_by, :version_string
|
8
4
|
|
9
5
|
def initialize attributes = {}
|
@@ -14,42 +10,39 @@ module AkamaiApi
|
|
14
10
|
|
15
11
|
def update_notes! notes
|
16
12
|
code = self.code.to_i
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
string :notes, notes
|
21
|
-
end
|
13
|
+
body = SoapBody.new do
|
14
|
+
integer :fileId, code
|
15
|
+
string :notes, notes
|
22
16
|
end
|
17
|
+
resp = client.call :set_notes, :message => body.to_s
|
23
18
|
self.notes = notes
|
24
19
|
resp.body[:set_notes_response][:success]
|
25
20
|
end
|
26
21
|
|
27
22
|
def update_email! email
|
28
23
|
code = self.code.to_i
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
string :statusChangeEmail, email
|
33
|
-
end
|
24
|
+
body = SoapBody.new do
|
25
|
+
integer :fileId, code
|
26
|
+
string :statusChangeEmail, email
|
34
27
|
end
|
35
|
-
|
36
|
-
|
28
|
+
response = client.call :set_status_change_email, :message => body.to_s
|
29
|
+
successful = response.body[:set_status_change_email_response][:success]
|
30
|
+
self.email = email if successful
|
31
|
+
successful
|
37
32
|
end
|
38
33
|
|
39
34
|
def destroy
|
40
35
|
code = self.code.to_i
|
41
|
-
|
42
|
-
|
43
|
-
integer :fileId, code
|
44
|
-
end
|
36
|
+
body = SoapBody.new do
|
37
|
+
integer :fileId, code
|
45
38
|
end
|
46
|
-
|
39
|
+
response = client.call :delete, :message => body.to_s
|
40
|
+
response.body[:delete_response][:success]
|
47
41
|
end
|
48
42
|
|
49
43
|
class << self
|
50
44
|
def all_ids
|
51
|
-
|
52
|
-
client.request('getIds').body[:get_ids_response][:file_ids][:file_ids]
|
45
|
+
client.call(:get_ids).body[:get_ids_response][:file_ids][:file_ids]
|
53
46
|
end
|
54
47
|
|
55
48
|
def all args = {}
|
@@ -65,38 +58,36 @@ module AkamaiApi
|
|
65
58
|
end
|
66
59
|
|
67
60
|
def find code, args = {}
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
integer :fileId, code.to_i
|
72
|
-
boolean :retrieveContents, args[:verbose] == true
|
73
|
-
end
|
61
|
+
body = SoapBody.new do
|
62
|
+
integer :fileId, code.to_i
|
63
|
+
boolean :retrieveContents, args[:verbose] == true
|
74
64
|
end
|
75
|
-
|
65
|
+
response = client.call(:get_info, :message => body.to_s)
|
66
|
+
response_body = response.body[:get_info_response][:eccu_info]
|
76
67
|
EccuRequest.new({
|
77
68
|
:file => {
|
78
|
-
:content => Base64.decode64(get_if_kind(
|
79
|
-
:file_size =>
|
80
|
-
:file_name => get_if_kind(
|
81
|
-
:md5_digest => get_if_kind(
|
69
|
+
:content => Base64.decode64(get_if_kind(response_body[:contents], String) || ''),
|
70
|
+
:file_size => response_body[:file_size].to_i,
|
71
|
+
:file_name => get_if_kind(response_body[:filename], String),
|
72
|
+
:md5_digest => get_if_kind(response_body[:md5_digest], String)
|
82
73
|
},
|
83
74
|
:status => {
|
84
|
-
:extended => get_if_kind(
|
85
|
-
:code =>
|
86
|
-
:message => get_if_kind(
|
87
|
-
:update_date => get_if_kind(
|
75
|
+
:extended => get_if_kind(response_body[:extended_status_message], String),
|
76
|
+
:code => response_body[:status_code].to_i,
|
77
|
+
:message => get_if_kind(response_body[:status_message], String),
|
78
|
+
:update_date => get_if_kind(response_body[:status_update_date], String)
|
88
79
|
},
|
89
|
-
:code =>
|
90
|
-
:notes => get_if_kind(
|
80
|
+
:code => response_body[:file_id],
|
81
|
+
:notes => get_if_kind(response_body[:notes], String),
|
91
82
|
:property => {
|
92
|
-
:name => get_if_kind(
|
93
|
-
:exact_match => (
|
94
|
-
:type => get_if_kind(
|
83
|
+
:name => get_if_kind(response_body[:property_name], String),
|
84
|
+
:exact_match => (response_body[:property_name_exact_match] == true),
|
85
|
+
:type => get_if_kind(response_body[:property_type], String)
|
95
86
|
},
|
96
|
-
:email => get_if_kind(
|
97
|
-
:upload_date => get_if_kind(
|
98
|
-
:uploaded_by => get_if_kind(
|
99
|
-
:version_string => get_if_kind(
|
87
|
+
:email => get_if_kind(response_body[:status_change_email], String),
|
88
|
+
:upload_date => get_if_kind(response_body[:upload_date], String),
|
89
|
+
:uploaded_by => get_if_kind(response_body[:uploaded_by], String),
|
90
|
+
:version_string => get_if_kind(response_body[:version_string], String)
|
100
91
|
})
|
101
92
|
end
|
102
93
|
|
@@ -106,32 +97,49 @@ module AkamaiApi
|
|
106
97
|
end
|
107
98
|
|
108
99
|
def publish property, content, args = {}
|
109
|
-
|
110
|
-
resp = client.
|
111
|
-
SoapBody.new(soap) do
|
112
|
-
string :filename, args[:file_name] || ''
|
113
|
-
text :contents, content
|
114
|
-
string :notes, args[:notes] || 'ECCU Request using AkamaiApi gem'
|
115
|
-
string :versionString, args[:version] || ''
|
116
|
-
if args[:emails]
|
117
|
-
string :statusChangeEmail, Array.wrap(args[:emails]).join(' ')
|
118
|
-
end
|
119
|
-
string :propertyName, property
|
120
|
-
string :propertyType, args[:property_type] || 'hostheader'
|
121
|
-
boolean :propertyNameExactMatch, args[:property_exact_match].nil? && true || args[:property_exact_match]
|
122
|
-
end
|
123
|
-
end
|
100
|
+
body = build_publish_soap_body property, content, args
|
101
|
+
resp = client.call :upload, :message_tag => 'upload', :message => body.to_s
|
124
102
|
resp.body[:upload_response][:file_id].to_i
|
125
103
|
end
|
126
104
|
|
127
105
|
private
|
128
106
|
|
107
|
+
def build_publish_soap_body property, content, args
|
108
|
+
SoapBody.new do
|
109
|
+
string :filename, args[:file_name] || ''
|
110
|
+
text :contents, content
|
111
|
+
string :notes, args[:notes] || 'ECCU Request using AkamaiApi gem'
|
112
|
+
string :versionString, args[:version] || ''
|
113
|
+
if args[:emails]
|
114
|
+
string :statusChangeEmail, Array.wrap(args[:emails]).join(' ')
|
115
|
+
end
|
116
|
+
string :propertyName, property
|
117
|
+
string :propertyType, args[:property_type] || 'hostheader'
|
118
|
+
boolean :propertyNameExactMatch, args[:property_exact_match].nil? && true || args[:property_exact_match]
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
129
122
|
# This method is used because, for nil values, savon will respond with an hash containing all other attributes.
|
130
123
|
# If we check that the expected type is matched, we can
|
131
124
|
# prevent to retrieve wrong values
|
132
125
|
def get_if_kind value, kind
|
133
126
|
value.kind_of?(kind) && value || nil
|
134
127
|
end
|
128
|
+
|
129
|
+
def client
|
130
|
+
savon_args = {
|
131
|
+
:wsdl => File.expand_path('../../../wsdls/eccu.wsdl', __FILE__),
|
132
|
+
:basic_auth => AkamaiApi.config[:auth],
|
133
|
+
:log => AkamaiApi.config[:log]
|
134
|
+
}
|
135
|
+
Savon.client savon_args
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|
139
|
+
private
|
140
|
+
|
141
|
+
def client
|
142
|
+
self.class.send(:client)
|
135
143
|
end
|
136
144
|
end
|
137
145
|
end
|
data/lib/akamai_api/soap_body.rb
CHANGED
@@ -1,52 +1,40 @@
|
|
1
1
|
module AkamaiApi
|
2
2
|
class SoapBody
|
3
|
-
|
3
|
+
attr_reader :builder
|
4
4
|
|
5
|
-
def initialize
|
6
|
-
|
7
|
-
self.soap.namespaces['xmlns:soapenc'] = 'http://schemas.xmlsoap.org/soap/encoding/'
|
5
|
+
def initialize &block
|
6
|
+
@builder = Builder::XmlMarkup.new
|
8
7
|
instance_eval &block if block
|
9
8
|
end
|
10
9
|
|
11
|
-
def body
|
12
|
-
soap.body ||= {}
|
13
|
-
end
|
14
|
-
|
15
|
-
def body_attributes
|
16
|
-
body[:attributes!] ||= {}
|
17
|
-
end
|
18
|
-
|
19
10
|
def text name, value
|
20
|
-
name
|
21
|
-
body[name] = Base64.encode64 value
|
22
|
-
body_attributes[name] = { 'xsi:type' => 'xsd:base64Binary' }
|
11
|
+
builder.tag! name, Base64.encode64(value), 'xsi:type' => 'xsd:base64Binary'
|
23
12
|
end
|
24
13
|
|
25
14
|
def boolean name, value
|
26
|
-
name
|
27
|
-
body[name] = value
|
28
|
-
body_attributes[name] = { 'xsi:type' => 'xsd:boolean' }
|
15
|
+
builder.tag! name, value, 'xsi:type' => 'xsd:boolean'
|
29
16
|
end
|
30
17
|
|
31
18
|
def integer name, value
|
32
|
-
name
|
33
|
-
body[name] = value
|
34
|
-
body_attributes[name] = { 'xsi:type' => 'xsd:int' }
|
19
|
+
builder.tag! name, value, 'xsi:type' => 'xsd:int'
|
35
20
|
end
|
36
21
|
|
37
22
|
def string name, value
|
38
|
-
name
|
39
|
-
body[name] = value
|
40
|
-
body_attributes[name] = { 'xsi:type' => 'xsd:string' }
|
23
|
+
builder.tag! name, value, 'xsi:type' => 'xsd:string'
|
41
24
|
end
|
42
25
|
|
43
26
|
def array name, values
|
44
|
-
|
45
|
-
body[name] = { 'item' => values }
|
46
|
-
body_attributes[name] = {
|
27
|
+
array_attrs = {
|
47
28
|
'soapenc:arrayType' => "xsd:string[#{values.length}]",
|
48
29
|
'xsi:type' => 'wsdl:ArrayOfString'
|
49
30
|
}
|
31
|
+
builder.tag! name, array_attrs do |tag|
|
32
|
+
values.each { |value| tag.item value }
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def to_s
|
37
|
+
builder.target!
|
50
38
|
end
|
51
39
|
end
|
52
40
|
end
|
data/lib/akamai_api/version.rb
CHANGED
data/lib/akamai_api.rb
CHANGED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,8 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
3
|
+
<soapenv:Body>
|
4
|
+
<setStatusChangeEmailResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
|
5
|
+
<success xsi:type="xsd:boolean">false</success>
|
6
|
+
</setStatusChangeEmailResponse>
|
7
|
+
</soapenv:Body>
|
8
|
+
</soapenv:Envelope>
|
File without changes
|
File without changes
|
File without changes
|