google_calendar 0.2.1 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.1
1
+ 0.2.2
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{google_calendar}
8
- s.version = "0.2.1"
8
+ s.version = "0.2.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Steve Zich"]
12
- s.date = %q{2011-11-10}
12
+ s.date = %q{2012-03-27}
13
13
  s.description = %q{A minimal wrapper around the google calendar API, which uses nokogiri for fast parsing.}
14
14
  s.email = %q{steve.zich@gmail.com}
15
15
  s.extra_rdoc_files = [
@@ -44,7 +44,7 @@ Gem::Specification.new do |s|
44
44
  s.homepage = %q{http://github.com/northworld/google_calendar}
45
45
  s.licenses = ["MIT"]
46
46
  s.require_paths = ["lib"]
47
- s.rubygems_version = %q{1.4.2}
47
+ s.rubygems_version = %q{1.6.2}
48
48
  s.summary = %q{A lightweight google calendar API wrapper}
49
49
  s.test_files = [
50
50
  "test/helper.rb",
@@ -79,7 +79,7 @@ module Google
79
79
  def find_events_in_range(start_min, start_max)
80
80
  formatted_start_min = start_min.strftime("%Y-%m-%dT%H:%M:%S")
81
81
  formatted_start_max = start_max.strftime("%Y-%m-%dT%H:%M:%S")
82
- event_lookup("?start-min=#{formatted_start_min}&start-max=#{formatted_start_max}")
82
+ event_lookup("?start-min=#{formatted_start_min}&start-max=#{formatted_start_max}&recurrence-expansion-start=#{formatted_start_min}&recurrence-expansion-end=#{formatted_start_max}")
83
83
  end
84
84
 
85
85
  # Attempts to find the event specified by the id
@@ -158,6 +158,10 @@ module Google
158
158
  :auth_url => auth_url)
159
159
  self
160
160
  end
161
+
162
+ def display_color
163
+ calendar_data.xpath("//entry[title='#{@calendar}']/color/@value").first.value
164
+ end
161
165
 
162
166
  protected
163
167
 
@@ -188,15 +192,21 @@ module Google
188
192
  #
189
193
  def events_url
190
194
  if @calendar and !@calendar.include?("@")
191
- xml = @connection.send(Addressable::URI.parse("https://www.google.com/calendar/feeds/default/allcalendars/full"), :get)
192
- doc = Nokogiri::XML(xml.body)
193
- doc.remove_namespaces!
194
- link = doc.xpath("//entry[title='#{@calendar}']/link[contains(@rel, '#eventFeed')]/@href").to_s
195
+ link = calendar_data.xpath("//entry[title='#{@calendar}']/link[contains(@rel, '#eventFeed')]/@href").to_s
195
196
  link.empty? ? raise(Google::InvalidCalendar) : link
196
197
  else
197
198
  "https://www.google.com/calendar/feeds/#{calendar_id}/private/full"
198
199
  end
199
200
  end
201
+
202
+ def calendar_data
203
+ unless @calendar_data
204
+ xml = @connection.send(Addressable::URI.parse("https://www.google.com/calendar/feeds/default/allcalendars/full"), :get)
205
+ @calendar_data = Nokogiri::XML(xml.body)
206
+ @calendar_data.remove_namespaces!
207
+ end
208
+ @calendar_data
209
+ end
200
210
 
201
211
  def setup_event(event) #:nodoc:
202
212
  event.calendar = self
data/lib/google/event.rb CHANGED
@@ -36,6 +36,7 @@ module Google
36
36
  @where = params[:where]
37
37
  @start_time = params[:start_time]
38
38
  @end_time = params[:end_time]
39
+ self.all_day= params[:all_day] if params[:all_day]
39
40
  @calendar = params[:calendar]
40
41
  @raw_xml = params[:raw_xml]
41
42
  @quickadd = params[:quickadd]
@@ -72,6 +73,25 @@ module Google
72
73
  raise ArgumentError, "End Time must be either Time or String" unless (time.is_a?(String) || time.is_a?(Time))
73
74
  @end_time = ((time.is_a? String) ? Time.parse(time) : time)
74
75
  end
76
+
77
+ # Returns whether the Event is an all-day event, based on whether the event starts at the beginning and ends at the end of the day.
78
+ #
79
+ def all_day?
80
+ duration == 24 * 60 * 60 # Exactly one day
81
+ end
82
+
83
+ def all_day=(time)
84
+ if time.class == String
85
+ time = Time.parse(time)
86
+ end
87
+ @start_time = time.strftime("%Y-%m-%d")
88
+ @end_time = (time + 24*60*60).strftime("%Y-%m-%d")
89
+ end
90
+
91
+ # Duration in seconds
92
+ def duration
93
+ Time.parse(end_time) - Time.parse(start_time)
94
+ end
75
95
 
76
96
  #
77
97
  def self.build_from_google_feed(xml, calendar)
@@ -128,7 +128,7 @@ class TestGoogleCalendar < Test::Unit::TestCase
128
128
  should "find events in range" do
129
129
  start_min = DateTime.new(2011, 2, 1, 11, 1, 1)
130
130
  start_max = DateTime.new(2011, 2, 28, 23, 59, 59)
131
- @calendar.expects(:event_lookup).with('?start-min=2011-02-01T11:01:01&start-max=2011-02-28T23:59:59')
131
+ @calendar.expects(:event_lookup).with('?start-min=2011-02-01T11:01:01&start-max=2011-02-28T23:59:59&recurrence-expansion-start=2011-02-01T11:01:01&recurrence-expansion-end=2011-02-28T23:59:59')
132
132
  events = @calendar.find_events_in_range(start_min, start_max)
133
133
  end
134
134
 
@@ -216,6 +216,41 @@ class TestGoogleCalendar < Test::Unit::TestCase
216
216
  end # Logged on context
217
217
 
218
218
  end # Connected context
219
+
220
+ context "Event instance methods" do
221
+ context "#all_day?" do
222
+ context "when the event is 24 hours long or more" do
223
+ should "be true" do
224
+ @event = Event.new(:start_time => "2012-03-31", :end_time => "2012-04-01")
225
+ assert @event.all_day?
226
+ end
227
+ end
228
+ context "when the event is not an all-day event" do
229
+ should "be false" do
230
+ @event = Event.new(:start_time => "2012-03-27T10:00:00.000-07:00", :end_time => "2012-03-27T10:30:00.000-07:00")
231
+ assert !@event.all_day?
232
+ end
233
+ end
234
+ end
235
+
236
+ context "#all_day=" do
237
+ context "sets the start and end time to the appropriate values for an all day event on that day" do
238
+ should "set the start time" do
239
+ @event = Event.new :all_day => Time.parse("2012-05-02 12:24")
240
+ assert_equal @event.start_time, "2012-05-02"
241
+ end
242
+ should "set the end time" do
243
+ @event = Event.new :all_day => Time.parse("2012-05-02 12:24")
244
+ assert_equal @event.end_time, "2012-05-03"
245
+ end
246
+ should "be able to handle strings" do
247
+ @event = Event.new :all_day => "2012-05-02 12:24"
248
+ assert_equal @event.start_time, "2012-05-02"
249
+ assert_equal @event.end_time, "2012-05-03"
250
+ end
251
+ end
252
+ end
253
+ end
219
254
 
220
255
  def test_https_extension
221
256
  assert_nothing_thrown do
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: google_calendar
3
3
  version: !ruby/object:Gem::Version
4
- hash: 21
4
+ hash: 19
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 2
9
- - 1
10
- version: 0.2.1
9
+ - 2
10
+ version: 0.2.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Steve Zich
@@ -15,12 +15,12 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-11-10 00:00:00 -08:00
18
+ date: 2012-03-27 00:00:00 -07:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
22
  type: :runtime
23
- version_requirements: &id001 !ruby/object:Gem::Requirement
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
24
  none: false
25
25
  requirements:
26
26
  - - ">="
@@ -31,12 +31,12 @@ dependencies:
31
31
  - 4
32
32
  - 4
33
33
  version: 1.4.4
34
- requirement: *id001
35
- prerelease: false
36
34
  name: nokogiri
35
+ version_requirements: *id001
36
+ prerelease: false
37
37
  - !ruby/object:Gem::Dependency
38
38
  type: :runtime
39
- version_requirements: &id002 !ruby/object:Gem::Requirement
39
+ requirement: &id002 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ">="
@@ -47,12 +47,12 @@ dependencies:
47
47
  - 2
48
48
  - 2
49
49
  version: 2.2.2
50
- requirement: *id002
51
- prerelease: false
52
50
  name: addressable
51
+ version_requirements: *id002
52
+ prerelease: false
53
53
  - !ruby/object:Gem::Dependency
54
54
  type: :development
55
- version_requirements: &id003 !ruby/object:Gem::Requirement
55
+ requirement: &id003 !ruby/object:Gem::Requirement
56
56
  none: false
57
57
  requirements:
58
58
  - - ">="
@@ -61,12 +61,12 @@ dependencies:
61
61
  segments:
62
62
  - 0
63
63
  version: "0"
64
- requirement: *id003
65
- prerelease: false
66
64
  name: shoulda
65
+ version_requirements: *id003
66
+ prerelease: false
67
67
  - !ruby/object:Gem::Dependency
68
68
  type: :development
69
- version_requirements: &id004 !ruby/object:Gem::Requirement
69
+ requirement: &id004 !ruby/object:Gem::Requirement
70
70
  none: false
71
71
  requirements:
72
72
  - - ~>
@@ -77,12 +77,12 @@ dependencies:
77
77
  - 0
78
78
  - 0
79
79
  version: 1.0.0
80
- requirement: *id004
81
- prerelease: false
82
80
  name: bundler
81
+ version_requirements: *id004
82
+ prerelease: false
83
83
  - !ruby/object:Gem::Dependency
84
84
  type: :development
85
- version_requirements: &id005 !ruby/object:Gem::Requirement
85
+ requirement: &id005 !ruby/object:Gem::Requirement
86
86
  none: false
87
87
  requirements:
88
88
  - - ~>
@@ -93,12 +93,12 @@ dependencies:
93
93
  - 5
94
94
  - 1
95
95
  version: 1.5.1
96
- requirement: *id005
97
- prerelease: false
98
96
  name: jeweler
97
+ version_requirements: *id005
98
+ prerelease: false
99
99
  - !ruby/object:Gem::Dependency
100
100
  type: :development
101
- version_requirements: &id006 !ruby/object:Gem::Requirement
101
+ requirement: &id006 !ruby/object:Gem::Requirement
102
102
  none: false
103
103
  requirements:
104
104
  - - ">="
@@ -107,12 +107,12 @@ dependencies:
107
107
  segments:
108
108
  - 0
109
109
  version: "0"
110
- requirement: *id006
111
- prerelease: false
112
110
  name: rcov
111
+ version_requirements: *id006
112
+ prerelease: false
113
113
  - !ruby/object:Gem::Dependency
114
114
  type: :development
115
- version_requirements: &id007 !ruby/object:Gem::Requirement
115
+ requirement: &id007 !ruby/object:Gem::Requirement
116
116
  none: false
117
117
  requirements:
118
118
  - - ">="
@@ -121,9 +121,9 @@ dependencies:
121
121
  segments:
122
122
  - 0
123
123
  version: "0"
124
- requirement: *id007
125
- prerelease: false
126
124
  name: mocha
125
+ version_requirements: *id007
126
+ prerelease: false
127
127
  description: A minimal wrapper around the google calendar API, which uses nokogiri for fast parsing.
128
128
  email: steve.zich@gmail.com
129
129
  executables: []
@@ -187,7 +187,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
187
187
  requirements: []
188
188
 
189
189
  rubyforge_project:
190
- rubygems_version: 1.4.2
190
+ rubygems_version: 1.6.2
191
191
  signing_key:
192
192
  specification_version: 3
193
193
  summary: A lightweight google calendar API wrapper