postini 0.0.2 → 0.0.3

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.
data/History.txt CHANGED
@@ -1,3 +1,8 @@
1
+ == 0.0.3 2008-08-21
2
+
3
+ * Added options to allow for the capturing of soap4r wiredumps
4
+ * Added missing validations to domain creation
5
+
1
6
  == 0.0.2 2008-08-19
2
7
 
3
8
  * Fixed broken code for adding new users, with the most basic of validations
data/PostInstall.txt CHANGED
@@ -1,7 +1,8 @@
1
1
 
2
- For more information on postini4r, see http://postini4r.rubyforge.org
3
-
4
- NOTE: Change this information in PostInstall.txt
5
- You can also delete it if you don't want it.
2
+ For more information on postini4r's postini gem, see
3
+ http://postini4r.rubyforge.org/postini
6
4
 
5
+ Remember to contact your Postini provider, or Postini directly, to gain access
6
+ to the Postini Early Access Program. You'll need a unique API key to make use
7
+ of this gem.
7
8
 
data/config/hoe.rb CHANGED
@@ -64,7 +64,7 @@ $hoe = Hoe.new(GEM_NAME, VERS) do |p|
64
64
 
65
65
  # == Optional
66
66
  p.changes = p.paragraphs_of("History.txt", 0..1).join("\n\n")
67
- #p.extra_deps = EXTRA_DEPENDENCIES
67
+ p.extra_deps = EXTRA_DEPENDENCIES
68
68
 
69
69
  #p.spec_extras = {} # A hash of extra values to set in the gemspec.
70
70
  end
@@ -13,7 +13,7 @@ module Postini
13
13
 
14
14
  # Return an instance of #Domain with all the attributes populated
15
15
  def find( domain )
16
- remote = Postini::API::AutomatedBatch::AutomatedBatchPort.new( Postini.endpoint_uri )
16
+ remote = automated_batch_port
17
17
  request = Postini::API::AutomatedBatch::Displaydomain.new( Postini.auth, domain )
18
18
  response = remote.displaydomain( request )
19
19
  domain_record = response.domainRecord
@@ -31,6 +31,12 @@ module Postini
31
31
  )
32
32
  end
33
33
 
34
+ # Return a remote port with debug enabled if required
35
+ def automated_batch_port #:nodoc:
36
+ remote = Postini::API::AutomatedBatch::AutomatedBatchPort.new( Postini.endpoint_uri )
37
+ remote.wiredump_dev = Postini.soap4r_wiredump_dev if Postini.soap4r_wiredump?
38
+ remote
39
+ end
34
40
  end
35
41
 
36
42
  # Setup a new instance with the combination of attributes set
@@ -50,9 +56,10 @@ module Postini
50
56
  def create
51
57
  return false unless new?
52
58
 
53
- # TODO: Add missing validations here
59
+ # TODO: Add improved validations here
60
+ return false if @name.nil? || @org.nil?
54
61
 
55
- remote = Postini::API::AutomatedBatch::AutomatedBatchPort.new( Postini.endpoint_uri )
62
+ remote = automated_batch_port
56
63
  args = Postini::API::AutomatedBatch::Adddomainargs.new( @name )
