akamai_api 0.0.7 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|