-
Notifications
You must be signed in to change notification settings - Fork 6
/
flickr.lib.backup.pas
90 lines (80 loc) · 3.49 KB
/
flickr.lib.backup.pas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
// Copyright (c) 2015, Jordi Corbilla
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are met:
//
// - Redistributions of source code must retain the above copyright notice,
// this list of conditions and the following disclaimer.
// - Redistributions in binary form must reproduce the above copyright notice,
// this list of conditions and the following disclaimer in the documentation
// and/or other materials provided with the distribution.
// - Neither the name of this library nor the names of its contributors may be
// used to endorse or promote products derived from this software without
// specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// POSSIBILITY OF SUCH DAMAGE.
unit flickr.lib.backup;
interface
uses
System.Zip, System.SysUtils;
type
TBackup = class(TObject)
class function Produce(folder : string) : TDate;
end;
implementation
{ TBackup }
class function TBackup.Produce(folder: string) : TDate;
var
zipfile : TZipFile;
folderName : string;
fileName : string;
begin
ZipFile := TZipFile.Create;
try
folderName := DateToStr(Date).Replace('/','');
folderName := folder + '\Backups\backup_' + folderName;
if not DirectoryExists(folderName) then
begin
if ForceDirectories(folderName) then
begin
fileName := folderName + '\' + 'flickrStats.zip';
if FileExists(fileName) then
ZipFile.Open(fileName, zmReadWrite)
else
ZipFile.Open(fileName, zmWrite);
if FileExists(folder + '\flickrRepository.xml') then
zipfile.Add(folder + '\flickrRepository.xml');
if FileExists(folder + '\flickrRepositoryGlobal.xml') then
zipfile.Add(folder + '\flickrRepositoryGlobal.xml');
if FileExists(folder + '\flickrOrganic.xml') then
zipfile.Add(folder + '\flickrOrganic.xml');
if FileExists(folder + '\flickrGroups.xml') then
zipfile.Add(folder + '\flickrGroups.xml');
if FileExists(folder + '\flickrProfiles.xml') then
zipfile.Add(folder + '\flickrProfiles.xml');
if DirectoryExists(folder + '\Albums') then
zipfile.ZipDirectoryContents(folderName + '\' + 'flickrStatsAlbums.zip', folder + '\Albums');
if DirectoryExists(folder + '\Groups') then
zipfile.ZipDirectoryContents(folderName + '\' + 'flickrStatsGroups.zip', folder + '\Groups');
if DirectoryExists(folder + '\Users') then
zipfile.ZipDirectoryContents(folderName + '\' + 'flickrStatsUsers.zip', folder + '\Users');
ZipFile.Close;
end;
end;
finally
ZipFile.Free;
end;
result := Date;
end;
end.