calagator 0.0.1.pre1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (384) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +23 -0
  3. data/README.md +75 -0
  4. data/Rakefile +12 -0
  5. data/app/assets/images/confused-alligator-sm.png +0 -0
  6. data/app/assets/images/disk.png +0 -0
  7. data/app/assets/images/edit.png +0 -0
  8. data/app/assets/images/external_sites/epdx.png +0 -0
  9. data/app/assets/images/external_sites/external.gif +0 -0
  10. data/app/assets/images/external_sites/facebook.png +0 -0
  11. data/app/assets/images/external_sites/foursquare.png +0 -0
  12. data/app/assets/images/external_sites/gowalla.png +0 -0
  13. data/app/assets/images/external_sites/lanyrd.png +0 -0
  14. data/app/assets/images/external_sites/meetup.png +0 -0
  15. data/app/assets/images/external_sites/plancast.png +0 -0
  16. data/app/assets/images/external_sites/shizzow.png +0 -0
  17. data/app/assets/images/external_sites/upcoming.png +0 -0
  18. data/app/assets/images/external_sites/yelp.png +0 -0
  19. data/app/assets/images/feed.png +0 -0
  20. data/app/assets/images/heart.png +0 -0
  21. data/app/assets/images/icon_ical.gif +0 -0
  22. data/app/assets/images/information.png +0 -0
  23. data/app/assets/images/nav_marker.gif +0 -0
  24. data/app/assets/images/nav_marker.png +0 -0
  25. data/app/assets/images/plus.png +0 -0
  26. data/app/assets/images/redx.png +0 -0
  27. data/app/assets/images/site-icon.png +0 -0
  28. data/app/assets/images/spinner.gif +0 -0
  29. data/app/assets/images/star.png +0 -0
  30. data/app/assets/images/subnav_marker.gif +0 -0
  31. data/app/assets/images/subnav_marker.png +0 -0
  32. data/app/assets/images/tag_blue.png +0 -0
  33. data/app/assets/images/tag_icons/angular.png +0 -0
  34. data/app/assets/images/tag_icons/beer.png +0 -0
  35. data/app/assets/images/tag_icons/bitcoin.png +0 -0
  36. data/app/assets/images/tag_icons/free.png +0 -0
  37. data/app/assets/images/tag_icons/golang.png +0 -0
  38. data/app/assets/images/tag_icons/html.png +0 -0
  39. data/app/assets/images/tag_icons/javascript.png +0 -0
  40. data/app/assets/images/tag_icons/linux.png +0 -0
  41. data/app/assets/images/tag_icons/php.png +0 -0
  42. data/app/assets/images/tag_icons/pizza.png +0 -0
  43. data/app/assets/images/tag_icons/python.png +0 -0
  44. data/app/assets/images/tag_icons/rails.png +0 -0
  45. data/app/assets/images/tag_icons/ruby.png +0 -0
  46. data/app/assets/images/tag_icons/sass.png +0 -0
  47. data/app/assets/images/tag_icons/swift.png +0 -0
  48. data/app/assets/images/transmit_blue.png +0 -0
  49. data/app/assets/images/weekday_background.gif +0 -0
  50. data/app/assets/javascripts/calagator.js +18 -0
  51. data/app/assets/javascripts/calagator/forms.js +60 -0
  52. data/app/assets/stylesheets/calagator.scss +8 -0
  53. data/app/assets/stylesheets/calagator/common.scss +14 -0
  54. data/app/assets/stylesheets/calagator/datepicker.scss +177 -0
  55. data/app/assets/stylesheets/calagator/errors.css +110 -0
  56. data/app/assets/stylesheets/calagator/forms.scss +4 -0
  57. data/app/assets/stylesheets/calagator/reset.css +40 -0
  58. data/app/assets/stylesheets/calagator/theme.css +0 -0
  59. data/app/controllers/calagator/admin_controller.rb +27 -0
  60. data/app/controllers/calagator/application_controller.rb +82 -0
  61. data/app/controllers/calagator/events_controller.rb +171 -0
  62. data/app/controllers/calagator/site_controller.rb +35 -0
  63. data/app/controllers/calagator/sources_controller.rb +94 -0
  64. data/app/controllers/calagator/venues_controller.rb +133 -0
  65. data/app/controllers/calagator/versions_controller.rb +20 -0
  66. data/app/helpers/calagator/application_helper.rb +128 -0
  67. data/app/helpers/calagator/events_helper.rb +184 -0
  68. data/app/helpers/calagator/google_event_export_helper.rb +67 -0
  69. data/app/helpers/calagator/mapping_helper.rb +103 -0
  70. data/app/helpers/calagator/sources_helper.rb +10 -0
  71. data/app/helpers/calagator/tags_helper.rb +42 -0
  72. data/app/helpers/calagator/time_range_helper.rb +166 -0
  73. data/app/models/calagator/event.rb +246 -0
  74. data/app/models/calagator/event/cloner.rb +39 -0
  75. data/app/models/calagator/event/ical_renderer.rb +155 -0
  76. data/app/models/calagator/event/overview.rb +45 -0
  77. data/app/models/calagator/event/saver.rb +58 -0
  78. data/app/models/calagator/event/search.rb +72 -0
  79. data/app/models/calagator/event/search_engine.rb +28 -0
  80. data/app/models/calagator/event/search_engine/apache_sunspot.rb +106 -0
  81. data/app/models/calagator/event/search_engine/sql.rb +107 -0
  82. data/app/models/calagator/source.rb +115 -0
  83. data/app/models/calagator/source/importer.rb +46 -0
  84. data/app/models/calagator/source/parser.rb +128 -0
  85. data/app/models/calagator/source/parser/facebook.rb +67 -0
  86. data/app/models/calagator/source/parser/hcal.rb +108 -0
  87. data/app/models/calagator/source/parser/http_authentication_required_error.rb +6 -0
  88. data/app/models/calagator/source/parser/ical.rb +186 -0
  89. data/app/models/calagator/source/parser/meetup.rb +72 -0
  90. data/app/models/calagator/source/parser/not_found.rb +9 -0
  91. data/app/models/calagator/source/parser/plancast.rb +59 -0
  92. data/app/models/calagator/venue.rb +161 -0
  93. data/app/models/calagator/venue/geocoder.rb +51 -0
  94. data/app/models/calagator/venue/search.rb +63 -0
  95. data/app/models/calagator/venue/search_engine.rb +24 -0
  96. data/app/models/calagator/venue/search_engine/apache_sunspot.rb +85 -0
  97. data/app/models/calagator/venue/search_engine/sql.rb +68 -0
  98. data/app/models/event/search_engine/base.rb +0 -0
  99. data/app/observers/calagator/cache_observer.rb +37 -0
  100. data/app/views/calagator/admin/events.html.erb +28 -0
  101. data/app/views/calagator/admin/index.html.erb +8 -0
  102. data/app/views/calagator/events/_feed_item.html.erb +62 -0
  103. data/app/views/calagator/events/_form.html.erb +63 -0
  104. data/app/views/calagator/events/_gcal_reminder.html.erb +1 -0
  105. data/app/views/calagator/events/_hcal.html.erb +41 -0
  106. data/app/views/calagator/events/_item.html.erb +120 -0
  107. data/app/views/calagator/events/_list.html.erb +30 -0
  108. data/app/views/calagator/events/_list_item.html.erb +37 -0
  109. data/app/views/calagator/events/_search_section.html.erb +15 -0
  110. data/app/views/calagator/events/_subnav.html.erb +13 -0
  111. data/app/views/calagator/events/_table.html.erb +74 -0
  112. data/app/views/calagator/events/duplicates.html.erb +58 -0
  113. data/app/views/calagator/events/edit.html.erb +3 -0
  114. data/app/views/calagator/events/index.atom.builder +32 -0
  115. data/app/views/calagator/events/index.html.erb +51 -0
  116. data/app/views/calagator/events/index.kml.erb +20 -0
  117. data/app/views/calagator/events/new.html.erb +7 -0
  118. data/app/views/calagator/events/search.html.erb +25 -0
  119. data/app/views/calagator/events/show.html.erb +81 -0
  120. data/app/views/calagator/site/_appropriateness_message.html.erb +15 -0
  121. data/app/views/calagator/site/_description.html.erb +3 -0
  122. data/app/views/calagator/site/about.html.erb +7 -0
  123. data/app/views/calagator/site/defunct.html.erb +15 -0
  124. data/app/views/calagator/site/export.html.erb +4 -0
  125. data/app/views/calagator/site/index.html.erb +40 -0
  126. data/app/views/calagator/site/opensearch.xml.builder +8 -0
  127. data/app/views/calagator/sources/_subnav.html.erb +0 -0
  128. data/app/views/calagator/sources/edit.html.erb +12 -0
  129. data/app/views/calagator/sources/import.html.erb +10 -0
  130. data/app/views/calagator/sources/index.html.erb +22 -0
  131. data/app/views/calagator/sources/new.html.erb +32 -0
  132. data/app/views/calagator/sources/show.html.erb +16 -0
  133. data/app/views/calagator/venues/_form.html.erb +57 -0
  134. data/app/views/calagator/venues/_subnav.html.erb +10 -0
  135. data/app/views/calagator/venues/duplicates.html.erb +65 -0
  136. data/app/views/calagator/venues/edit.html.erb +3 -0
  137. data/app/views/calagator/venues/index.html.erb +93 -0
  138. data/app/views/calagator/venues/index.kml.erb +15 -0
  139. data/app/views/calagator/venues/map.html.erb +4 -0
  140. data/app/views/calagator/venues/new.html.erb +5 -0
  141. data/app/views/calagator/venues/show.html.erb +113 -0
  142. data/app/views/calagator/versions/_chooser.html.erb +28 -0
  143. data/app/views/calagator/versions/_edit_with_chooser.html.erb +16 -0
  144. data/app/views/layouts/calagator/application.html.erb +110 -0
  145. data/config/deploy/local.rb +37 -0
  146. data/config/deploy/lucca.rb +33 -0
  147. data/config/initializers/dates.rb +7 -0
  148. data/config/initializers/formtastic.rb +82 -0
  149. data/config/initializers/geokit.rb +74 -0
  150. data/config/initializers/ics_renderer.rb +6 -0
  151. data/config/initializers/load_tag_model_extensions.rb +3 -0
  152. data/config/initializers/mime_types.rb +9 -0
  153. data/config/initializers/observers.rb +1 -0
  154. data/config/initializers/search_engine.rb +4 -0
  155. data/config/initializers/set_default_url_host.rb +5 -0
  156. data/config/initializers/time_get_zone.rb +8 -0
  157. data/config/locales/en.yml +5 -0
  158. data/config/routes.rb +55 -0
  159. data/config/secrets.yml.blag +75 -0
  160. data/config/sunspot.yml +23 -0
  161. data/db/development.sqlite3 +0 -0
  162. data/db/development.sqlite3.bak +0 -0
  163. data/db/development.sqlite3.old +0 -0
  164. data/db/development~20111112@110950.sqlite3 +0 -0
  165. data/db/migrate/001_create_events.rb +17 -0
  166. data/db/migrate/002_create_venues.rb +17 -0
  167. data/db/migrate/003_create_sources.rb +16 -0
  168. data/db/migrate/004_add_detailed_fields_to_venue.rb +19 -0
  169. data/db/migrate/005_add_end_time_to_events.rb +9 -0
  170. data/db/migrate/006_add_source_id_to_events.rb +9 -0
  171. data/db/migrate/008_add_source_id_to_venues.rb +10 -0
  172. data/db/migrate/009_add_duplicate_of_column_to_venues.rb +9 -0
  173. data/db/migrate/010_add_duplicate_of_column_to_events.rb +9 -0
  174. data/db/migrate/011_change_lat_long_type.rb +12 -0
  175. data/db/migrate/012_add_source_reimport.rb +9 -0
  176. data/db/migrate/013_change_end_time_to_duration.rb +11 -0
  177. data/db/migrate/014_remove_format_type_from_source.rb +9 -0
  178. data/db/migrate/015_create_updates.rb +15 -0
  179. data/db/migrate/016_remove_next_update_from_source.rb +9 -0
  180. data/db/migrate/20080705163959_change_duration_to_end_time.rb +11 -0
  181. data/db/migrate/20080705164959_create_tags_and_taggings.rb +28 -0
  182. data/db/migrate/20081011181519_create_versioned_events.rb +25 -0
  183. data/db/migrate/20081011193124_create_versioned_venues.rb +32 -0
  184. data/db/migrate/20081115190515_add_rrule_to_events.rb +15 -0
  185. data/db/migrate/20090912082129_create_versions.rb +18 -0
  186. data/db/migrate/20110219205156_add_closed_flag_to_venues.rb +9 -0
  187. data/db/migrate/20110220001008_add_wifi_flag_to_venues.rb +9 -0
  188. data/db/migrate/20110220011427_add_access_notes_to_venues.rb +9 -0
  189. data/db/migrate/20110220031117_add_events_count_to_venues.rb +8 -0
  190. data/db/migrate/20110604174521_add_venue_details_to_events.rb +9 -0
  191. data/db/migrate/20110717231316_acts_as_taggable_on_migration.rb +50 -0
  192. data/db/migrate/20120709092821_cleanup.rb +14 -0
  193. data/db/migrate/20120831234448_specify_venues_latitude_and_longitude_precision.rb +11 -0
  194. data/db/migrate/20150206085809_remove_updates.rb +13 -0
  195. data/db/migrate/20150207231355_add_locked_status_to_events.rb +5 -0
  196. data/db/production.sqlite3 +0 -0
  197. data/db/schema.rb +102 -0
  198. data/db/seeds.rb +16 -0
  199. data/db/test.sqlite3 +0 -0
  200. data/db/test2.sqlite3 +0 -0
  201. data/lib/calagator.rb +30 -0
  202. data/lib/calagator/blacklist_validator.rb +69 -0
  203. data/lib/calagator/decode_html_entities_hack.rb +33 -0
  204. data/lib/calagator/duplicate_checking.rb +133 -0
  205. data/lib/calagator/duplicate_checking/controller_actions.rb +38 -0
  206. data/lib/calagator/duplicate_checking/duplicate_finder.rb +83 -0
  207. data/lib/calagator/duplicate_checking/duplicate_squasher.rb +74 -0
  208. data/lib/calagator/engine.rb +30 -0
  209. data/lib/calagator/strip_whitespace.rb +19 -0
  210. data/lib/calagator/tag_model_extensions.rb +104 -0
  211. data/lib/calagator/url_prefixer.rb +9 -0
  212. data/lib/calagator/version.rb +3 -0
  213. data/lib/generators/calagator/install_generator.rb +39 -0
  214. data/lib/generators/calagator/templates/config/calagator.rb +26 -0
  215. data/lib/generators/calagator/templates/config/secrets.yml.sample +83 -0
  216. data/lib/secrets_reader.rb +76 -0
  217. data/lib/tasks/spec_db.rake +53 -0
  218. data/lib/tasks/sunspot_reindex_calagator.rake +6 -0
  219. data/lib/tasks/sunspot_solr_restart_enhancements.rake +19 -0
  220. data/lib/tasks/update_counter_caches.rake +13 -0
  221. data/lib/templates/erb/scaffold/_form.html.erb +11 -0
  222. data/lib/theme_reader.rb +17 -0
  223. data/lib/wait_for_solr.rb +25 -0
  224. data/spec/controllers/calagator/application_controller_spec.rb +47 -0
  225. data/spec/controllers/calagator/events_controller_spec.rb +794 -0
  226. data/spec/controllers/calagator/site_controller_spec.rb +59 -0
  227. data/spec/controllers/calagator/sources_controller_spec.rb +439 -0
  228. data/spec/controllers/calagator/venues_controller_spec.rb +319 -0
  229. data/spec/controllers/calagator/versions_controller_spec.rb +82 -0
  230. data/spec/controllers/squash_many_duplicates_examples.rb +49 -0
  231. data/spec/dummy/Gemfile +39 -0
  232. data/spec/dummy/Gemfile.lock +195 -0
  233. data/spec/dummy/README.rdoc +261 -0
  234. data/spec/dummy/Rakefile +7 -0
  235. data/spec/dummy/app/assets/images/rails.png +0 -0
  236. data/spec/dummy/app/assets/javascripts/application.js +16 -0
  237. data/spec/dummy/app/assets/stylesheets/application.css +14 -0
  238. data/spec/dummy/app/controllers/application_controller.rb +3 -0
  239. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  240. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  241. data/spec/dummy/config.ru +4 -0
  242. data/spec/dummy/config/application.rb +62 -0
  243. data/spec/dummy/config/boot.rb +6 -0
  244. data/spec/dummy/config/database.yml +25 -0
  245. data/spec/dummy/config/environment.rb +5 -0
  246. data/spec/dummy/config/environments/development.rb +37 -0
  247. data/spec/dummy/config/environments/production.rb +67 -0
  248. data/spec/dummy/config/environments/test.rb +37 -0
  249. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  250. data/spec/dummy/config/initializers/calagator.rb +26 -0
  251. data/spec/dummy/config/initializers/inflections.rb +15 -0
  252. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  253. data/spec/dummy/config/initializers/secret_token.rb +7 -0
  254. data/spec/dummy/config/initializers/session_store.rb +8 -0
  255. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  256. data/spec/dummy/config/locales/en.yml +5 -0
  257. data/spec/dummy/config/routes.rb +59 -0
  258. data/spec/dummy/config/secrets.yml +83 -0
  259. data/spec/dummy/db/development.sqlite3 +0 -0
  260. data/spec/dummy/db/migrate/20150309023304_create_events.calagator.rb +18 -0
  261. data/spec/dummy/db/migrate/20150309023305_create_venues.calagator.rb +18 -0
  262. data/spec/dummy/db/migrate/20150309023306_create_sources.calagator.rb +17 -0
  263. data/spec/dummy/db/migrate/20150309023307_add_detailed_fields_to_venue.calagator.rb +20 -0
  264. data/spec/dummy/db/migrate/20150309023308_add_end_time_to_events.calagator.rb +10 -0
  265. data/spec/dummy/db/migrate/20150309023309_add_source_id_to_events.calagator.rb +10 -0
  266. data/spec/dummy/db/migrate/20150309023310_add_source_id_to_venues.calagator.rb +11 -0
  267. data/spec/dummy/db/migrate/20150309023311_add_duplicate_of_column_to_venues.calagator.rb +10 -0
  268. data/spec/dummy/db/migrate/20150309023312_add_duplicate_of_column_to_events.calagator.rb +10 -0
  269. data/spec/dummy/db/migrate/20150309023313_change_lat_long_type.calagator.rb +13 -0
  270. data/spec/dummy/db/migrate/20150309023314_add_source_reimport.calagator.rb +10 -0
  271. data/spec/dummy/db/migrate/20150309023315_change_end_time_to_duration.calagator.rb +12 -0
  272. data/spec/dummy/db/migrate/20150309023316_remove_format_type_from_source.calagator.rb +10 -0
  273. data/spec/dummy/db/migrate/20150309023317_create_updates.calagator.rb +16 -0
  274. data/spec/dummy/db/migrate/20150309023318_remove_next_update_from_source.calagator.rb +10 -0
  275. data/spec/dummy/db/migrate/20150309023319_change_duration_to_end_time.calagator.rb +12 -0
  276. data/spec/dummy/db/migrate/20150309023320_create_tags_and_taggings.calagator.rb +29 -0
  277. data/spec/dummy/db/migrate/20150309023321_create_versioned_events.calagator.rb +26 -0
  278. data/spec/dummy/db/migrate/20150309023322_create_versioned_venues.calagator.rb +33 -0
  279. data/spec/dummy/db/migrate/20150309023323_add_rrule_to_events.calagator.rb +16 -0
  280. data/spec/dummy/db/migrate/20150309023324_create_versions.calagator.rb +19 -0
  281. data/spec/dummy/db/migrate/20150309023325_add_closed_flag_to_venues.calagator.rb +10 -0
  282. data/spec/dummy/db/migrate/20150309023326_add_wifi_flag_to_venues.calagator.rb +10 -0
  283. data/spec/dummy/db/migrate/20150309023327_add_access_notes_to_venues.calagator.rb +10 -0
  284. data/spec/dummy/db/migrate/20150309023328_add_events_count_to_venues.calagator.rb +9 -0
  285. data/spec/dummy/db/migrate/20150309023329_add_venue_details_to_events.calagator.rb +10 -0
  286. data/spec/dummy/db/migrate/20150309023330_acts_as_taggable_on_migration.calagator.rb +51 -0
  287. data/spec/dummy/db/migrate/20150309023331_cleanup.calagator.rb +15 -0
  288. data/spec/dummy/db/migrate/20150309023332_specify_venues_latitude_and_longitude_precision.calagator.rb +12 -0
  289. data/spec/dummy/db/migrate/20150309023333_remove_updates.calagator.rb +14 -0
  290. data/spec/dummy/db/migrate/20150309023334_add_locked_status_to_events.calagator.rb +6 -0
  291. data/spec/dummy/db/schema.rb +95 -0
  292. data/spec/dummy/db/seeds.rb +7 -0
  293. data/spec/dummy/db/test.sqlite3 +0 -0
  294. data/spec/dummy/doc/README_FOR_APP +2 -0
  295. data/spec/dummy/log/development.log +273 -0
  296. data/spec/dummy/public/404.html +26 -0
  297. data/spec/dummy/public/422.html +26 -0
  298. data/spec/dummy/public/500.html +25 -0
  299. data/spec/dummy/public/favicon.ico +0 -0
  300. data/spec/dummy/public/robots.txt +5 -0
  301. data/spec/dummy/script/rails +6 -0
  302. data/spec/dummy/test/performance/browsing_test.rb +12 -0
  303. data/spec/dummy/test/test_helper.rb +13 -0
  304. data/spec/factories.rb +93 -0
  305. data/spec/features/add_event_spec.rb +99 -0
  306. data/spec/features/add_venue_spec.rb +34 -0
  307. data/spec/features/admin_auth_spec.rb +22 -0
  308. data/spec/features/admin_lock_event_spec.rb +41 -0
  309. data/spec/features/import_events_from_feed_spec.rb +43 -0
  310. data/spec/features/managing_event_spec.rb +111 -0
  311. data/spec/features/managing_venue_spec.rb +71 -0
  312. data/spec/features/search_event_spec.rb +27 -0
  313. data/spec/helpers/calagator/application_helper_spec.rb +82 -0
  314. data/spec/helpers/calagator/events_helper_spec.rb +172 -0
  315. data/spec/helpers/calagator/google_event_export_helper_spec.rb +70 -0
  316. data/spec/helpers/calagator/sources_helper_spec.rb +12 -0
  317. data/spec/helpers/calagator/tags_helper_spec.rb +85 -0
  318. data/spec/helpers/calagator/time_range_helper_spec.rb +59 -0
  319. data/spec/lib/calagator/blacklist_validator_spec.rb +65 -0
  320. data/spec/lib/calagator/decode_html_entities_hack_spec.rb +54 -0
  321. data/spec/lib/calagator/settings_spec.rb +20 -0
  322. data/spec/lib/calagator/url_prefixer_spec.rb +33 -0
  323. data/spec/lib/secrets_reader_spec.rb +65 -0
  324. data/spec/models/calagator/event/cloner_spec.rb +43 -0
  325. data/spec/models/calagator/event/overview_spec.rb +79 -0
  326. data/spec/models/calagator/event/search_spec.rb +103 -0
  327. data/spec/models/calagator/event_search_spec.rb +149 -0
  328. data/spec/models/calagator/event_spec.rb +859 -0
  329. data/spec/models/calagator/source/parser_facebook_spec.rb +73 -0
  330. data/spec/models/calagator/source/parser_hcal_spec.rb +69 -0
  331. data/spec/models/calagator/source/parser_ical_non_standard_spec.rb +91 -0
  332. data/spec/models/calagator/source/parser_ical_spec.rb +322 -0
  333. data/spec/models/calagator/source/parser_meetup_spec.rb +69 -0
  334. data/spec/models/calagator/source/parser_plancast_spec.rb +53 -0
  335. data/spec/models/calagator/source/parser_spec.rb +238 -0
  336. data/spec/models/calagator/source_spec.rb +135 -0
  337. data/spec/models/calagator/venue/search_spec.rb +92 -0
  338. data/spec/models/calagator/venue_search_spec.rb +124 -0
  339. data/spec/models/calagator/venue_spec.rb +346 -0
  340. data/spec/models/tag_spec.rb +35 -0
  341. data/spec/rails_helper.rb +39 -0
  342. data/spec/spec_helper.rb +140 -0
  343. data/spec/support/disable_geocoding.rb +1 -0
  344. data/spec/support/http_samples.rb +5 -0
  345. data/spec/support/samples/facebook.json +23 -0
  346. data/spec/support/samples/hcal_basic.xml +6 -0
  347. data/spec/support/samples/hcal_dup_event_dup_venue.xml +13 -0
  348. data/spec/support/samples/hcal_event_duplicates_fixture.xml +13 -0
  349. data/spec/support/samples/hcal_event_wo_lat_and_long.xml +14 -0
  350. data/spec/support/samples/hcal_multiple.xml +16 -0
  351. data/spec/support/samples/hcal_same_event_twice_with_different_venues.xml +12 -0
  352. data/spec/support/samples/hcal_single.xml +8 -0
  353. data/spec/support/samples/hcal_two_identical_events.xml +14 -0
  354. data/spec/support/samples/hcal_upcoming_v1.html +412 -0
  355. data/spec/support/samples/hcal_upcoming_v2.html +749 -0
  356. data/spec/support/samples/hcal_upcoming_v3.html +685 -0
  357. data/spec/support/samples/hcal_upcoming_v4.html +761 -0
  358. data/spec/support/samples/ical_apple.ics +22 -0
  359. data/spec/support/samples/ical_apple_v3.ics +37 -0
  360. data/spec/support/samples/ical_basic.ics +15 -0
  361. data/spec/support/samples/ical_basic_with_duration.ics +16 -0
  362. data/spec/support/samples/ical_event_with_squashed_venue.ics +12 -0
  363. data/spec/support/samples/ical_eventful_many.ics +504 -0
  364. data/spec/support/samples/ical_gmt.ics +12 -0
  365. data/spec/support/samples/ical_google.ics +786 -0
  366. data/spec/support/samples/ical_multiple_calendars.ics +111 -0
  367. data/spec/support/samples/ical_upcoming.ics +36 -0
  368. data/spec/support/samples/ical_upcoming_many.ics +682 -0
  369. data/spec/support/samples/ical_upcoming_v2.ics +43 -0
  370. data/spec/support/samples/ical_z.ics +10 -0
  371. data/spec/support/samples/meetup.ics +16 -0
  372. data/spec/support/samples/meetup.json +31 -0
  373. data/spec/support/samples/plancast.ics +59 -0
  374. data/spec/support/samples/plancast.json +51 -0
  375. data/spec/support/samples/plancast_with_missing_venue.json +39 -0
  376. data/spec/support/samples/upcoming_v1.xml +8 -0
  377. data/spec/support/samples/upcoming_v2_with_invalid_utc_dates.xml +8 -0
  378. data/spec/support/time_convenience_methods.rb +8 -0
  379. data/spec/support/time_zones.rb +12 -0
  380. data/spec/support/url_helpers.rb +5 -0
  381. data/spec/support/wait_for_ajax.rb +15 -0
  382. data/spec/support/webmock.rb +8 -0
  383. data/spec/travis_spec.rb +7 -0
  384. metadata +1194 -0
