facebook-google-calendar-sync 0.2.0 → 0.2.1
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/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
|