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.
@@ -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