@@ -0,0 +1,12 @@
1
+ BEGIN:VCALENDAR
2
+ X-WR-CALNAME;VALUE=TEXT:Black cat
3
+ VERSION:2.0
4
+ CALSCALE:GREGORIAN
5
+ PRODID:-//dclicio.us//iCal 1.0//EN
6
+ X-WR-TIMEZONE;VALUE=TEXT:US/Pacific
7
+ BEGIN:VEVENT
8
+ SUMMARY: Time 0800-0900 GMT
9
+ DTSTART;TZID=GMT:20200507T080000
10
+ DTEND;TZID=GMT:20200507T090000
11
+ END:VEVENT
12
+ END:VCALENDAR
@@ -0,0 +1,786 @@
1
+ BEGIN:VCALENDAR
2
+ PRODID:-//Google Inc//Google Calendar 70.9054//EN
3
+ VERSION:2.0
4
+ CALSCALE:GREGORIAN
5
+ METHOD:PUBLISH
6
+ X-WR-CALNAME:Portland User Groups
7
+ X-WR-TIMEZONE:America/Los_Angeles
8
+ X-WR-CALDESC:Listing of user groups and technology meetups in Portland\, OR
9
+ .
10
+ BEGIN:VTIMEZONE
11
+ TZID:America/Los_Angeles
12
+ X-LIC-LOCATION:America/Los_Angeles
13
+ BEGIN:DAYLIGHT
14
+ TZOFFSETFROM:-0800
15
+ TZOFFSETTO:-0700
16
+ TZNAME:PDT
17
+ DTSTART:19700308T020000
18
+ RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
19
+ END:DAYLIGHT
20
+ BEGIN:STANDARD
21
+ TZOFFSETFROM:-0700
22
+ TZOFFSETTO:-0800
23
+ TZNAME:PST
24
+ DTSTART:19701101T020000
25
+ RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
26
+ END:STANDARD
27
+ END:VTIMEZONE
28
+ BEGIN:VEVENT
29
+ DTSTART;TZID=America/Los_Angeles:20071024T183000
30
+ DTEND;TZID=America/Los_Angeles:20071024T193000
31
+ RRULE:FREQ=MONTHLY;BYDAY=4WE;WKST=SU;UNTIL=20080124T033000Z
32
+ DTSTAMP:20080302T192847Z
33
+ UID:5rc84iqjlrn7q56vr6uin8vcvk@google.com
34
+ CLASS:PUBLIC
35
+ CREATED:20071010T234413Z
36
+ LAST-MODIFIED:20080214T072347Z
37
+ LOCATION:CubeSpace
38
+ SEQUENCE:1
39
+ STATUS:CONFIRMED
40
+ SUMMARY:XPDX (eXtreme Programming) at CubeSpace
41
+ TRANSP:OPAQUE
42
+ END:VEVENT
43
+ BEGIN:VEVENT
44
+ DTSTART;TZID=America/Los_Angeles:20080204T190000
45
+ DTEND;TZID=America/Los_Angeles:20080204T210000
46
+ RRULE:FREQ=WEEKLY;INTERVAL=2;BYDAY=MO;WKST=SU
47
+ DTSTAMP:20080302T192847Z
48
+ UID:jfns8accmu3qhlsdsshhk9bei4@google.com
49
+ CLASS:PUBLIC
50
+ CREATED:20080129T004032Z
51
+ DESCRIPTION:http://dorkbot.org/dorkbotpdx/\nhttp://music.columbia.edu/piper
52
+ mail/dorkbotpdx-announce/
53
+ LAST-MODIFIED:20080206T011711Z
54
+ LOCATION:Lucky Lab Beer Hall - 1945 NW Quimby
55
+ SEQUENCE:2
56
+ STATUS:CONFIRMED
57
+ SUMMARY:Dorkbot PDX
58
+ TRANSP:OPAQUE
59
+ END:VEVENT
60
+ BEGIN:VEVENT
61
+ DTSTART;TZID=America/Los_Angeles:20080108T183000
62
+ DTEND;TZID=America/Los_Angeles:20080108T210000
63
+ RRULE:FREQ=MONTHLY;BYDAY=2TU;WKST=SU
64
+ DTSTAMP:20080302T192847Z
65
+ UID:irnbchiq52n1jj2vqte1r8i1cc@google.com
66
+ CLASS:PUBLIC
67
+ CREATED:20080131T231532Z
68
+ DESCRIPTION:http://www.padnug.org/
69
+ LAST-MODIFIED:20080131T231634Z
70
+ LOCATION:10260 SW Greenburg Road\, Suite 600
71
+ SEQUENCE:2
72
+ STATUS:CONFIRMED
73
+ SUMMARY:PADNUG (.NET User Group)
74
+ TRANSP:OPAQUE
75
+ END:VEVENT
76
+ BEGIN:VEVENT
77
+ DTSTART;TZID=America/Los_Angeles:20070425T183000
78
+ DTEND;TZID=America/Los_Angeles:20070425T210000
79
+ RRULE:FREQ=MONTHLY;BYDAY=4WE;WKST=SU;UNTIL=20080109T075959Z
80
+ DTSTAMP:20080302T192847Z
81
+ UID:pb50p0cop2g3qpvfqieb2nu4ls@google.com
82
+ CLASS:PUBLIC
83
+ CREATED:20070312T235647Z
84
+ DESCRIPTION:http://www.padnug.org/
85
+ LAST-MODIFIED:20080131T231532Z
86
+ LOCATION:10260 SW Greenburg Road\, Suite 600
87
+ SEQUENCE:2
88
+ STATUS:CONFIRMED
89
+ SUMMARY:PADNUG (.NET User Group)
90
+ TRANSP:OPAQUE
91
+ END:VEVENT
92
+ BEGIN:VEVENT
93
+ DTSTART;TZID=America/Los_Angeles:20080206T173000
94
+ DTEND;TZID=America/Los_Angeles:20080206T203000
95
+ RRULE:FREQ=MONTHLY;BYDAY=1WE;WKST=SU
96
+ DTSTAMP:20080302T192847Z
97
+ UID:v4vvbfp4sjlg7a27gcirmuvs7o@google.com
98
+ CLASS:PUBLIC
99
+ CREATED:20080130T192325Z
100
+ DESCRIPTION:http://groups.google.com/group/pdxwiki?hl=en\n\n"Welcome to the
101
+ PortlandWikiWednesday email list! We generally meet at the AboutUs.org off
102
+ ices\, in inner SE Portland\, the first Wednesday evening of the month."
103
+ LAST-MODIFIED:20080130T192454Z
104
+ LOCATION:107 SE Washington St\, Suite 520\, Portland\, Oregon
105
+ SEQUENCE:0
106
+ STATUS:CONFIRMED
107
+ SUMMARY:PortlandWikiWednesday
108
+ TRANSP:OPAQUE
109
+ END:VEVENT
110
+ BEGIN:VEVENT
111
+ DTSTART;TZID=America/Los_Angeles:20080116T190000
112
+ DTEND;TZID=America/Los_Angeles:20080116T210000
113
+ RRULE:FREQ=WEEKLY;INTERVAL=2;BYDAY=TH;WKST=SU;UNTIL=20080131T075959Z
114
+ DTSTAMP:20080302T192847Z
115
+ UID:t7nfrf2bh24vtsa49e4n43ojao@google.com
116
+ CLASS:PUBLIC
117
+ CREATED:20080115T193954Z
118
+ DESCRIPTION:http://dorkbot.org/dorkbotpdx/\nhttp://music.columbia.edu/piper
119
+ mail/dorkbotpdx-announce/
120
+ LAST-MODIFIED:20080129T004032Z
121
+ LOCATION:see website or mailing list
122
+ SEQUENCE:3
123
+ STATUS:CONFIRMED
124
+ SUMMARY:Dorkbot PDX
125
+ TRANSP:OPAQUE
126
+ END:VEVENT
127
+ BEGIN:VEVENT
128
+ DTSTART;TZID=America/Los_Angeles:20080127T160000
129
+ DTEND;TZID=America/Los_Angeles:20080127T210000
130
+ DTSTAMP:20080302T192847Z
131
+ UID:s7bg45deia9daqn3n5voa7578g@google.com
132
+ ATTENDEE;CUTYPE=GROUP;ROLE=REQ-PARTICIPANT;PARTSTAT=ORGANIZER;CN=Portland U
133
+ ser Groups;X-NUM-GUESTS=0:MAILTO:po80o36ropovuuvug0cpf6d33k@group.calendar.
134
+ google.com
135
+ CLASS:PUBLIC
136
+ CREATED:20080107T133113Z
137
+ DESCRIPTION:http://dorkbotpdx.org/haywire
138
+ LAST-MODIFIED:20080124T225724Z
139
+ LOCATION:PNCA room 205 (main building) in Portland\, OR
140
+ SEQUENCE:0
141
+ STATUS:CONFIRMED
142
+ SUMMARY:Haywire: circuit bending workshop
143
+ TRANSP:OPAQUE
144
+ END:VEVENT
145
+ BEGIN:VEVENT
146
+ DTSTART;TZID=America/Los_Angeles:20080329T120000
147
+ DTEND;TZID=America/Los_Angeles:20080329T210000
148
+ DTSTAMP:20080302T192847Z
149
+ UID:8jug17rg62mqe7o22ble5pjs6g@google.com
150
+ CLASS:PUBLIC
151
+ CREATED:20080117T044710Z
152
+ DESCRIPTION:http://upcoming.yahoo.com/event/349225/
153
+ LAST-MODIFIED:20080117T044926Z
154
+ LOCATION:CubeSpace
155
+ SEQUENCE:1
156
+ STATUS:CONFIRMED
157
+ SUMMARY:Startupalooza at CubeSpace
158
+ TRANSP:OPAQUE
159
+ END:VEVENT
160
+ BEGIN:VEVENT
161
+ DTSTART;TZID=America/Los_Angeles:20070314T193000
162
+ DTEND;TZID=America/Los_Angeles:20070314T213000
163
+ RRULE:FREQ=WEEKLY;INTERVAL=2;BYDAY=WE;WKST=SU;UNTIL=20080116T075959Z
164
+ DTSTAMP:20080302T192847Z
165
+ UID:h112an40052433usqs0go4pnj0@google.com
166
+ CLASS:PUBLIC
167
+ CREATED:20070312T224244Z
168
+ DESCRIPTION:http://dorkbot.org/dorkbotpdx/
169
+ LAST-MODIFIED:20080115T193954Z
170
+ LOCATION:see website
171
+ SEQUENCE:1
172
+ STATUS:CONFIRMED
173
+ SUMMARY:Dorkbot PDX
174
+ TRANSP:OPAQUE
175
+ END:VEVENT
176
+ BEGIN:VEVENT
177
+ DTSTART;TZID=America/Los_Angeles:20071210T190000
178
+ DTEND;TZID=America/Los_Angeles:20071210T210000
179
+ RRULE:FREQ=MONTHLY;BYDAY=2MO;WKST=SU
180
+ DTSTAMP:20080302T192847Z
181
+ UID:eb0tfctdatgnhkgnl5c0gefj2g@google.com
182
+ CLASS:PUBLIC
183
+ CREATED:20071221T000456Z
184
+ DESCRIPTION:http://groups.google.com/group/pdxfunc
185
+ LAST-MODIFIED:20071221T000456Z
186
+ LOCATION:CubeSpace
187
+ SEQUENCE:0
188
+ STATUS:CONFIRMED
189
+ SUMMARY:Functional Programming Study Group
190
+ TRANSP:OPAQUE
191
+ END:VEVENT
192
+ BEGIN:VEVENT
193
+ DTSTART;TZID=America/Los_Angeles:20071204T190000
194
+ DTEND;TZID=America/Los_Angeles:20071204T210000
195
+ RRULE:FREQ=MONTHLY;BYDAY=1TU;WKST=SU
196
+ DTSTAMP:20080302T192847Z
197
+ UID:9ja02fdk73alsgclu2qg1q343c@google.com
198
+ CLASS:PUBLIC
199
+ CREATED:20071221T000126Z
200
+ DESCRIPTION:http://www.pdxruby.org/
201
+ LAST-MODIFIED:20071221T000127Z
202
+ LOCATION:CubeSpace
203
+ SEQUENCE:0
204
+ STATUS:CONFIRMED
205
+ SUMMARY:Ruby Brigade
206
+ TRANSP:OPAQUE
207
+ END:VEVENT
208
+ BEGIN:VEVENT
209
+ DTSTART;TZID=America/Los_Angeles:20070403T190000
210
+ DTEND;TZID=America/Los_Angeles:20070403T210000
211
+ RRULE:FREQ=MONTHLY;BYDAY=1TU;WKST=SU;UNTIL=20071204T075959Z
212
+ DTSTAMP:20080302T192847Z
213
+ UID:r91498oors2qhfs5on3e32etjs@google.com
214
+ CLASS:PUBLIC
215
+ CREATED:20070312T224846Z
216
+ DESCRIPTION:http://www.pdxruby.org/
217
+ LAST-MODIFIED:20071221T000126Z
218
+ LOCATION:Free Geek
219
+ SEQUENCE:1
220
+ STATUS:CONFIRMED
221
+ SUMMARY:Ruby Brigade
222
+ TRANSP:OPAQUE
223
+ END:VEVENT
224
+ BEGIN:VEVENT
225
+ DTSTART;TZID=America/Los_Angeles:20071220T190000
226
+ DTEND;TZID=America/Los_Angeles:20071220T210000
227
+ DTSTAMP:20080302T192847Z
228
+ UID:h112an40052433usqs0go4pnj0@google.com
229
+ RECURRENCE-ID:20071220T033000Z
230
+ CLASS:PUBLIC
231
+ CREATED:20070312T224244Z
232
+ DESCRIPTION:http://dorkbot.org/dorkbotpdx/
233
+ LAST-MODIFIED:20071220T005641Z
234
+ LOCATION:see website
235
+ SEQUENCE:0
236
+ STATUS:CONFIRMED
237
+ SUMMARY:Dorkbot PDX
238
+ TRANSP:OPAQUE
239
+ END:VEVENT
240
+ BEGIN:VEVENT
241
+ DTSTART;TZID=America/Los_Angeles:20071211T190000
242
+ DTEND;TZID=America/Los_Angeles:20071211T220000
243
+ DTSTAMP:20080302T192847Z
244
+ UID:0g5jrrd9s9qddi76gm6r48mkc8@google.com
245
+ CLASS:PUBLIC
246
+ CREATED:20071121T184220Z
247
+ DESCRIPTION:This December Multiple Portland programming users groups are go
248
+ ing to combine meetings into on large meeting. This will be a socializing\,
249
+ festive atmosphere meant to allow the local group members to mingle and ge
250
+ t to know their fellow scripters (compilers also welcome :).\nhttp://pdxgro
251
+ ups.pbwiki.com/2007_December_Coders_Social
252
+ LAST-MODIFIED:20071121T184238Z
253
+ LOCATION:622 SE Grand Ave\, Portland\, Oregon\, 97214
254
+ SEQUENCE:1
255
+ STATUS:CONFIRMED
256
+ SUMMARY:Coders Bash
257
+ TRANSP:OPAQUE
258
+ END:VEVENT
259
+ BEGIN:VEVENT
260
+ DTSTART;TZID=America/Los_Angeles:20071117T100000
261
+ DTEND;TZID=America/Los_Angeles:20071117T180000
262
+ DTSTAMP:20080302T192847Z
263
+ UID:tmf76htrj2no5teun5367i0lhc@google.com
264
+ CLASS:PUBLIC
265
+ CREATED:20071029T224138Z
266
+ LAST-MODIFIED:20071029T224139Z
267
+ LOCATION:CubeSpace
268
+ SEQUENCE:0
269
+ STATUS:CONFIRMED
270
+ SUMMARY:Code Sprint at CubeSpace
271
+ TRANSP:OPAQUE
272
+ END:VEVENT
273
+ BEGIN:VEVENT
274
+ DTSTART;TZID=America/Los_Angeles:20071107T190000
275
+ DTEND;TZID=America/Los_Angeles:20071107T220000
276
+ DTSTAMP:20080302T192847Z
277
+ UID:55e6ptvicadjtj2gf723bbih7o@google.com
278
+ CLASS:PUBLIC
279
+ CREATED:20071018T190631Z
280
+ DESCRIPTION:http://code.arlim.org/wiki
281
+ LAST-MODIFIED:20071018T190631Z
282
+ LOCATION:CubeSpace at 622 SE Grand
283
+ SEQUENCE:0
284
+ STATUS:CONFIRMED
285
+ SUMMARY:Code Sprint
286
+ TRANSP:OPAQUE
287
+ END:VEVENT
288
+ BEGIN:VEVENT
289
+ DTSTART;TZID=America/Los_Angeles:20071027T100000
290
+ DTEND;TZID=America/Los_Angeles:20071027T180000
291
+ DTSTAMP:20080302T192847Z
292
+ UID:93pedtpq61sr7jf0bg97fbjgus@google.com
293
+ CLASS:PUBLIC
294
+ CREATED:20071018T190543Z
295
+ DESCRIPTION:http://code.arlim.org/wiki
296
+ LAST-MODIFIED:20071018T190543Z
297
+ LOCATION:CubeSpace at 622 SE Grand
298
+ SEQUENCE:0
299
+ STATUS:CONFIRMED
300
+ SUMMARY:Code Sprint
301
+ TRANSP:OPAQUE
302
+ END:VEVENT
303
+ BEGIN:VEVENT
304
+ DTSTART;TZID=America/Los_Angeles:20071017T190000
305
+ DTEND;TZID=America/Los_Angeles:20071017T210000
306
+ DTSTAMP:20080302T192847Z
307
+ UID:t8p2o5750ucmf28k78dit6nf88@google.com
308
+ CLASS:PUBLIC
309
+ CREATED:20071009T213659Z
310
+ LAST-MODIFIED:20071009T213659Z
311
+ LOCATION:CubeSpace
312
+ SEQUENCE:0
313
+ STATUS:CONFIRMED
314
+ SUMMARY:Code Sprint/Coding Dojo at CubeSpace
315
+ TRANSP:OPAQUE
316
+ END:VEVENT
317
+ BEGIN:VEVENT
318
+ DTSTART;TZID=America/Los_Angeles:20071009T190000
319
+ DTEND;TZID=America/Los_Angeles:20071009T210000
320
+ RRULE:FREQ=MONTHLY;BYDAY=2TU;WKST=SU
321
+ EXDATE;TZID=America/Los_Angeles:20071211T190000
322
+ DTSTAMP:20080302T192847Z
323
+ UID:8dp4nvcgv8hgotcfhq2kn40svc@google.com
324
+ CLASS:PUBLIC
325
+ CREATED:20071008T231323Z
326
+ DESCRIPTION:http://wiki.python.org/moin/PortlandPythonUserGroup\nhttp://pyt
327
+ hon.meetup.com/183/
328
+ LAST-MODIFIED:20071008T231353Z
329
+ LOCATION:CubeSpace
330
+ SEQUENCE:0
331
+ STATUS:CONFIRMED
332
+ SUMMARY:Python Users Group
333
+ TRANSP:OPAQUE
334
+ END:VEVENT
335
+ BEGIN:VEVENT
336
+ DTSTART;TZID=America/Los_Angeles:20071020T080000
337
+ DTEND;TZID=America/Los_Angeles:20071020T180000
338
+ DTSTAMP:20080302T192847Z
339
+ UID:6d6b7pbrd8f0gvri2tfqn5r54s@google.com
340
+ CLASS:PUBLIC
341
+ CREATED:20070907T194003Z
342
+ DESCRIPTION:http://www.postgresqlconference.org/
343
+ LAST-MODIFIED:20070907T220314Z
344
+ LOCATION:PSU
345
+ SEQUENCE:1
346
+ STATUS:CONFIRMED
347
+ SUMMARY:Fall 2007 PostgreSQL Conference
348
+ TRANSP:OPAQUE
349
+ END:VEVENT
350
+ BEGIN:VEVENT
351
+ DTSTART;TZID=America/Los_Angeles:20070816T190000
352
+ DTEND;TZID=America/Los_Angeles:20070816T210000
353
+ RRULE:FREQ=MONTHLY;BYDAY=3TH;WKST=SU
354
+ EXDATE;TZID=America/Los_Angeles:20071220T190000
355
+ DTSTAMP:20080302T192847Z
356
+ UID:ckri95ctiouiqpq4ts5874f594@google.com
357
+ CLASS:PUBLIC
358
+ CREATED:20070802T180822Z
359
+ DESCRIPTION:http://pugs.postgresql.org/pdx/
360
+ LAST-MODIFIED:20070815T155720Z
361
+ LOCATION:Free Geek
362
+ SEQUENCE:2
363
+ STATUS:CONFIRMED
364
+ SUMMARY:PostgreSQL Users Group
365
+ TRANSP:OPAQUE
366
+ END:VEVENT
367
+ BEGIN:VEVENT
368
+ DTSTART;TZID=America/Los_Angeles:20070809T190000
369
+ DTEND;TZID=America/Los_Angeles:20070809T210000
370
+ DTSTAMP:20080302T192847Z
371
+ UID:b7ckfpjsq9lhbbujpesar2kidg@google.com
372
+ CLASS:PUBLIC
373
+ CREATED:20070807T021051Z
374
+ DESCRIPTION:Portland Area Game Developer Interest Group\nCorwin talking abo
375
+ ut PDC and Sam Adams’ office and game funding.\n\nhttp://pagdig.org
376
+ LAST-MODIFIED:20070807T021051Z
377
+ LOCATION:Hot Lips NW Pearl
378
+ SEQUENCE:0
379
+ STATUS:CONFIRMED
380
+ SUMMARY:PAGDIG
381
+ TRANSP:OPAQUE
382
+ END:VEVENT
383
+ BEGIN:VEVENT
384
+ DTSTART;TZID=America/Los_Angeles:20070613T180000
385
+ DTEND;TZID=America/Los_Angeles:20070613T200000
386
+ RRULE:FREQ=MONTHLY;BYDAY=2WE;WKST=SU
387
+ EXDATE;TZID=America/Los_Angeles:20080109T180000
388
+ DTSTAMP:20080302T192847Z
389
+ UID:bs525adb34gek2qolaolpn360o@google.com
390
+ CLASS:PUBLIC
391
+ CREATED:20070611T044008Z
392
+ DESCRIPTION:The Drual usergroup http://groups.drupal.org/portland
393
+ LAST-MODIFIED:20070805T234501Z
394
+ LOCATION:The Bus Project\, 333 Se 2nd Ave\, Portland\, OR\, 97214
395
+ SEQUENCE:2
396
+ STATUS:CONFIRMED
397
+ SUMMARY:Drupal User Group Meetup
398
+ TRANSP:OPAQUE
399
+ END:VEVENT
400
+ BEGIN:VEVENT
401
+ DTSTART;TZID=America/Los_Angeles:20070320T190000
402
+ DTEND;TZID=America/Los_Angeles:20070320T210000
403
+ RRULE:FREQ=MONTHLY;BYDAY=3TU;WKST=SU;UNTIL=20070817T065959Z
404
+ EXDATE;TZID=America/Los_Angeles:20070619T190000
405
+ DTSTAMP:20080302T192847Z
406
+ UID:3ld2joe83vfi8ua518v00scefo@google.com
407
+ CLASS:PUBLIC
408
+ CREATED:20070312T224559Z
409
+ DESCRIPTION:http://pugs.postgresql.org/pdx/
410
+ LAST-MODIFIED:20070802T180822Z
411
+ LOCATION:Free Geek
412
+ SEQUENCE:1
413
+ STATUS:CONFIRMED
414
+ SUMMARY:PostgreSQL Users Group
415
+ TRANSP:OPAQUE
416
+ END:VEVENT
417
+ BEGIN:VEVENT
418
+ DTSTART;TZID=America/Los_Angeles:20070814T183000
419
+ DTEND;TZID=America/Los_Angeles:20070814T203000
420
+ RRULE:FREQ=MONTHLY;BYDAY=2TU;WKST=SU
421
+ EXDATE;TZID=America/Los_Angeles:20071211T183000
422
+ DTSTAMP:20080302T192847Z
423
+ UID:1pk3qmlb79ugrupiesblmo0l7g@google.com
424
+ CLASS:PUBLIC
425
+ CREATED:20070611T044624Z
426
+ DESCRIPTION:http://pdxphp.org/
427
+ LAST-MODIFIED:20070702T212414Z
428
+ LOCATION:Cube Space\, 622 SE Grand Avenue\, Portland\, OR\, 97214
429
+ SEQUENCE:5
430
+ STATUS:CONFIRMED
431
+ SUMMARY:PDX PHP
432
+ TRANSP:OPAQUE
433
+ END:VEVENT
434
+ BEGIN:VEVENT
435
+ DTSTART;TZID=America/Los_Angeles:20070621T190000
436
+ DTEND;TZID=America/Los_Angeles:20070621T210000
437
+ DTSTAMP:20080302T192847Z
438
+ UID:nitj5a8lvv2fi2hhog3pha3pgk@google.com
439
+ CLASS:PUBLIC
440
+ CREATED:20070619T150024Z
441
+ DESCRIPTION:http://www.pagdig.org/
442
+ LAST-MODIFIED:20070619T150024Z
443
+ LOCATION:Lucky Lab\, 915 SE Hawthorne Blvd.\, Portland\, OR\, 97214
444
+ SEQUENCE:0
445
+ STATUS:CONFIRMED
446
+ SUMMARY:PAGDIG: Portland Area Game Developer Interest Group
447
+ TRANSP:OPAQUE
448
+ END:VEVENT
449
+ BEGIN:VEVENT
450
+ DTSTART;TZID=America/Los_Angeles:20070306T190000
451
+ DTEND;TZID=America/Los_Angeles:20070306T210000
452
+ RRULE:FREQ=MONTHLY;BYDAY=1TU;WKST=SU;UNTIL=20070807T065959Z
453
+ EXDATE;TZID=America/Los_Angeles:20070703T190000
454
+ DTSTAMP:20080302T192847Z
455
+ UID:m3ficpap0c84tvvisbot88gd0o@google.com
456
+ CLASS:PUBLIC
457
+ CREATED:20070313T000506Z
458
+ DESCRIPTION:http://pdxphp.org/
459
+ LAST-MODIFIED:20070611T044624Z
460
+ LOCATION:Free Geek
461
+ SEQUENCE:1
462
+ STATUS:CONFIRMED
463
+ SUMMARY:PDX PHP
464
+ TRANSP:OPAQUE
465
+ END:VEVENT
466
+ BEGIN:VEVENT
467
+ DTSTART;TZID=America/Los_Angeles:20070322T173000
468
+ DTEND;TZID=America/Los_Angeles:20070322T200000
469
+ RRULE:FREQ=MONTHLY;BYDAY=4TH;WKST=SU
470
+ EXDATE;TZID=America/Los_Angeles:20071227T173000
471
+ DTSTAMP:20080302T192847Z
472
+ UID:jbgo11ugd9quo0jr34mglmd9to@google.com
473
+ CLASS:PUBLIC
474
+ CREATED:20070312T224716Z
475
+ DESCRIPTION:http://barcamp.org/BarCampPortland
476
+ LAST-MODIFIED:20070314T212814Z
477
+ LOCATION:Jive Software
478
+ SEQUENCE:2
479
+ STATUS:CONFIRMED
480
+ SUMMARY:BarCamp meetup
481
+ TRANSP:OPAQUE
482
+ END:VEVENT
483
+ BEGIN:VEVENT
484
+ DTSTART;TZID=America/Los_Angeles:20070829T183000
485
+ DTEND;TZID=America/Los_Angeles:20070829T210000
486
+ DTSTAMP:20080302T192847Z
487
+ UID:pb50p0cop2g3qpvfqieb2nu4ls@google.com
488
+ RECURRENCE-ID:20070823T013000Z
489
+ CLASS:PUBLIC
490
+ CREATED:20070312T235647Z
491
+ DESCRIPTION:http://www.padnug.org/
492
+ LAST-MODIFIED:20070314T161906Z
493
+ LOCATION:10260 SW Greenburg Road\, Suite 600
494
+ SEQUENCE:1
495
+ STATUS:CONFIRMED
496
+ SUMMARY:.NET User Group
497
+ TRANSP:OPAQUE
498
+ END:VEVENT
499
+ BEGIN:VEVENT
500
+ DTSTART;TZID=America/Los_Angeles:20070530T183000
501
+ DTEND;TZID=America/Los_Angeles:20070530T210000
502
+ DTSTAMP:20080302T192847Z
503
+ UID:pb50p0cop2g3qpvfqieb2nu4ls@google.com
504
+ RECURRENCE-ID:20070524T013000Z
505
+ CLASS:PUBLIC
506
+ CREATED:20070312T235647Z
507
+ DESCRIPTION:http://www.padnug.org/
508
+ LAST-MODIFIED:20070314T161906Z
509
+ LOCATION:10260 SW Greenburg Road\, Suite 600
510
+ SEQUENCE:1
511
+ STATUS:CONFIRMED
512
+ SUMMARY:.NET User Group
513
+ TRANSP:OPAQUE
514
+ END:VEVENT
515
+ BEGIN:VEVENT
516
+ DTSTART;TZID=America/Los_Angeles:20070328T183000
517
+ DTEND;TZID=America/Los_Angeles:20070328T203000
518
+ DTSTAMP:20080302T192847Z
519
+ UID:ss4bsvgfm6t9m3qd4dp4j2ia7o@google.com
520
+ RECURRENCE-ID:20070329T013000Z
521
+ CLASS:PUBLIC
522
+ CREATED:20070312T235433Z
523
+ DESCRIPTION:http://www.padnug.org/
524
+ LAST-MODIFIED:20070314T161812Z
525
+ LOCATION:10260 SW Greenburg Road\, Suite 600
526
+ SEQUENCE:1
527
+ STATUS:CONFIRMED
528
+ SUMMARY:PADNUG (.NET User Group)
529
+ TRANSP:OPAQUE
530
+ END:VEVENT
531
+ BEGIN:VEVENT
532
+ DTSTART;TZID=America/Los_Angeles:20070327T180000
533
+ DTEND;TZID=America/Los_Angeles:20070327T200000
534
+ DTSTAMP:20080302T192847Z
535
+ UID:70me9i0gtrheh8lv9u9iuesf3s@google.com
536
+ CLASS:PUBLIC
537
+ CREATED:20070313T000658Z
538
+ DESCRIPTION:http://portlandsocialmedia.com/
539
+ LAST-MODIFIED:20070313T000658Z
540
+ LOCATION:
541
+ SEQUENCE:0
542
+ STATUS:CONFIRMED
543
+ SUMMARY:Social Media Club
544
+ TRANSP:OPAQUE
545
+ END:VEVENT
546
+ BEGIN:VEVENT
547
+ DTSTART;TZID=America/Los_Angeles:20070530T180000
548
+ DTEND;TZID=America/Los_Angeles:20070530T200000
549
+ DTSTAMP:20080302T192847Z
550
+ UID:664p3gbsgc6tbksh8c8ubir6k0@google.com
551
+ RECURRENCE-ID:20070524T010000Z
552
+ CLASS:PUBLIC
553
+ CREATED:20070313T000137Z
554
+ DESCRIPTION:http://www.personaltelco.net/static/index.html
555
+ LAST-MODIFIED:20070313T000151Z
556
+ LOCATION:Urban Grind NE
557
+ SEQUENCE:0
558
+ STATUS:CONFIRMED
559
+ SUMMARY:Personal Telco
560
+ TRANSP:OPAQUE
561
+ END:VEVENT
562
+ BEGIN:VEVENT
563
+ DTSTART;TZID=America/Los_Angeles:20070328T180000
564
+ DTEND;TZID=America/Los_Angeles:20070328T200000
565
+ RRULE:FREQ=MONTHLY;BYDAY=4WE;WKST=SU
566
+ DTSTAMP:20080302T192847Z
567
+ UID:664p3gbsgc6tbksh8c8ubir6k0@google.com
568
+ CLASS:PUBLIC
569
+ CREATED:20070313T000137Z
570
+ DESCRIPTION:http://www.personaltelco.net/static/index.html
571
+ LAST-MODIFIED:20070313T000138Z
572
+ LOCATION:Urban Grind NE
573
+ SEQUENCE:0
574
+ STATUS:CONFIRMED
575
+ SUMMARY:Personal Telco
576
+ TRANSP:OPAQUE
577
+ END:VEVENT
578
+ BEGIN:VEVENT
579
+ DTSTART;TZID=America/Los_Angeles:20070328T183000
580
+ DTEND;TZID=America/Los_Angeles:20070328T203000
581
+ RRULE:FREQ=DAILY;COUNT=1
582
+ DTSTAMP:20080302T192847Z
583
+ UID:ss4bsvgfm6t9m3qd4dp4j2ia7o@google.com
584
+ CLASS:PUBLIC
585
+ CREATED:20070312T235433Z
586
+ DESCRIPTION:http://www.padnug.org/
587
+ LAST-MODIFIED:20070312T235456Z
588
+ LOCATION:10260 SW Greenburg Road\, Suite 600
589
+ SEQUENCE:1
590
+ STATUS:CONFIRMED
591
+ SUMMARY:.Net User Group
592
+ TRANSP:OPAQUE
593
+ END:VEVENT
594
+ BEGIN:VEVENT
595
+ DTSTART;TZID=America/Los_Angeles:20070312T183000
596
+ DTEND;TZID=America/Los_Angeles:20070312T210000
597
+ RRULE:FREQ=MONTHLY;BYDAY=2MO;WKST=SU
598
+ DTSTAMP:20080302T192847Z
599
+ UID:s139jdots77tma7qtevoahrvjo@google.com
600
+ CLASS:PUBLIC
601
+ CREATED:20070312T235145Z
602
+ DESCRIPTION:http://www.pmug.org/
603
+ LAST-MODIFIED:20070312T235145Z
604
+ LOCATION:Ecotrust Center
605
+ SEQUENCE:0
606
+ STATUS:CONFIRMED
607
+ SUMMARY:Macintosh Users Group
608
+ TRANSP:OPAQUE
609
+ END:VEVENT
610
+ BEGIN:VEVENT
611
+ DTSTART;TZID=America/Los_Angeles:20070306T180000
612
+ DTEND;TZID=America/Los_Angeles:20070306T200000
613
+ RRULE:FREQ=MONTHLY;BYDAY=1TU;WKST=SU
614
+ DTSTAMP:20080302T192847Z
615
+ UID:o9tt1dn3ft14enkvd3l5ofpkl4@google.com
616
+ CLASS:PUBLIC
617
+ CREATED:20070312T234902Z
618
+ DESCRIPTION:http://www.pdxmacfilm.com/
619
+ LAST-MODIFIED:20070312T234902Z
620
+ LOCATION:Macforce
621
+ SEQUENCE:0
622
+ STATUS:CONFIRMED
623
+ SUMMARY:Mac Filmmakers Group
624
+ TRANSP:OPAQUE
625
+ END:VEVENT
626
+ BEGIN:VEVENT
627
+ DTSTART;TZID=America/Los_Angeles:20070319T190000
628
+ DTEND;TZID=America/Los_Angeles:20070319T210000
629
+ RRULE:FREQ=MONTHLY;BYDAY=3MO;WKST=SU
630
+ DTSTAMP:20080302T192847Z
631
+ UID:9ebpr90hv5buspdgv9u8pccvm8@google.com
632
+ CLASS:PUBLIC
633
+ CREATED:20070312T233612Z
634
+ DESCRIPTION:http://pdxlinux.org/
635
+ LAST-MODIFIED:20070312T233612Z
636
+ LOCATION:Jax\, 826 SW 2nd Ave
637
+ SEQUENCE:0
638
+ STATUS:CONFIRMED
639
+ SUMMARY:PLUG (Linux) Advanced Topics
640
+ TRANSP:OPAQUE
641
+ END:VEVENT
642
+ BEGIN:VEVENT
643
+ DTSTART;TZID=America/Los_Angeles:20070301T190000
644
+ DTEND;TZID=America/Los_Angeles:20070301T210000
645
+ RRULE:FREQ=MONTHLY;BYDAY=1TH;WKST=SU
646
+ DTSTAMP:20080302T192847Z
647
+ UID:ofdh86nl8kkv4b0g5ctepajtbg@google.com
648
+ CLASS:PUBLIC
649
+ CREATED:20070312T233420Z
650
+ DESCRIPTION:http://pdxlinux.org/
651
+ LAST-MODIFIED:20070312T233420Z
652
+ LOCATION:Portland State University\, Smith Memorial Center\, Room 294
653
+ SEQUENCE:0
654
+ STATUS:CONFIRMED
655
+ SUMMARY:PLUG (Linux)
656
+ TRANSP:OPAQUE
657
+ END:VEVENT
658
+ BEGIN:VEVENT
659
+ DTSTART;TZID=America/Los_Angeles:20070308T190000
660
+ DTEND;TZID=America/Los_Angeles:20070308T200000
661
+ RRULE:FREQ=MONTHLY;BYDAY=2TH;WKST=SU
662
+ DTSTAMP:20080302T192847Z
663
+ UID:cle8f1g2dbi1l37ohi22sohb9k@google.com
664
+ CLASS:PUBLIC
665
+ CREATED:20070312T233007Z
666
+ DESCRIPTION:http://www.pdxlug.org/
667
+ LAST-MODIFIED:20070312T233248Z
668
+ LOCATION:Fireside Coffee Lodge
669
+ SEQUENCE:0
670
+ STATUS:CONFIRMED
671
+ SUMMARY:PDXLUG (Linux)
672
+ TRANSP:OPAQUE
673
+ END:VEVENT
674
+ BEGIN:VEVENT
675
+ DTSTART;TZID=America/Los_Angeles:20070424T183000
676
+ DTEND;TZID=America/Los_Angeles:20070424T203000
677
+ DTSTAMP:20080302T192847Z
678
+ UID:e2jd16re7vm171jd9hokehug94@google.com
679
+ RECURRENCE-ID:20070418T013000Z
680
+ CLASS:PUBLIC
681
+ CREATED:20070312T232358Z
682
+ DESCRIPTION:http://www.pjug.org/
683
+ LAST-MODIFIED:20070312T232440Z
684
+ LOCATION:Oracle Downtown Campus: 1211 SW 5th Avenue\, Room 8005
685
+ SEQUENCE:0
686
+ STATUS:CONFIRMED
687
+ SUMMARY:Java User Group
688
+ TRANSP:OPAQUE
689
+ END:VEVENT
690
+ BEGIN:VEVENT
691
+ DTSTART;TZID=America/Los_Angeles:20070320T183000
692
+ DTEND;TZID=America/Los_Angeles:20070320T203000
693
+ RRULE:FREQ=MONTHLY;BYDAY=3TU;WKST=SU
694
+ DTSTAMP:20080302T192847Z
695
+ UID:e2jd16re7vm171jd9hokehug94@google.com
696
+ CLASS:PUBLIC
697
+ CREATED:20070312T232358Z
698
+ DESCRIPTION:http://www.pjug.org/
699
+ LAST-MODIFIED:20070312T232359Z
700
+ LOCATION:Oracle Downtown Campus: 1211 SW 5th Avenue\, Room 8005
701
+ SEQUENCE:0
702
+ STATUS:CONFIRMED
703
+ SUMMARY:Java User Group
704
+ TRANSP:OPAQUE
705
+ END:VEVENT
706
+ BEGIN:VEVENT
707
+ DTSTART;TZID=America/Los_Angeles:20070405T173000
708
+ DTEND;TZID=America/Los_Angeles:20070405T203000
709
+ RRULE:FREQ=MONTHLY;BYDAY=1TH;WKST=SU
710
+ DTSTAMP:20080302T192847Z
711
+ UID:0091v9q3i4r5jp7m3ihccsvnn4@google.com
712
+ CLASS:PUBLIC
713
+ CREATED:20070312T232000Z
714
+ DESCRIPTION:http://www.pdxfcpug.com/
715
+ LAST-MODIFIED:20070312T232001Z
716
+ LOCATION:Washington County Workforce Training Center
717
+ SEQUENCE:0
718
+ STATUS:CONFIRMED
719
+ SUMMARY:Final Cut Pro Users Group
720
+ TRANSP:OPAQUE
721
+ END:VEVENT
722
+ BEGIN:VEVENT
723
+ DTSTART;TZID=America/Los_Angeles:20070320T180000
724
+ DTEND;TZID=America/Los_Angeles:20070320T200000
725
+ DTSTAMP:20080302T192847Z
726
+ UID:2k8bmjfvc18h89bsk629m0q3g0@google.com
727
+ CLASS:PUBLIC
728
+ CREATED:20070312T231348Z
729
+ DESCRIPTION:http://www.devgroupnw.org/
730
+ LAST-MODIFIED:20070312T231348Z
731
+ LOCATION:Hot Pepper Studios\, 3377 SE Division (corner of 34th Ave)
732
+ SEQUENCE:0
733
+ STATUS:CONFIRMED
734
+ SUMMARY:DevGroup NW
735
+ TRANSP:OPAQUE
736
+ END:VEVENT
737
+ BEGIN:VEVENT
738
+ DTSTART;TZID=America/Los_Angeles:20070314T190000
739
+ DTEND;TZID=America/Los_Angeles:20070314T210000
740
+ RRULE:FREQ=MONTHLY;BYDAY=2WE;WKST=SU
741
+ EXDATE;TZID=America/Los_Angeles:20080109T190000
742
+ DTSTAMP:20080302T192847Z
743
+ UID:jl7j4vfj4jf0u8cv3kimr24324@google.com
744
+ CLASS:PUBLIC
745
+ CREATED:20070312T224444Z
746
+ DESCRIPTION:http://pdx.pm.org/
747
+ LAST-MODIFIED:20070312T225531Z
748
+ LOCATION:Free Geek
749
+ SEQUENCE:0
750
+ STATUS:CONFIRMED
751
+ SUMMARY:Perl Mongers
752
+ TRANSP:OPAQUE
753
+ END:VEVENT
754
+ BEGIN:VEVENT
755
+ DTSTART;TZID=America/Los_Angeles:20070429T130000
756
+ DTEND;TZID=America/Los_Angeles:20070429T160000
757
+ DTSTAMP:20080302T192847Z
758
+ UID:mdof9orsvvcg6oelmkqddfb9vg@google.com
759
+ CLASS:PUBLIC
760
+ CREATED:20070312T225413Z
761
+ DESCRIPTION:http://www.dc503.org/
762
+ LAST-MODIFIED:20070312T225413Z
763
+ LOCATION:Urban Grind NE
764
+ SEQUENCE:0
765
+ STATUS:CONFIRMED
766
+ SUMMARY:Defcon Group Portland
767
+ TRANSP:OPAQUE
768
+ END:VEVENT
769
+ BEGIN:VEVENT
770
+ DTSTART;TZID=America/Los_Angeles:20070116T173000
771
+ DTEND;TZID=America/Los_Angeles:20070116T183000
772
+ RRULE:FREQ=MONTHLY;BYDAY=3TU;WKST=SU
773
+ EXDATE;TZID=America/Los_Angeles:20080115T173000
774
+ DTSTAMP:20080302T192847Z
775
+ UID:1b9r0470182ls365gd4lgdpi0g@google.com
776
+ CLASS:PUBLIC
777
+ CREATED:20070312T225151Z
778
+ DESCRIPTION:http://pdxria.com/
779
+ LAST-MODIFIED:20070312T225151Z
780
+ LOCATION:see website
781
+ SEQUENCE:0
782
+ STATUS:CONFIRMED
783
+ SUMMARY:Adobe Developer User Group
784
+ TRANSP:OPAQUE
785
+ END:VEVENT
786
+ END:VCALENDAR