google_apps 0.3.10 → 0.3.11

Sign up to get free protection for your applications and to get access to all the features.
@@ -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: