googletastic 0.0.5 → 0.0.5.1

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -68,7 +68,7 @@ end
68
68
 
69
69
  desc "Install the gem locally"
70
70
  task :install => [:package] do
71
- sh %{sudo gem install pkg/#{spec.name}-#{spec.version} --no-ri --no-rdoc}
71
+ sh %{gem install pkg/#{spec.name}-#{spec.version} --no-ri --no-rdoc}
72
72
  end
73
73
 
74
74
  desc "Publish gem to rubygems"
@@ -102,4 +102,8 @@ task :default => :spec
102
102
  desc "Run Googletastic Benchmarks"
103
103
  task :benchmark do
104
104
  files("spec/benchmarks/*") {|file| system("ruby #{file}") }
105
+ end
106
+
107
+ task :yank do
108
+ `gem yank #{spec.name} -v #{spec.version}`
105
109
  end
@@ -59,7 +59,7 @@ end
59
59
 
60
60
  module Googletastic
61
61
  # :stopdoc:
62
- VERSION = '0.0.5'
62
+ VERSION = '0.0.5.1'
63
63
  # :startdoc
64
64
  class << self; attr_accessor :keys, :clients, :options; end
65
65
 
@@ -11,7 +11,7 @@ class Googletastic::Base < Hash
11
11
  # They don't include the url for finding the document,
12
12
  # which can be inferred from the "action" you're taking on it,
13
13
  # and the general api.
14
- attr_accessor :id
14
+ attr_accessor :id, :etag
15
15
  attr_accessor :acl
16
16
  attr_accessor :created_at, :updated_at
17
17
  attr_accessor :attachment_path # for docs, images...
@@ -25,7 +25,7 @@ class Googletastic::Document < Googletastic::Base
25
25
  PPT = "application/vnd.ms-powerpoint" unless defined?(PPT)
26
26
  PPS = "application/vnd.ms-powerpoint" unless defined?(PPS)
27
27
 
28
- attr_accessor :title, :kind, :categories, :resource_id, :ext
28
+ attr_accessor :title, :kind, :categories, :plain_id, :ext
29
29
 
30
30
  def has_access?(email)
31
31
  self.class.first(:url => update_url)
@@ -112,12 +112,12 @@ class Googletastic::Document < Googletastic::Base
112
112
  end
113
113
 
114
114
  # docid (all lowercase)
115
- def show_url(id)
115
+ def get_url(id)
116
116
  "http://docs.google.com/View?docID=#{id}&revision=_latest"
117
117
  end
118
118
 
119
- def get_url(id)
120
- "https://docs.google.com/feeds/default/private/full/#{id}"
119
+ def show_url(id)
120
+ "https://docs.google.com/feeds/documents/private/full/#{id}"
121
121
  end
122
122
 
123
123
  def edit_url(id)
@@ -163,13 +163,13 @@ class Googletastic::Document < Googletastic::Base
163
163
  def build_url(options)
164
164
  base = options.has_key?(:url) ? options[:url] : self.index_url
165
165
  base.gsub!(/full$/, "expandAcl") if options.has_key?(:include) and options[:include].index(:acl)
166
- base << "/#{options[:id]}" if options.has_key?(:id)
167
166
  options[:url] = base
168
167
  super(options)
169
168
  end
170
169
 
171
170
  def unmarshall(xml)
172
171
  records = xml.xpath("//atom:entry", ns_tag("atom")).collect do |record|
172
+ etag = record["etag"].to_s
173
173
  kind = title = id = categories = value = nil # reset
174
174
  title = record.xpath("atom:title", ns_tag("atom")).text
175
175
  categories = record.xpath("atom:category", ns_tag("atom")).collect do |category|
@@ -177,17 +177,18 @@ class Googletastic::Document < Googletastic::Base
177
177
  kind = value if !kind and valid_kind?(value)
178
178
  value
179
179
  end
180
- resource_id = record.xpath("gd:resourceId", ns_tag("gd")).text
181
- id = resource_id.gsub(/#{kind}:/, "")
180
+ id = record.xpath("gd:resourceId", ns_tag("gd")).text
181
+ plain_id = id.gsub(/#{kind}:/, "")
182
182
  created_at = record.xpath("atom:published", ns_tag("atom")).text
183
183
  updated_at = record.xpath("atom:updated", ns_tag("atom")).text
184
- puts "UPDATED AT: #{updated_at.inspect}"
184
+
185
185
  Googletastic::Document.new(
186
186
  :id => id,
187
187
  :title => title,
188
188
  :categories => categories,
189
+ :etag => etag,
189
190
  :kind => kind,
190
- :resource_id => resource_id,
191
+ :plain_id => plain_id,
191
192
  :ext => File.extname(title),
192
193
  :created_at => DateTime.parse(created_at),
193
194
  :updated_at => DateTime.parse(updated_at)
@@ -201,7 +202,7 @@ class Googletastic::Document < Googletastic::Base
201
202
  xml.entry(ns_xml("atom", "exif", "openSearch")) {
202
203
  if record.id
203
204
  xml.id_ {
204
- xml.text get_url(record.resource_id)
205
+ xml.text get_url(record.id)
205
206
  }
206
207
  end
207
208
  record.categories.each do |category|
@@ -1,6 +1,6 @@
1
1
  class Googletastic::Row < Googletastic::Base
2
2
 
3
- attr_accessor :data, :worksheet_id, :spreadsheet_id, :title, :etag
3
+ attr_accessor :data, :worksheet_id, :spreadsheet_id, :title
4
4
 
5
5
  def get_url
6
6
  self.class.get_url(File.join(self.spreadsheet_id, self.worksheet_id), self.id)
@@ -41,7 +41,7 @@ class Googletastic::Row < Googletastic::Base
41
41
 
42
42
  def unmarshall(xml)
43
43
  records = xml.xpath("//atom:entry", ns_tag("atom")).collect do |record|
44
- etag = record["etag"]
44
+ etag = record["etag"].to_s
45
45
  id = record.xpath("atom:id", ns_tag("atom")).first.text
46
46
  ids = id =~ /http:\/\/spreadsheets\.google\.com\/feeds\/list\/([^\/]+)\/([^\/]+)\/([^\/]+)/
47
47
  spreadsheet_id = $1
@@ -14,6 +14,10 @@ class Googletastic::Spreadsheet < Googletastic::Base
14
14
  @table ||= Googletastic::Table.first(:key => self.id)
15
15
  end
16
16
 
17
+ def num_rows
18
+ worksheet.num_rows
19
+ end
20
+
17
21
  def rows
18
22
  @rows ||= Googletastic::Row.all(:key => self.id, :worksheet_id => worksheet.id)
19
23
  end
@@ -49,6 +53,7 @@ class Googletastic::Spreadsheet < Googletastic::Base
49
53
 
50
54
  def unmarshall(xml)
51
55
  records = xml.xpath("//atom:entry", ns_tag("atom")).collect do |record|
56
+ etag = record["etag"].to_s
52
57
  id = record.xpath("atom:id", ns_tag("atom")).first.text.gsub("http://spreadsheets.google.com/feeds/spreadsheets/", "")
53
58
  edit_id = record.xpath("atom:link[@rel='alternate']", ns_tag("atom")).first
54
59
  edit_id = edit_id["href"].gsub("http://spreadsheets.google.com/ccc?key=", "") if edit_id
@@ -59,6 +64,7 @@ class Googletastic::Spreadsheet < Googletastic::Base
59
64
 
60
65
  Googletastic::Spreadsheet.new(
61
66
  :id => id,
67
+ :etag => etag,
62
68
  :edit_id => edit_id,
63
69
  :title => title,
64
70
  :content => content,
@@ -1,6 +1,6 @@
1
1
  class Googletastic::Worksheet < Googletastic::Base
2
2
 
3
- attr_accessor :title, :content, :spreadsheet_id
3
+ attr_accessor :title, :content, :spreadsheet_id, :num_rows, :num_columns
4
4
 
5
5
  # Time.now.xmlschema
6
6
  class << self
@@ -28,12 +28,16 @@ class Googletastic::Worksheet < Googletastic::Base
28
28
  title = record.xpath("atom:title", ns_tag("atom")).first.text
29
29
  content = record.xpath("atom:content", ns_tag("atom")).first.text
30
30
  updated_at = record.xpath("atom:updated", ns_tag("atom")).text
31
+ num_rows = record.xpath("gs:rowCount", ns_tag("gs")).text.to_i
32
+ num_columns = record.xpath("gs:colCount", ns_tag("gs")).text.to_i
31
33
 
32
34
  worksheet = Googletastic::Worksheet.new(
33
35
  :id => id,
34
36
  :spreadsheet_id => spreadsheet_id,
35
37
  :title => title,
36
38
  :content => content,
39
+ :num_rows => num_rows,
40
+ :num_columns => num_columns,
37
41
  :updated_at => DateTime.parse(updated_at),
38
42
  :raw => record.to_xml
39
43
  )
@@ -5,7 +5,7 @@ describe Googletastic::Document do
5
5
 
6
6
  before(:all) do
7
7
  @doc = Document.new
8
- @id = "0AT1-fvkm5vJPZGN2NzR3bmJfMGZiMnh3N2R0"
8
+ @id = "document:0AT1-fvkm5vJPZGN2NzR3bmJfMGZiMnh3N2R0"
9
9
  end
10
10
 
11
11
  # FIND METHODS
@@ -63,7 +63,7 @@ describe Googletastic::Document do
63
63
 
64
64
  it "should have a valid 'kind'" do
65
65
  @doc.kind.should_not == nil
66
- Googletastic::Document.valid_category?(@doc.kind).should == true
66
+ Googletastic::Document.valid_kind?(@doc.kind).should == true
67
67
  end
68
68
 
69
69
  it "should have an array of categories" do
@@ -93,7 +93,6 @@ describe Googletastic::Document do
93
93
 
94
94
  it "should marshall the document into an entry feed with at least a 'title' and 'id'" do
95
95
  xml = Nokogiri::XML(@xml)
96
- xml.xpath("//atom:id", {"atom" => NS['atom']}).first.text.should == "#{@doc.index_url.gsub('http', 'https').gsub('documents', 'default')}/#{@doc.resource_id}"
97
96
  xml.xpath("//atom:title", {"atom" => NS['atom']}).first.text.should == @doc.title
98
97
  end
99
98
  end
@@ -7,11 +7,15 @@ describe Googletastic::Spreadsheet do
7
7
  puts spreadsheet.inspect
8
8
  spreadsheet.should be_an_instance_of(Googletastic::Spreadsheet)
9
9
  end
10
- =begin
11
10
  it "should retrieve a list of spreadsheets" do
12
- Googletastic::Spreadsheet.all
11
+ spreadsheets = Googletastic::Spreadsheet.all
12
+ puts spreadsheets.inspect
13
+ spreadsheets.each do |sheet|
14
+ puts sheet.num_rows.inspect
15
+ end
13
16
  end
14
17
 
18
+ =begin
15
19
  it "should retrieve a spreadsheets worksheet" do
16
20
  Googletastic::Spreadsheet.first.worksheet.should_not be_nil
17
21
  end
metadata CHANGED
@@ -6,7 +6,8 @@ version: !ruby/object:Gem::Version
6
6
  - 0
7
7
  - 0
8
8
  - 5
9
- version: 0.0.5
9
+ - 1
10
+ version: 0.0.5.1
10
11
  platform: ruby
11
12
  authors:
12
13
  - Lance Pollard