google_apps 0.3.1 → 0.3.2
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/lib/google_apps/atom/export.rb +54 -0
- data/lib/google_apps/transport.rb +3 -2
- metadata +1 -1
@@ -6,26 +6,75 @@ module GoogleApps
|
|
6
6
|
set_header
|
7
7
|
end
|
8
8
|
|
9
|
+
# to_s returns @document as a string.
|
9
10
|
def to_s
|
10
11
|
@document.to_s
|
11
12
|
end
|
12
13
|
|
14
|
+
# start_date specifies a start date for the extract.
|
15
|
+
# Matching results that occurred before this date will
|
16
|
+
# not be included in the result set. start_date takes
|
17
|
+
# a string as an argument, the format is as follows:
|
18
|
+
#
|
19
|
+
# 'yyyy-MM-dd HH:mm' where yyyy is the four digit year,
|
20
|
+
# MM is the two digit month, dd is the two digit day,
|
21
|
+
# HH is the hour of the day 0-23 and mm is the minute
|
22
|
+
# 0-59
|
23
|
+
#
|
24
|
+
# start_date '2012-01-01 00:00'
|
25
|
+
#
|
26
|
+
# start_date returns @document.root
|
13
27
|
def start_date(date)
|
14
28
|
add_prop('beginDate', date)
|
15
29
|
end
|
16
30
|
|
31
|
+
# end_date specifies an end date for the extract.
|
32
|
+
# Matching results that occurred past this date will
|
33
|
+
# not be included in the result set. end_date takes
|
34
|
+
# a string as an argument, the format is as follows:
|
35
|
+
#
|
36
|
+
# 'yyyy-MM-dd HH:mm' where yyyy is the four digit year,
|
37
|
+
# MM is the two digit month, dd is the two digit day,
|
38
|
+
# HH is the hour of the day 0-23 and mm is the minute
|
39
|
+
# 0-59
|
40
|
+
#
|
41
|
+
# end_date '2012-01-01 08:30'
|
42
|
+
#
|
43
|
+
# end_date returns @document.root
|
17
44
|
def end_date(date)
|
18
45
|
add_prop('endDate', date)
|
19
46
|
end
|
20
47
|
|
48
|
+
# include_deleted will specify that matches which
|
49
|
+
# have been deleted should be returned as well.
|
50
|
+
# The default is to omit deleted matches.
|
51
|
+
#
|
52
|
+
# include_deleted
|
53
|
+
#
|
54
|
+
# include_deleted returns @document.root
|
21
55
|
def include_deleted
|
22
56
|
add_prop('includeDeleted', 'true')
|
23
57
|
end
|
24
58
|
|
59
|
+
# query specifies a query string to be used when
|
60
|
+
# filtering the messages to be returned. You can
|
61
|
+
# use any string that you could use in Google's
|
62
|
+
# Advanced Search interface.
|
63
|
+
#
|
64
|
+
# query 'from: Bob'
|
65
|
+
#
|
66
|
+
# query returns @document.root
|
25
67
|
def query(query_string)
|
26
68
|
add_prop('searchQuery', query_string)
|
27
69
|
end
|
28
70
|
|
71
|
+
# content specifies the data to be returned in the
|
72
|
+
# mailbox export. There are two valid arguments:
|
73
|
+
# 'FULL_MESSAGE' or 'HEADER_ONLY'
|
74
|
+
#
|
75
|
+
# content 'HEADER_ONLY'
|
76
|
+
#
|
77
|
+
# content returns @document.root
|
29
78
|
def content(type)
|
30
79
|
add_prop('packageContent', type)
|
31
80
|
end
|
@@ -33,6 +82,9 @@ module GoogleApps
|
|
33
82
|
|
34
83
|
private
|
35
84
|
|
85
|
+
# set_header adds the appropriate XML boilerplate for
|
86
|
+
# a mailbox extract as specified by the GoogleApps
|
87
|
+
# Email Audit API.
|
36
88
|
def set_header
|
37
89
|
@document.root = Atom::XML::Node.new 'atom:entry'
|
38
90
|
|
@@ -40,6 +92,8 @@ module GoogleApps
|
|
40
92
|
Atom::XML::Namespace.new(@document.root, 'apps', 'http://schemas.google.com/apps/2006')
|
41
93
|
end
|
42
94
|
|
95
|
+
# add_prop adds an element of the type: apps:property
|
96
|
+
# to the extract document.
|
43
97
|
def add_prop(name, value)
|
44
98
|
prop = Atom::XML::Node.new('apps:property')
|
45
99
|
prop['name'] = name
|
@@ -81,8 +81,9 @@ module GoogleApps
|
|
81
81
|
(@response = request(uri)).body
|
82
82
|
end
|
83
83
|
|
84
|
-
def fetch_export(
|
84
|
+
def fetch_export(username, req_id, filename) # :nodoc:
|
85
85
|
# TODO: Shouldn't rely on export_status being run first. Self, this is lazy and stupid.
|
86
|
+
export_status(username, req_id)
|
86
87
|
doc = REXML::Document.new(@response.body)
|
87
88
|
urls = []
|
88
89
|
doc.elements.each('entry/apps:property') do |property|
|
@@ -90,7 +91,7 @@ module GoogleApps
|
|
90
91
|
end
|
91
92
|
|
92
93
|
urls.each do |url|
|
93
|
-
download(url, filename)
|
94
|
+
download(url, filename + "#{urls.index[url]}")
|
94
95
|
end
|
95
96
|
end
|
96
97
|
|