google_apps 0.3.10 → 0.3.11

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.
@@ -4,7 +4,7 @@ module GoogleApps
4
4
  attr_reader :document
5
5
 
6
6
  def initialize
7
- @document = Atom::XML::Document.new
7
+ new_doc
8
8
  add_header
9
9
  end
10
10
 
@@ -18,18 +18,16 @@ module GoogleApps
18
18
  #
19
19
  # new_user returns the full XML document.
20
20
  def new_user(user_name, first, last, password, quota=nil)
21
- new_doc
22
- add_header
23
- @document.root << login_node(user_name, password)
24
- @document.root << quota_node(quota) if quota
25
- @document.root << name_node(first, last)
26
-
27
- @document
21
+ set_values suspended: 'false', username: user_name, password: password, first_name: first, last_name: last, quota: quota
28
22
  end
29
23
 
30
- # new_doc re-initializes the XML document.
31
- def new_doc
32
- @document = Atom::XML::Document.new
24
+ # TODO: Document
25
+ def set_values(values = {})
26
+ @document.root << login_node(values[:suspended], values[:username], values[:password])
27
+ @document.root << quota_node(values[:quota]) if values[:quota]
28
+ @document.root << name_node(values[:first_name], values[:last_name]) if values[:first_name] and values[:last_name]
29
+
30
+ @document
33
31
  end
34
32
 
35
33
  # login_node adds an apps:login attribute to @document.
@@ -40,7 +38,7 @@ module GoogleApps
40
38
  # login_node 'username', 'password', suspended
41
39
  #
42
40
  # login_node returns an 'apps:login' LibXML::XML::Node
43
- def login_node(user_name, password, suspended="false")
41
+ def old_login_node(user_name, password, suspended="false")
44
42
  suspended = "true" unless suspended == "false"
45
43
  login = Atom::XML::Node.new('apps:login')
46
44
  login['userName'] = user_name
@@ -52,13 +50,13 @@ module GoogleApps
52
50
  end
53
51
 
54
52
  # TODO: This needs to be cleaned and documented.
55
- def update_node(user_name = nil, password = nil, suspended = nil)
53
+ def login_node(suspended = "false", user_name = nil, password = nil)
56
54
  login = Atom::XML::Node.new('apps:login')
57
55
  login['userName'] = user_name unless user_name.nil?
58
- login['password'] = password unless password.nil?
59
- login['suspended'] = suspended unless suspended.nil?
56
+ login['password'] = OpenSSL::Digest::SHA1.hexdigest password unless password.nil?
57
+ login['hashFunctionName'] = Atom::HASH_FUNCTION unless password.nil?
58
+ login['suspended'] = suspended.to_s
60
59
 
61
- @document.root << login
62
60
  login
63
61
  end
64
62
 
@@ -99,6 +97,11 @@ module GoogleApps
99
97
 
100
98
  private
101
99
 
100
+ # new_doc re-initializes the XML document.
101
+ def new_doc
102
+ @document = Atom::XML::Document.new
103
+ end
104
+
102
105
  def add_header
103
106
  @document.root = Atom::XML::Node.new('atom:entry')
104
107
 
@@ -39,9 +39,8 @@ module GoogleApps
39
39
  set_headers :auth
40
40
 
41
41
  @response = request(uri)
42
- @response.body.split("\n").grep(/auth=(.*)/i)
43
42
 
44
- @token = $1
43
+ set_auth_token
45
44
 
46
45
  @response
47
46
  end
@@ -210,6 +209,8 @@ module GoogleApps
210
209
  self.send(:update, instance_variable_get("@#{$2}"), *args)
211
210
  when "get"
212
211
  self.send(:get, instance_variable_get("@#{$2}"), *args)
212
+ when "add"
213
+ self.send(:add, instance_variable_get("@#{$2}"), *args)
213
214
  else
214
215
  super
215
216
  end
@@ -229,6 +230,15 @@ module GoogleApps
229
230
  "&Email=#{CGI::escape(account)}&Passwd=#{CGI::escape(pass)}&accountType=HOSTED&service=apps"
230
231
  end
231
232
 
233
+
234
+ # Grab the auth token from the response body
235
+ def set_auth_token
236
+ @response.body.split("\n").grep(/auth=(.*)/i)
237
+
238
+ @token = $1
239
+ end
240
+
241
+
232
242
  def request(uri)
233
243
  # TODO: Clashes with @request reader
234
244
  Net::HTTP.start(uri.host, uri.port, :use_ssl => uri.scheme == 'https') do |http|
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: google_apps
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.10
4
+ version: 0.3.11
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-05-09 00:00:00.000000000 Z
12
+ date: 2012-06-01 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: Library for interfacing with Google Apps' Domain and Application APIs
15
15
  email: