google-picasa 0.0.1 → 0.0.2

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.
@@ -12,6 +12,7 @@ Gem::Specification.new do |s|
12
12
  s.description = %q{Access Picasa Web Album using pure Ruby code.}
13
13
 
14
14
  s.rubyforge_project = "google-picasa"
15
+ s.add_runtime_dependency "xml-simple"
15
16
 
16
17
  s.files = `git ls-files`.split("\n")
17
18
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
@@ -0,0 +1,56 @@
1
+ #--
2
+ # Helper class to prepare an HTTP POST request with a file upload
3
+ # Mostly taken from http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/113774
4
+ # Anything that's broken and wrong probably the fault of Bill Stilwell (bill@marginalia.org)
5
+ #++
6
+
7
+ require 'rubygems'
8
+ require 'mime/types'
9
+ require 'net/http'
10
+
11
+ class Param
12
+ attr_accessor :k, :v
13
+ def initialize( k, v )
14
+ @k = k
15
+ @v = v
16
+ end
17
+
18
+ def to_multipart
19
+ return "Content-Disposition: form-data; name=\"#{CGI::escape(k)}\"\r\n\r\n#{v}\r\n"
20
+ end
21
+ end
22
+
23
+ class FileParam
24
+ attr_accessor :k, :filename, :content
25
+ def initialize( k, filename, content )
26
+ @k = k
27
+ @filename = filename
28
+ @content = content
29
+ end
30
+
31
+ def to_multipart
32
+ return "Content-Disposition: form-data; name=\"#{CGI::escape(k)}\"; filename=\"#{@filename}\"\r\n" +
33
+ "Content-Transfer-Encoding: binary\r\n" +
34
+ "Content-Type: #{MIME::Types.type_for(@filename)}\r\n\r\n" + @content + "\r\n"
35
+ end
36
+ end
37
+
38
+ class MultipartPost
39
+ BOUNDARY = 'flickrrocks-aaaaaabbbb0000'
40
+ HEADER = {"Content-type" => "multipart/form-data, boundary=" + BOUNDARY + " "}
41
+
42
+ def prepare_query ( params )
43
+ fp = []
44
+ params.each do |k,v|
45
+ if v.respond_to?(:read)
46
+ fp.push(FileParam.new(k,v.path,v.read))
47
+ else
48
+ fp.push(Param.new(k,v))
49
+ end
50
+ end
51
+ query = fp.collect {|p| "--" + BOUNDARY + "\r\n" + p.to_multipart }.join("") + "--" + BOUNDARY + "--"
52
+ return query, HEADER
53
+ end
54
+ end
55
+
56
+
@@ -0,0 +1,87 @@
1
+ require "picasa"
2
+
3
+ picasa = Picasa::Picasa.new
4
+ puts picasa.login("you@gmail.com", "yourpass")
5
+ puts picasa.picasa_session.auth_key
6
+
7
+ albums = []
8
+ # get albums of logged in account
9
+ albums = picasa.albums(:access => "private")
10
+ albums.each do |album|
11
+ puts "===== Album ======"
12
+ puts album.id
13
+ puts album.name
14
+
15
+ puts album.thumbnail.url
16
+ puts album.thumbnail.width
17
+ puts album.thumbnail.height
18
+
19
+ # get photos of an album
20
+ photos = album.photos
21
+ if(photos.size > 0)
22
+ photos.each do |photo|
23
+ puts "====== Photo ====="
24
+ puts photo.id
25
+ puts photo.title
26
+ puts photo.url
27
+ photo.thumbnails.each do |thumbnail|
28
+ puts thumbnail.url
29
+ puts thumbnail.width
30
+ puts thumbnail.height
31
+ end
32
+ end
33
+ else
34
+ puts "====== No photo for this album ====="
35
+ end
36
+
37
+ end
38
+
39
+ # get photos using album name
40
+ photos = picasa.photos(:album => "AlbumFromRuby")
41
+ puts "====== Photos of AlbumFromRuby ====="
42
+ if(photos.size > 0)
43
+ photos.each do |photo|
44
+ puts "====== Photos ====="
45
+ puts photo.id
46
+ puts photo.title
47
+ puts photo.url
48
+ photo.thumbnails.each do |thumbnail|
49
+ puts thumbnail.url
50
+ puts thumbnail.width
51
+ puts thumbnail.height
52
+ end
53
+ end
54
+ else
55
+ puts "====== No photo for this album ====="
56
+ end
57
+
58
+ # get photos using another user_id and album name
59
+ photos = []
60
+ photos = albums[0].photos(:user_id => "me")
61
+
62
+ photos.each do |photo|
63
+ puts photo.id
64
+ puts photo.title
65
+ puts photo.description
66
+ puts photo.url
67
+ photo.thumbnails.each do |thumbnail|
68
+ puts thumbnail.url
69
+ puts thumbnail.width
70
+ puts thumbnail.height
71
+ end
72
+ puts "====== Photo ====="
73
+ end
74
+
75
+ # Create an album
76
+ album = picasa.create_album(:title => "Album From Ruby",
77
+ :summary => "This album is created from ruby code",
78
+ :location => "Bangladesh", :keywords => "keyword1, keyword2")
79
+ puts album.inspect
80
+
81
+ # Post photo to an album
82
+ fileName = "C:/Documents and Settings/All Users/Documents/My Pictures/Sample Pictures/Blue hills.jpg"
83
+ image_data = open(fileName, "rb").read
84
+ photo = picasa.post_photo(image_data, :album => "AlbumFromRuby",
85
+ :summary => "Upload2 from ruby api", :title => "From Ruby 2",
86
+ :local_file_name => "Blue hills.jpg")
87
+ puts photo.inspect
@@ -1,5 +1,5 @@
1
1
  module Google
2
2
  module Picasa
3
- VERSION = "0.0.1"
3
+ VERSION = "0.0.2"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: google-picasa
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,18 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
  date: 2011-11-26 00:00:00.000000000Z
13
- dependencies: []
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: xml-simple
16
+ requirement: &86217460 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *86217460
14
25
  description: Access Picasa Web Album using pure Ruby code.
15
26
  email:
16
27
  - dmitry@trager.ru
@@ -23,6 +34,8 @@ files:
23
34
  - Rakefile
24
35
  - google-picasa.gemspec
25
36
  - lib/google-picasa.rb
37
+ - lib/google-picasa/multipartpost.rb
38
+ - lib/google-picasa/picasa_example.rb
26
39
  - lib/google-picasa/version.rb
27
40
  homepage: http://code.google.com/p/picasaonrails
28
41
  licenses: []