facebook-google-calendar-sync 0.2.0 → 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/facebook-google-calendar-sync +7 -0
- data/lib/facebook_google_calendar_sync.rb +10 -1
- data/lib/facebook_google_calendar_sync/event_converter.rb +1 -0
- data/lib/facebook_google_calendar_sync/google_calendar_client.rb +7 -1
- data/lib/facebook_google_calendar_sync/synchroniser.rb +14 -2
- data/lib/facebook_google_calendar_sync/version.rb +1 -1
- metadata +8 -2
@@ -1,4 +1,5 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
+
$: << File.expand_path('../lib', File.dirname(__FILE__)) ##Delete before checkin
|
2
3
|
require 'facebook_google_calendar_sync/cli'
|
3
4
|
require 'facebook_google_calendar_sync'
|
4
5
|
require 'optparse'
|
@@ -23,6 +24,12 @@ OptionParser.new do |opts|
|
|
23
24
|
options[:google_calendar_name] = name
|
24
25
|
end
|
25
26
|
|
27
|
+
v_help = "Verbose logging"
|
28
|
+
opts.on("-v", "--verbose", v_help) do | verbose |
|
29
|
+
options[:log_level] = :debug
|
30
|
+
end
|
31
|
+
|
32
|
+
|
26
33
|
opts.on( '-h', '--help', 'Display this screen' ) do
|
27
34
|
puts opts
|
28
35
|
exit
|
@@ -12,11 +12,16 @@ module FacebookGoogleCalendarSync
|
|
12
12
|
|
13
13
|
extend Logging
|
14
14
|
|
15
|
-
DEFAULT_CONFIG = {
|
15
|
+
DEFAULT_CONFIG = {
|
16
|
+
:google_api_config_file => Pathname.new(ENV['HOME']) + '.google-api.yaml',
|
17
|
+
:google_calendar_name => "My Facebook Events",
|
18
|
+
:log_level => :info
|
19
|
+
}
|
16
20
|
|
17
21
|
def self.sync config
|
18
22
|
config = DEFAULT_CONFIG.merge(config).with_indifferent_access
|
19
23
|
configure_client config[:google_api_config_file]
|
24
|
+
configure_logger config[:log_level]
|
20
25
|
facebook_calendar = retrieve_facebook_calendar config[:facebook_calendar_url]
|
21
26
|
google_calendar = GoogleCalendar.find_or_create_calendar config[:google_calendar_name]
|
22
27
|
logger.info "Last known Facebook event update occurred at #{google_calendar.last_known_event_update}"
|
@@ -25,6 +30,10 @@ module FacebookGoogleCalendarSync
|
|
25
30
|
|
26
31
|
private
|
27
32
|
|
33
|
+
def self.configure_logger log_level
|
34
|
+
logger.level = Logger.const_get(log_level.to_s.upcase)
|
35
|
+
end
|
36
|
+
|
28
37
|
def self.configure_client google_api_config_file
|
29
38
|
GoogleCalendarClient.configure do | conf |
|
30
39
|
conf.google_api_config_file = google_api_config_file
|
@@ -3,6 +3,7 @@ require 'pathname'
|
|
3
3
|
require 'google/api_client'
|
4
4
|
require 'ostruct'
|
5
5
|
require 'facebook_google_calendar_sync/version'
|
6
|
+
require 'facebook_google_calendar_sync/logging'
|
6
7
|
|
7
8
|
module FacebookGoogleCalendarSync
|
8
9
|
|
@@ -10,6 +11,9 @@ class SyncException < StandardError
|
|
10
11
|
end
|
11
12
|
|
12
13
|
module GoogleCalendarClient
|
14
|
+
|
15
|
+
include Logging
|
16
|
+
|
13
17
|
def self.configure
|
14
18
|
@@config = OpenStruct.new
|
15
19
|
yield @@config
|
@@ -76,7 +80,9 @@ end
|
|
76
80
|
private
|
77
81
|
|
78
82
|
def make_call params
|
79
|
-
|
83
|
+
request = params.merge(:headers => {'Content-Type' => 'application/json'})
|
84
|
+
logger.debug("Calling Google Calendar API with request #{request}")
|
85
|
+
result = client.execute(request)
|
80
86
|
check_for_success result, params
|
81
87
|
result.data
|
82
88
|
end
|
@@ -66,7 +66,7 @@ module FacebookGoogleCalendarSync
|
|
66
66
|
def handle_google_event_not_found facebook_event
|
67
67
|
if event_created_since_calendar_last_modified facebook_event
|
68
68
|
logger.info "Adding '#{facebook_event.summary}' to #{google_calendar.summary}"
|
69
|
-
|
69
|
+
add_new_event facebook_event
|
70
70
|
else
|
71
71
|
logger.info "Not updating '#{facebook_event.summary}' as it has been deleted from the target calendar since #{google_calendar.last_known_event_update}."
|
72
72
|
end
|
@@ -75,12 +75,24 @@ module FacebookGoogleCalendarSync
|
|
75
75
|
def handle_google_event_found facebook_event, google_event
|
76
76
|
if event_updated_since_calendar_last_modified facebook_event
|
77
77
|
logger.info "Updating '#{facebook_event.summary}' in #{google_calendar.summary}"
|
78
|
-
|
78
|
+
update_existing_event facebook_event, google_event
|
79
79
|
else
|
80
80
|
logger.info "Not updating '#{facebook_event.summary}' in #{google_calendar.summary} as #{facebook_event.last_modified} is not later than #{google_event.updated}"
|
81
81
|
end
|
82
82
|
end
|
83
83
|
|
84
|
+
def add_new_event facebook_event
|
85
|
+
add_event google_calendar.id, facebook_event.to_hash
|
86
|
+
end
|
87
|
+
|
88
|
+
def update_existing_event facebook_event, google_event
|
89
|
+
update_event google_calendar.id, google_event.id, merge_events(facebook_event, google_event)
|
90
|
+
end
|
91
|
+
|
92
|
+
def merge_events facebook_event, google_event
|
93
|
+
google_event.to_hash.merge(facebook_event.to_hash)
|
94
|
+
end
|
95
|
+
|
84
96
|
def event_updated_since_calendar_last_modified facebook_event
|
85
97
|
facebook_event.last_modified > google_calendar.last_known_event_update
|
86
98
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: facebook-google-calendar-sync
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
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: 2013-
|
12
|
+
date: 2013-09-14 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: google-api-client
|
@@ -184,12 +184,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
184
184
|
- - ! '>='
|
185
185
|
- !ruby/object:Gem::Version
|
186
186
|
version: '0'
|
187
|
+
segments:
|
188
|
+
- 0
|
189
|
+
hash: 2896404305834103829
|
187
190
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
188
191
|
none: false
|
189
192
|
requirements:
|
190
193
|
- - ! '>='
|
191
194
|
- !ruby/object:Gem::Version
|
192
195
|
version: '0'
|
196
|
+
segments:
|
197
|
+
- 0
|
198
|
+
hash: 2896404305834103829
|
193
199
|
requirements: []
|
194
200
|
rubyforge_project:
|
195
201
|
rubygems_version: 1.8.23
|