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.
Files changed (31) hide show
  1. checksums.yaml +4 -4
  2. data/Guardfile +24 -0
  3. data/README.md +3 -0
  4. data/akamai_api.gemspec +4 -3
  5. data/lib/akamai_api/ccu.rb +60 -52
  6. data/lib/akamai_api/cp_code.rb +12 -7
  7. data/lib/akamai_api/eccu_request.rb +70 -62
  8. data/lib/akamai_api/soap_body.rb +15 -27
  9. data/lib/akamai_api/version.rb +1 -1
  10. data/lib/akamai_api.rb +1 -1
  11. data/spec/fixtures/{purge_request/success.xml → ccu/successful_purge.xml} +0 -0
  12. data/spec/fixtures/{get_cp_codes/sample.xml → cp_code/collection.xml} +0 -0
  13. data/spec/fixtures/{get_cp_codes/sample_one_item.xml → cp_code/single.xml} +0 -0
  14. data/spec/fixtures/{delete/success.xml → eccu/delete/successful.xml} +0 -0
  15. data/spec/fixtures/{get_ids/success.xml → eccu/get_ids/successful.xml} +0 -0
  16. data/spec/fixtures/{get_info/success.xml → eccu/get_info/successful.xml} +0 -0
  17. data/spec/fixtures/{set_notes/success.xml → eccu/set_notes/successful.xml} +0 -0
  18. data/spec/fixtures/eccu/set_status_change_email/fault.xml +8 -0
  19. data/spec/fixtures/{set_status_change_email/success.xml → eccu/set_status_change_email/successful.xml} +0 -0
  20. data/spec/fixtures/{upload → eccu/upload}/fault.xml +0 -0
  21. data/spec/fixtures/{upload/success.xml → eccu/upload/successful.xml} +0 -0
  22. data/spec/lib/akamai_api/ccu_spec.rb +24 -74
  23. data/spec/lib/akamai_api/cp_code_spec.rb +30 -26
  24. data/spec/lib/akamai_api/eccu_request_spec.rb +84 -46
  25. data/spec/lib/akamai_api/soap_body_spec.rb +10 -13
  26. data/spec/spec_helper.rb +7 -3
  27. data/spec/support/savon_backports.rb +10 -0
  28. data/wsdls/cpcode.wsdl +2765 -0
  29. data/wsdls/eccu.wsdl +584 -0
  30. metadata +36 -31
  31. data/spec/support/savon_tester.rb +0 -16
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6db87fa3be02df005df62f70c5b518244defda40
4
- data.tar.gz: 718930e9c32466a64ca039667aff84024537ded4
3
+ metadata.gz: 05749989fb5d5d5044e107dcb316294da2527c5d
4
+ data.tar.gz: 8f92d043cacc95919066b09dcf8c04f04c7b3983
5
5
  SHA512:
6
- metadata.gz: 912099d1f5670f672d2d70303a80992a44079d4a942d2bcaacb87c028ae68adf26e9061f4f22cf1e3f2f652c42eca557fb0013aebc7bb775450daff6e8fa322c
7
- data.tar.gz: 40c41f89eb6d8d90f6fe692da75e870cab47fa8b63b92fad1b620113310fe09b3dd9cc21ac8e972bca18681121f80dcdc45b2da6a1f4d6d2061a97de59912149
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', '< 4.0'
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', '~> 1.2.0'
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 'savon_spec', '~> 1.3'
27
+ gem.add_development_dependency 'guard-rspec', '~> 3.0.2'
27
28
  end
@@ -1,75 +1,83 @@
1
1
  require 'active_support/core_ext'
2
2
 
3
3
  module AkamaiApi
4
- class Ccu
5
- extend Savon::Model
4
+ module Ccu
5
+ extend self
6
6
 
7
- document File.expand_path('../../../wsdls/ccuapi.wsdl', __FILE__)
7
+ class UnrecognizedOption < StandardError; end
8
8
 
9
- class << self
10
- [:invalidate, :remove].each do |action|
11
- send :define_method, action do |*params|
12
- raise ArgumentError, "wrong number of arguments (#{params.length} for 2..3)" if params.length < 2
13
- type, items, opts = params
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
- def purge action, type, items, args = {}
27
- validate_action action
28
- validate_type type
29
- options = ["action=#{action}", "type=#{type}"]
30
- add_domain args[:domain], options
31
- add_email args[:email], options
32
- response = client.request 'wsdl:purgeRequest' do
33
- SoapBody.new(soap) do
34
- string :name, AkamaiApi.config[:auth].first
35
- string :pwd, AkamaiApi.config[:auth].last
36
- string :network, ''
37
- array :opt, options
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
- private
42
+ private
45
43
 
