gcal4ruby 0.1.4 → 0.2.0
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/CHANGELOG +3 -0
- data/lib/gcal4ruby/base.rb +6 -6
- data/lib/gcal4ruby/event.rb +36 -13
- metadata +1 -1
    
        data/CHANGELOG
    CHANGED
    
    | @@ -1,4 +1,7 @@ | |
| 1 1 | 
             
            #=CHANGELOG
         | 
| 2 | 
            +
            #==version 0.2.0
         | 
| 3 | 
            +
            #* Fixed redirect URI query params problem
         | 
| 4 | 
            +
            #* Updated syntax for finding events to include most google api parameters,  Non-backwards compatible.
         | 
| 2 5 | 
             
            #==version 0.1.4
         | 
| 3 6 | 
             
            #* Added additional search criteria for Event.find
         | 
| 4 7 | 
             
            #==version 0.1.3
         | 
    
        data/lib/gcal4ruby/base.rb
    CHANGED
    
    | @@ -120,7 +120,7 @@ module GCal4Ruby | |
| 120 120 | 
             
                  end
         | 
| 121 121 | 
             
                  puts "Starting post\nHeader: #{header}\nContent: #{content}" if @debug
         | 
| 122 122 | 
             
                  https.start do |http|
         | 
| 123 | 
            -
                    ret = http.post(location. | 
| 123 | 
            +
                    ret = http.post(location.to_s, content, header)
         | 
| 124 124 | 
             
                  end
         | 
| 125 125 | 
             
                  while ret.is_a?(Net::HTTPRedirection)
         | 
| 126 126 | 
             
                    puts "Redirect recieved, resending post" if @debug
         | 
| @@ -153,7 +153,7 @@ module GCal4Ruby | |
| 153 153 | 
             
                  end
         | 
| 154 154 | 
             
                  puts "Starting post\nHeader: #{header}\nContent: #{content}" if @debug
         | 
| 155 155 | 
             
                  https.start do |http|
         | 
| 156 | 
            -
                    ret = http.put(location. | 
| 156 | 
            +
                    ret = http.put(location.to_s, content, header)
         | 
| 157 157 | 
             
                  end
         | 
| 158 158 | 
             
                  while ret.is_a?(Net::HTTPRedirection)
         | 
| 159 159 | 
             
                    puts "Redirect recieved, resending post" if @debug
         | 
| @@ -186,10 +186,10 @@ module GCal4Ruby | |
| 186 186 | 
             
                  end
         | 
| 187 187 | 
             
                  puts "Starting post\nHeader: #{header}\n" if @debug
         | 
| 188 188 | 
             
                  http.start do |http|
         | 
| 189 | 
            -
                    ret = http.get(location. | 
| 189 | 
            +
                    ret = http.get(location.to_s, header)
         | 
| 190 190 | 
             
                  end
         | 
| 191 191 | 
             
                  while ret.is_a?(Net::HTTPRedirection)
         | 
| 192 | 
            -
                    puts "Redirect recieved, resending  | 
| 192 | 
            +
                    puts "Redirect recieved, resending get to #{ret['location']}" if @debug
         | 
| 193 193 | 
             
                	  http.start do |http|
         | 
| 194 194 | 
             
                	    ret = http.get(ret['location'], header)
         | 
| 195 195 | 
             
                	  end
         | 
| @@ -198,7 +198,7 @@ module GCal4Ruby | |
| 198 198 | 
             
                    puts "20x response recieved\nResponse: \n"+ret.read_body if @debug
         | 
| 199 199 | 
             
                    return ret
         | 
| 200 200 | 
             
                  else
         | 
| 201 | 
            -
                    puts " | 
| 201 | 
            +
                    puts "Error recieved, resending get" if @debug
         | 
| 202 202 | 
             
                    raise HTTPGetFailed, ret.body
         | 
| 203 203 | 
             
                  end
         | 
| 204 204 | 
             
                end
         | 
| @@ -219,7 +219,7 @@ module GCal4Ruby | |
| 219 219 | 
             
                  end
         | 
| 220 220 | 
             
                  puts "Starting post\nHeader: #{header}\n" if @debug
         | 
| 221 221 | 
             
                  https.start do |http|
         | 
| 222 | 
            -
                    ret = http.delete(location. | 
| 222 | 
            +
                    ret = http.delete(location.to_s, header)
         | 
| 223 223 | 
             
                  end
         | 
| 224 224 | 
             
                  while ret.is_a?(Net::HTTPRedirection)
         | 
| 225 225 | 
             
                    puts "Redirect recieved, resending post" if @debug
         | 
    
        data/lib/gcal4ruby/event.rb
    CHANGED
    
    | @@ -14,7 +14,7 @@ module GCal4Ruby | |
| 14 14 | 
             
              #    event.save
         | 
| 15 15 | 
             
              #
         | 
| 16 16 | 
             
              #2. Find an existing Event
         | 
| 17 | 
            -
              #    event = Event.find(cal, "Soccer Game", :first)
         | 
| 17 | 
            +
              #    event = Event.find(cal, "Soccer Game", {:scope => :first})
         | 
| 18 18 | 
             
              #
         | 
| 19 19 | 
             
              #3. Find all events containing the search term
         | 
| 20 20 | 
             
              #    event = Event.find(cal, "Soccer Game")
         | 
| @@ -345,19 +345,43 @@ module GCal4Ruby | |
| 345 345 | 
             
                  end
         | 
| 346 346 | 
             
                end
         | 
| 347 347 |  | 
| 348 | 
            -
                #Finds the event that matches  | 
| 349 | 
            -
                 | 
| 350 | 
            -
                 | 
| 351 | 
            -
                 | 
| 348 | 
            +
                #Finds the event that matches a query term in the event title or description.  
         | 
| 349 | 
            +
                #'query' is a string to perform the search on.
         | 
| 350 | 
            +
                #The params hash can contain the following hash values
         | 
| 351 | 
            +
                #* *scope*: may be :all or :first, indicating whether to return the first record found or an array of all records that match the query.  Default is :all.
         | 
| 352 | 
            +
                #* *range*: a hash including a :start and :end time to constrain the search by
         | 
| 353 | 
            +
                #* *max_results*: an integer indicating the number of results to return.  Default is 25.
         | 
| 354 | 
            +
                #* *sort_order*: either 'ascending' or 'descending'.
         | 
| 355 | 
            +
                #* *single_events*: either 'true' to return all recurring events as a single entry, or 'false' to return all recurring events as a unique event for each recurrence.
         | 
| 356 | 
            +
                #* *ctz*: the timezone to return the event times in
         | 
| 357 | 
            +
                def self.find(calendar, query = '', params = {})
         | 
| 358 | 
            +
                  query_string = ''
         | 
| 359 | 
            +
                  
         | 
| 360 | 
            +
                  #parse params hash for values
         | 
| 361 | 
            +
                  range = params[:range] || nil
         | 
| 362 | 
            +
                  max_results = params[:max_results] || nil
         | 
| 363 | 
            +
                  sort_order = params[:sortorder] || nil
         | 
| 364 | 
            +
                  single_events = params[:singleevents] || nil
         | 
| 365 | 
            +
                  timezone = params[:ctz] || nil
         | 
| 366 | 
            +
                  
         | 
| 367 | 
            +
                  #set up query string
         | 
| 368 | 
            +
                  query_string += "q=#{query}" if query
         | 
| 369 | 
            +
                  if range
         | 
| 352 370 | 
             
                    if not range.is_a? Hash or (range.size > 0 and (not range[:start].is_a? Time or not range[:end].is_a? Time))
         | 
| 353 371 | 
             
                      raise "The date range must be a hash including the :start and :end date values as Times"
         | 
| 354 372 | 
             
                    else
         | 
| 355 373 | 
             
                      date_range = ''
         | 
| 356 374 | 
             
                      if range.size > 0
         | 
| 357 | 
            -
                         | 
| 375 | 
            +
                        query_string += "&start-min=#{range[:start].xmlschema}&start-max=#{range[:end].xmlschema}"
         | 
| 358 376 | 
             
                      end
         | 
| 359 377 | 
             
                    end
         | 
| 360 | 
            -
             | 
| 378 | 
            +
                  end
         | 
| 379 | 
            +
                  query_string += "&max-results=#{max_results}" if max_results
         | 
| 380 | 
            +
                  query_string += "&sortorder=#{sort_order}" if sort_order
         | 
| 381 | 
            +
                  query_string += "&ctz=#{timezone.gsub(" ", "_")}" if timezone
         | 
| 382 | 
            +
                  query_string += "&singleevents#{single_events}" if single_events
         | 
| 383 | 
            +
                  if query_string
         | 
| 384 | 
            +
                    events = calendar.service.send_get("http://www.google.com/calendar/feeds/default/private/full?"+query_string)
         | 
| 361 385 | 
             
                    ret = []
         | 
| 362 386 | 
             
                    REXML::Document.new(events.read_body).root.elements.each("entry"){}.map do |entry|
         | 
| 363 387 | 
             
                      entry.attributes["xmlns:gCal"] = "http://schemas.google.com/gCal/2005"
         | 
| @@ -366,13 +390,13 @@ module GCal4Ruby | |
| 366 390 | 
             
                      event = Event.new(calendar)
         | 
| 367 391 | 
             
                      event.load("<?xml version='1.0' encoding='UTF-8'?>#{entry.to_s}")
         | 
| 368 392 | 
             
                      ret << event
         | 
| 393 | 
            +
                    end
         | 
| 369 394 | 
             
                  end
         | 
| 370 | 
            -
                  if scope == : | 
| 371 | 
            -
                    return ret
         | 
| 372 | 
            -
                  elsif scope == :first
         | 
| 395 | 
            +
                  if params[:scope] == :first
         | 
| 373 396 | 
             
                    return ret[0]
         | 
| 397 | 
            +
                  else
         | 
| 398 | 
            +
                    return ret
         | 
| 374 399 | 
             
                  end
         | 
| 375 | 
            -
                  return false
         | 
| 376 400 | 
             
                end
         | 
| 377 401 |  | 
| 378 402 | 
             
                #Returns true if the event exists on the Google Calendar Service.
         | 
| @@ -412,7 +436,6 @@ module GCal4Ruby | |
| 412 436 | 
             
                    ele.delete_element("gd:reminder")
         | 
| 413 437 | 
             
                  end
         | 
| 414 438 | 
             
                end
         | 
| 415 | 
            -
            end
         | 
| 416 | 
            -
             | 
| 439 | 
            +
              end
         | 
| 417 440 | 
             
            end
         | 
| 418 441 |  |