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.
@@ -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 = {:google_api_config_file => Pathname.new(ENV['HOME']) + '.google-api.yaml', :google_calendar_name => "My Facebook Events"}
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
@@ -1,5 +1,6 @@
1
1
  module FacebookGoogleCalendarSync
2
2
 
3
+ # Converts Facebook event into Google event hash
3
4
  class EventConverter
4
5
 
5
6
  attr_accessor :facebook_event, :google_calendar_id
@@ -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
- result = client.execute(params.merge(:headers => {'Content-Type' => 'application/json'}))
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
- add_event google_calendar.id, facebook_event.to_hash
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
- update_event google_calendar.id, google_event.id, facebook_event.to_hash.merge(google_event)
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
@@ -1,3 +1,3 @@
1
1
  module FacebookGoogleCalendarSync
2
- VERSION = "0.2.0"
2
+ VERSION = "0.2.1"
3
3
  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.0
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-04-18 00:00:00.000000000 Z
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