57
64
  request = Postini::API::AutomatedBatch::Adddomain.new(
58
65
  Postini.auth, @org, args
data/lib/postini/user.rb CHANGED
@@ -20,7 +20,7 @@ module Postini
20
20
  # Return a new instance of the user
21
21
  # TODO: Make this take various options just like ActiveRecord
22
22
  def find( user )
23
- remote = Postini::API::AutomatedBatch::AutomatedBatchPort.new( Postini.endpoint_uri( user ) )
23
+ remote = automated_batch_port( user )
24
24
  request = Postini::API::AutomatedBatch::Displayuser.new( Postini.auth, user )
25
25
  response = remote.displayuser( request )
26
26
  user_record = response.userRecord
@@ -38,11 +38,18 @@ module Postini
38
38
 
39
39
  # Permanently remove the user from Postini
40
40
  def destroy( address )
41
- remote = Postini::API::AutomatedBatch::AutomatedBatchPort.new( Postini.endpoint_uri( address ) )
41
+ remote = automated_batch_port( address )
42
42
  request = Postini::API::AutomatedBatch::Deleteuser.new( Postini.auth, address )
43
43
  remote.deleteuser( request )
44
44
  end
45
45
 
46
+ # Return a remote port for the address, with debug enabled if required
47
+ def automated_batch_port( address = nil ) #:nodoc:
48
+ remote = Postini::API::AutomatedBatch::AutomatedBatchPort.new( Postini.endpoint_uri( address ) )
49
+ remote.wiredump_dev = Postini.soap4r_wiredump_dev if Postini.soap4r_wiredump?
50
+ remote
51
+ end
52
+
46
53
  end
47
54
 
48
55
  # Setup a new instance with the combination of attributes set
@@ -64,7 +71,7 @@ module Postini
64
71
  # TODO: Add missing validations here
65
72
  return false if @address.nil? || @org.nil?
66
73
 
67
- remote = Postini::API::AutomatedBatch::AutomatedBatchPort.new( Postini.endpoint_uri )
74
+ remote = automated_batch_port
68
75
  args = Postini::API::AutomatedBatch::Adduserargs.new( @org, welcome )
69
76
  request = Postini::API::AutomatedBatch::Adduser.new( Postini.auth, @address, args )
70
77
  remote.adduser( request )
@@ -80,7 +87,7 @@ module Postini
80
87
  # Return the list of aliases for the mailbox
81
88
  def aliases
82
89
  if @aliases.nil?
83
- remote = Postini::API::AutomatedBatch::AutomatedBatchPort.new( Postini.endpoint_uri( @address ) )
90
+ remote = self.class.automated_batch_port( @address )
84
91
  query = Postini::API::AutomatedBatch::ListusersqueryParams.new
85
92
  query.aliases = 1
86
93
  query.childorgs = 1
@@ -104,7 +111,7 @@ module Postini
104
111
  # Add an alias to this user
105
112
  def add_alias( address )
106
113
  @aliases = nil # clear our cache
107
- remote = Postini::API::AutomatedBatch::AutomatedBatchPort.new( Postini.endpoint_uri( @address ) )
114
+ remote = self.class.automated_batch_port( @address )
108
115
  request = Postini::API::AutomatedBatch::Addalias.new( Postini.auth, @address, address )
109
116
  remote.addalias( request )
110
117
  end
@@ -112,7 +119,7 @@ module Postini
112
119
  # Removes the specified alias
113
120
  def remove_alias( address )
114
121
  @aliases = nil # clear our cache
115
- remote = Postini::API::AutomatedBatch::AutomatedBatchPort.new( Postini.endpoint_uri( @address ) )
122
+ remote = self.class.automated_batch_port( @address )
116
123
  request = Postini::API::AutomatedBatch::Deletealias.new( Postini.auth, address )
117
124
  remote.deletealias( request )
118
125
  end
@@ -2,7 +2,7 @@ module Postini
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 0
4
4
  MINOR = 0
5
- TINY = 2
5
+ TINY = 3
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
data/lib/postini.rb CHANGED
@@ -8,7 +8,9 @@ require 'postini/domain'
8
8
 
9
9
  require 'postini/api/endpointresolver/EndpointResolverDriver'
10
10
 
11
- # This module just provides access to configuration details used by the rest of
11
+ # = Configuration
12
+ #
13
+ # This module just provides access to configuration details used by the rest of
12
14
  # the gem.
13
15
  #
14
16
  # Current configuration values are:
@@ -44,10 +46,27 @@ require 'postini/api/endpointresolver/EndpointResolverDriver'
44
46
  # Postini.password = 'secret'
45
47
  # Postini.xauth = 'format_unknown_to_author'
46
48
  #
49
+ # = Debugging
50
+ #
51
+ # Lots to debug when an API is classified as "Early access", here are different
52
+ # controls for setting the debugging verbosity
53
+ #
54
+ # * logger = Ruby-logger compatibe logger
55
+ # * debug = true/false - Enable more verbose logging
56
+ # * soap4r_wiredump = true/false - Enable soap4r wiredumps
57
+ # * soap4r_wiredump_dev = DEV - Alternative logfile or device for SOAP4R wiredumps
58
+ #
59
+ # Specify a 'Logger' compatible logging facility in order to use the debug
60
+ # features of the gem. All the other settings increase the verbosity to varying
61
+ # degrees, and allow you to access some soap4r internals as well.
62
+ #
47
63
  module Postini
48
64
 
49
65
  # On the fly class variable, getter and setter generation...
50
- %w{ api_key system_number username password xauth }.each do |config|
66
+ %w{
67
+ api_key system_number username password xauth
68
+ logger debug soap4r_debug soap4r_debug_dev soap4r_wiredump soap4r_wiredump_dev
69
+ }.each do |config|
51
70
  class_eval <<-EOF
52
71
  @@#{config} = nil
53
72
  def self.#{config}=( val )
@@ -59,42 +78,65 @@ module Postini
59
78
  EOF
60
79
  end
61
80
 
62
- # Return the appropriate endpoint URI for the service calls. If +user+ is
63
- # provided, the endpoint is determined using the Endpoint Resolver Service,
64
- # otherwise it is contructed from the +system_number+ configuration value.
65
- def self.endpoint_uri( user = nil, service = :automated_batch )
66
- raise "System Number not known" if user.nil? && system_number.nil?
81
+ class << self
67
82
 
68
- # Translate the service
69
- service = case service
70
- when :automated_batch
71
- [ Postini::API::EndpointResolver::Service::V2AutomatedBatch, "automatedbatch" ]
83
+ # Return the appropriate endpoint URI for the service calls. If +user+ is
84
+ # provided, the endpoint is determined using the Endpoint Resolver Service,
85
+ # otherwise it is contructed from the +system_number+ configuration value.
86
+ def endpoint_uri( user = nil, service = :automated_batch )
87
+ raise "System Number not known" if user.nil? && system_number.nil?
88
+
89
+ # Translate the service
90
+ service = case service
91
+ when :automated_batch
92
+ [ Postini::API::EndpointResolver::Service::V2AutomatedBatch, "automatedbatch" ]
93
+ end
94
+
95
+ if user.nil?
96
+ "https://api-s#{system_number}.postini.com/api2/#{service[1]}"
97
+ else
98
+ remote = Postini::API::EndpointResolver::EndpointResolverPort.new
99
+ remote.wiredump_dev = soap4r_wiredump_dev if soap4r_wiredump?
100
+
101
+ request = Postini::API::EndpointResolver::GetServiceEndpoint.new(
102
+ api_key, user, service[0]
103
+ )
104
+ response = remote.getServiceEndpoint( request )
105
+ response.endpointURI
106
+ end
107
+ end
108
+
109
+ def auth( service = :automated_batch, username = nil, password = nil, xauth = nil )
110
+ username ||= self.username
111
+ password ||= self.password
112
+ if password.nil?
113
+ xauth ||= self.xauth
114
+ end
115
+
116
+ case service
117
+ when :automated_batch
118
+ API::AutomatedBatch::AuthElem.new(
119
+ api_key, username, password, xauth
120
+ )
121
+ end
72
122
  end
73
123
 
74
- if user.nil?
75
- "https://api-s#{system_number}.postini.com/api2/#{service[1]}"
76
- else
77
- remote = Postini::API::EndpointResolver::EndpointResolverPort.new
78
- request = Postini::API::EndpointResolver::GetServiceEndpoint.new(
79
- Postini.api_key, user, service[0]
80
- )
81
- response = remote.getServiceEndpoint( request )
82
- response.endpointURI
124
+ def debug?
125
+ @@debug ||= false
83
126
  end
84
- end
85
-
86
- def self.auth( service = :automated_batch, username = nil, password = nil, xauth = nil )
87
- username ||= self.username
88
- password ||= self.password
89
- if password.nil?
90
- xauth ||= self.xauth
127
+
128
+ def soap4r_wiredump?
129
+ @@soap4r_wiredump ||= false
130
+ end
131
+
132
+ def logger
133
+ @@logger ||= Logger.new('/dev/null')
91
134
  end
92
135
 
93
- case service
94
- when :automated_batch
95
- API::AutomatedBatch::AuthElem.new(
96
- api_key, username, password, xauth
97
- )
136
+ def soap4r_wiredump_dev
137
+ @@soap4r_wiredump_dev ||= soap4r_debug_dev
98
138
  end
139
+
99
140
  end
141
+
100
142
  end
data/website/index.html CHANGED
@@ -33,7 +33,7 @@
33
33
  <h1>postini Gem</h1>
34
34
  <div id="version" class="clickable" onclick='document.location = "http://rubyforge.org/projects/postini4r"; return false'>
35
35
  <p>Get Version</p>
36
- <a href="http://rubyforge.org/projects/postini4r" class="numbers">0.0.1</a>
36
+ <a href="http://rubyforge.org/projects/postini4r" class="numbers">0.0.3</a>
37
37
  </div>
38
38
  <h2>Part of the postini4r project</h2>
39
39
  <p>The postini4r project is a collection of sub-projects that aim to implement a broad range of Postini-related tools.</p>
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: postini
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kenneth Kalmer
@@ -9,9 +9,19 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-08-19 00:00:00 +02:00
12
+ date: 2008-08-21 00:00:00 +02:00
13
13
  default_executable:
14
14
  dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: soap4r
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - "="
22
+ - !ruby/object:Gem::Version
23
+ version: 1.5.8
24
+ version:
15
25
  - !ruby/object:Gem::Dependency
16
26
  name: hoe
17
27
  type: :development
@@ -83,11 +93,12 @@ has_rdoc: true
83
93
  homepage: http://postini4r.rubyforge.org
84
94
  post_install_message: |+
85
95
 
86
- For more information on postini4r, see http://postini4r.rubyforge.org
87
-
88
- NOTE: Change this information in PostInstall.txt
89
- You can also delete it if you don't want it.
96
+ For more information on postini4r's postini gem, see
97
+ http://postini4r.rubyforge.org/postini
90
98
 
99
+ Remember to contact your Postini provider, or Postini directly, to gain access
100
+ to the Postini Early Access Program. You'll need a unique API key to make use
101
+ of this gem.
91
102
 
92
103
  rdoc_options:
93
104
  - --main