google_apps 0.4.1 → 0.4.2
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/google_apps/atom/group_member.rb +54 -0
- data/lib/google_apps/transport.rb +23 -4
- data/lib/google_apps.rb +2 -1
- metadata +14 -21
@@ -0,0 +1,54 @@
|
|
1
|
+
module GoogleApps
|
2
|
+
module Atom
|
3
|
+
class GroupMember
|
4
|
+
attr_accessor :member
|
5
|
+
|
6
|
+
def initialize
|
7
|
+
@document = Atom::XML::Document.new
|
8
|
+
add_header
|
9
|
+
end
|
10
|
+
|
11
|
+
def member=(member)
|
12
|
+
@member.nil? ? set_member(member) : change_member(member)
|
13
|
+
end
|
14
|
+
|
15
|
+
def to_s
|
16
|
+
@document.to_s
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def set_member(member)
|
22
|
+
@document.root << build_node(member)
|
23
|
+
|
24
|
+
@member = member
|
25
|
+
end
|
26
|
+
|
27
|
+
def build_node(member)
|
28
|
+
node = Atom::XML::Node.new('apps:property')
|
29
|
+
node.attributes['name'] = 'memberId'
|
30
|
+
node.attributes['value'] = member
|
31
|
+
|
32
|
+
node
|
33
|
+
end
|
34
|
+
|
35
|
+
def change_member(member)
|
36
|
+
# This really should use find but I can't figure out how to
|
37
|
+
# get the XPath to work with this document.
|
38
|
+
@document.root.each do |node|
|
39
|
+
node.attributes['value'] = member if node.attributes['value'] == @member
|
40
|
+
end
|
41
|
+
|
42
|
+
@member = member
|
43
|
+
end
|
44
|
+
|
45
|
+
def add_header
|
46
|
+
@document.root = Atom::XML::Node.new('atom:entry')
|
47
|
+
|
48
|
+
Atom::XML::Namespace.new(@document.root, 'atom', 'http://www.w3.org/2005/Atom')
|
49
|
+
Atom::XML::Namespace.new(@document.root, 'apps', 'http://schemas.google.com/apps/2006')
|
50
|
+
Atom::XML::Namespace.new(@document.root, 'gd', 'http://schemas.google.com/g/2005')
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -5,7 +5,7 @@ require 'rexml/document'
|
|
5
5
|
|
6
6
|
module GoogleApps
|
7
7
|
class Transport
|
8
|
-
attr_reader :request, :response
|
8
|
+
attr_reader :request, :response, :domain
|
9
9
|
attr_accessor :auth, :user, :group, :nickname
|
10
10
|
|
11
11
|
BOUNDARY = "=AaB03xDFHT8xgg"
|
@@ -18,11 +18,12 @@ module GoogleApps
|
|
18
18
|
@group = targets[:group] || "https://apps-apis.google.com/a/feeds/group/2.0/#{domain}"
|
19
19
|
@nickname = targets[:nickname]
|
20
20
|
@export = targets[:export] || "https://apps-apis.google.com/a/feeds/compliance/audit/mail/export/#{domain}"
|
21
|
+
@domain = domain
|
21
22
|
@token = nil
|
22
23
|
@response = nil
|
23
24
|
@request = nil
|
24
25
|
end
|
25
|
-
|
26
|
+
|
26
27
|
|
27
28
|
# authenticate will take the provided account and
|
28
29
|
# password and attempt to authenticate them with
|
@@ -126,6 +127,20 @@ module GoogleApps
|
|
126
127
|
@response = request(uri)
|
127
128
|
end
|
128
129
|
|
130
|
+
|
131
|
+
# add_member_to adds a member to a group in the domain.
|
132
|
+
# It takes a group_id and a GoogleApps::Atom::GroupMember
|
133
|
+
# document as arguments.
|
134
|
+
#
|
135
|
+
# add_member_to 'test', document
|
136
|
+
#
|
137
|
+
# add_member_to returns the response received from Google.
|
138
|
+
def add_member_to(group_id, document)
|
139
|
+
puts @group + "/#{group_id}/member"
|
140
|
+
add(@group + "/#{group_id}/member", document)
|
141
|
+
end
|
142
|
+
|
143
|
+
|
129
144
|
# add is a generic target for method_missing. It is
|
130
145
|
# intended to handle the general case of adding
|
131
146
|
# to the GoogleApps Domain. It takes an API endpoint
|
@@ -174,13 +189,13 @@ module GoogleApps
|
|
174
189
|
uri = URI(endpoint + "/#{id}")
|
175
190
|
@request = Net::HTTP::Delete.new(uri.path)
|
176
191
|
set_headers :user
|
177
|
-
|
192
|
+
|
178
193
|
@response = request(uri)
|
179
194
|
end
|
180
195
|
|
181
196
|
# migration performs mail migration from a local
|
182
197
|
# mail environment to GoogleApps. migrate takes a
|
183
|
-
# username a GoogleApps::Atom::Properties dcoument
|
198
|
+
# username a GoogleApps::Atom::Properties dcoument
|
184
199
|
# and the message as plain text (String) as arguments.
|
185
200
|
#
|
186
201
|
# migrate 'user', properties, message
|
@@ -253,6 +268,10 @@ module GoogleApps
|
|
253
268
|
when :migrate
|
254
269
|
@request['content-type'] = "multipart/related; boundary=\"#{BOUNDARY}\""
|
255
270
|
@request['authorization'] = "GoogleLogin auth=#{@token}"
|
271
|
+
when :member
|
272
|
+
@request['content-type'] = "application/x-www-form-urlencoded"
|
273
|
+
@request['content-length'] = 0
|
274
|
+
@request['authorization'] = "GoogleLogin auth=#{@token}"
|
256
275
|
else
|
257
276
|
@request['content-type'] = "application/atom+xml"
|
258
277
|
@request['authorization'] = "GoogleLogin auth=#{@token}"
|
data/lib/google_apps.rb
CHANGED
@@ -5,4 +5,5 @@ require 'google_apps/atom/group'
|
|
5
5
|
require 'google_apps/atom/public_key'
|
6
6
|
require 'google_apps/atom/export'
|
7
7
|
require 'google_apps/atom/message'
|
8
|
-
require 'google_apps/atom/message_attributes'
|
8
|
+
require 'google_apps/atom/message_attributes'
|
9
|
+
require 'google_apps/atom/group_member'
|
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.4.
|
4
|
+
version: 0.4.2
|
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-06-
|
12
|
+
date: 2012-06-09 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: Library for interfacing with Google Apps' Domain and Application APIs
|
15
15
|
email:
|
@@ -17,24 +17,16 @@ executables: []
|
|
17
17
|
extensions: []
|
18
18
|
extra_rdoc_files: []
|
19
19
|
files:
|
20
|
-
-
|
21
|
-
|
22
|
-
-
|
23
|
-
|
24
|
-
-
|
25
|
-
|
26
|
-
-
|
27
|
-
|
28
|
-
-
|
29
|
-
|
30
|
-
- !binary |-
|
31
|
-
bGliL2dvb2dsZV9hcHBzL2F0b20vcHVibGljX2tleS5yYg==
|
32
|
-
- !binary |-
|
33
|
-
bGliL2dvb2dsZV9hcHBzL2F0b20vdXNlci5yYg==
|
34
|
-
- !binary |-
|
35
|
-
bGliL2dvb2dsZV9hcHBzL3RyYW5zcG9ydC5yYg==
|
36
|
-
- !binary |-
|
37
|
-
bGliL2dvb2dsZV9hcHBzLnJi
|
20
|
+
- lib/google_apps/atom/atom.rb
|
21
|
+
- lib/google_apps/atom/export.rb
|
22
|
+
- lib/google_apps/atom/group.rb
|
23
|
+
- lib/google_apps/atom/group_member.rb
|
24
|
+
- lib/google_apps/atom/message.rb
|
25
|
+
- lib/google_apps/atom/message_attributes.rb
|
26
|
+
- lib/google_apps/atom/public_key.rb
|
27
|
+
- lib/google_apps/atom/user.rb
|
28
|
+
- lib/google_apps/transport.rb
|
29
|
+
- lib/google_apps.rb
|
38
30
|
homepage: https://github.com/LeakyBucket/google_apps
|
39
31
|
licenses: []
|
40
32
|
post_install_message:
|
@@ -55,8 +47,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
55
47
|
version: '0'
|
56
48
|
requirements: []
|
57
49
|
rubyforge_project:
|
58
|
-
rubygems_version: 1.8.
|
50
|
+
rubygems_version: 1.8.23
|
59
51
|
signing_key:
|
60
52
|
specification_version: 3
|
61
53
|
summary: Google Apps APIs
|
62
54
|
test_files: []
|
55
|
+
has_rdoc:
|