46
- def validate_action action
47
- unless %w[invalidate remove].include? action.to_s
48
- raise "Unknown type '#{action}' (only 'remove' and 'invalidate' are allowed)"
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
- def validate_type type
53
- unless %w[cpcode arl].include? type.to_s
54
- raise "Unknown type '#{type}' (only 'cpcode' and 'arl' are allowed)"
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
- def add_domain domain, options
59
- if domain.present?
60
- unless %w[production staging].include? domain.to_s
61
- raise "Unknown domain type '#{domain}' (only :production and :staging are allowed)"
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
- def add_email email, options
68
- if email.present?
69
- emails = Array.wrap(email).join ','
70
- options << "email-notification=#{emails}"
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
@@ -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
- basic_auth *AkamaiApi.config[:auth]
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
- resp = client.request 'setNotes' do
18
- SoapBody.new(soap) do
19
- integer :fileId, code
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
- resp = client.request 'setStatusChangeEmail' do
30
- SoapBody.new(soap) do
31
- integer :fileId, code
32
- string :statusChangeEmail, email
33
- end
24
+ body = SoapBody.new do
25
+ integer :fileId, code
26
+ string :statusChangeEmail, email
34
27
  end
35
- self.email = email
36
- resp.body[:set_status_change_email_response][:success]
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
- resp = client.request 'delete' do |soap|
42
- SoapBody.new(soap) do
43
- integer :fileId, code
44
- end
36
+ body = SoapBody.new do
37
+ integer :fileId, code
45
38
  end
46
- resp.body[:delete_response][:success]
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
- basic_auth *AkamaiApi.config[:auth]
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
- basic_auth *AkamaiApi.config[:auth]
69
- resp = client.request 'getInfo' do
70
- SoapBody.new(soap) do
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
- resp = resp[:get_info_response][:eccu_info]
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(resp[:contents], String) || ''),
79
- :file_size => resp[:file_size].to_i,
80
- :file_name => get_if_kind(resp[:filename], String),
81
- :md5_digest => get_if_kind(resp[:md5_digest], String)
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(resp[:extended_status_message], String),
85
- :code => resp[:status_code].to_i,
86
- :message => get_if_kind(resp[:status_message], String),
87
- :update_date => get_if_kind(resp[:status_update_date], String)
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 => resp[:file_id],
90
- :notes => get_if_kind(resp[:notes], String),
80
+ :code => response_body[:file_id],
81
+ :notes => get_if_kind(response_body[:notes], String),
91
82
  :property => {
92
- :name => get_if_kind(resp[:property_name], String),
93
- :exact_match => (resp[:property_name_exact_match] == true),
94
- :type => get_if_kind(resp[:property_type], String)
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(resp[:status_change_email], String),
97
- :upload_date => get_if_kind(resp[:upload_date], String),
98
- :uploaded_by => get_if_kind(resp[:uploaded_by], String),
99
- :version_string => get_if_kind(resp[:version_string], String)
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
- basic_auth *AkamaiApi.config[:auth]
110
- resp = client.request 'upload' do
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
@@ -1,52 +1,40 @@
1
1
  module AkamaiApi
2
2
  class SoapBody
3
- attr_accessor :soap
3
+ attr_reader :builder
4
4
 
5
- def initialize soap, &block
6
- self.soap = soap
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 = name.to_sym
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 = name.to_sym
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 = name.to_sym
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 = name.to_sym
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
- name = name.to_sym
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
@@ -1,3 +1,3 @@
1
1
  module AkamaiApi
2
- VERSION = "0.0.7"
2
+ VERSION = "0.1.0"
3
3
  end
data/lib/akamai_api.rb CHANGED
@@ -5,5 +5,5 @@ require 'savon'
5
5
  end
6
6
 
7
7
  module AkamaiApi
8
- def self.config; @config ||= { :auth => ['', ''] }; end
8
+ def self.config; @config ||= { :auth => ['', ''], :log => false }; end
9
9
  end
@@ -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