adobeshare 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/Manifest.txt CHANGED
@@ -7,6 +7,7 @@ lib/adobeshare.rb
7
7
  lib/adobeshare/version.rb
8
8
  lib/adobeshare/client.rb
9
9
  lib/adobeshare/node.rb
10
+ lib/adobeshare/http.rb
10
11
  examples/sample.rb
11
12
  examples/config.yaml.sample
12
13
  setup.rb
data/README.txt CHANGED
@@ -1,6 +1,6 @@
1
- = AdobeShare::Client -- Adobe Share API for Ruby
1
+ = Adobe Share API for Ruby
2
2
 
3
- AdobeShare::Client is a library for upload and download documents using REST APIs for Adobe Share.
3
+ a Ruby library for "Adobe Share" using REST Web Service APIs.
4
4
 
5
5
  * http://labs.adobe.com/technologies/share/
6
6
  * http://labs.adobe.com/wiki/index.php/Share:API
@@ -10,8 +10,9 @@ AdobeShare::Client is a library for upload and download documents using REST API
10
10
  === Create client class
11
11
 
12
12
  client = AdobeShare::Client.new
13
+
13
14
  if you want to access via proxy,
14
- add proxy param Adobe::Client.new "http://your.proxy.server:8080/"
15
+ add proxy param. client = Adobe::Client.new("http://your.proxy.server:8080/")
15
16
 
16
17
  === Set credentials
17
18
 
@@ -28,33 +29,28 @@ AdobeShare::Client is a library for upload and download documents using REST API
28
29
 
29
30
  ==== Upload
30
31
 
31
- client.add_file `binary obj`, "test.pdf", "This is Test File"
32
+ client.add_file(binary_obj, "test.pdf", "This is a Test File")
32
33
 
33
34
  ==== Download
34
35
 
35
- client.get_source `nodeid`
36
+ binary_obj = client.get_source(nodeid)
36
37
 
37
38
  ==== Delete
38
39
 
39
- client.delete_node `nodeid`
40
+ client.delete_node(nodeid)
40
41
 
41
42
 
42
- # `nodeid` is the same as `docid` in the Flash web interface.
43
- # `nodeid` indicates both the documents and the folders. Maybe.
44
-
45
43
  === Logout
46
44
  client.logout
47
45
 
46
+ # `nodeid` is the same as `docid` in the Flash web interface.
47
+ # `nodeid` indicates both the documents and the folders. Maybe.
48
+
48
49
  For details, please see examples/sample.rb
49
50
 
50
51
  == TODO
51
52
 
52
- * Test::Unit !!!
53
-
54
- and, these APIs are not implemented.
55
- * Moving or renaming a file or folder
56
- * Sharing a file
57
- * Adding or removing recipients from a share
53
+ * Test::Unit or RSpec ???
58
54
 
59
55
  == Requirements
60
56
 
@@ -67,4 +63,4 @@ and, these APIs are not implemented.
67
63
 
68
64
  == Author
69
65
 
70
- * KATO Hideyuki <hideyuki at kato dot jp>
66
+ * KATO Hideyuki <hkato at rubyforge.org>
@@ -3,7 +3,6 @@
3
3
  #
4
4
  # Copyright (c) KATO Hideyuki, 2007. All rights reserved.
5
5
  #
6
- require 'http-access2'
7
6
  require 'rexml/document'
8
7
 
9
8
  include REXML
@@ -36,7 +35,7 @@ module AdobeShare
36
35
 
37
36
  #
38
37
  def initialize proxy=nil
39
- @client = HTTPAccess2::Client.new(proxy)
38
+ @client = HTTPClient.new(proxy, UA)
40
39
  end
41
40
 
42
41
  # Login to use Adobe Share service
@@ -120,29 +119,23 @@ module AdobeShare
120
119
  res = http_client_request("POST", uri, req, headers)
121
120
  end
122
121
 
123
- private
124
-
125
- # TODO this method is not tested
126
122
  # Rename a node
127
123
  def rename_node(nodeid, newname)
128
124
  uri = ENDPOINT_DC + nodeid + "/?newname=" + newname
129
125
  res = http_client_request("MOVE", uri)
130
126
  end
131
127
 
132
- # TODO this method is not tested
133
128
  # Move a node
134
129
  def move_node(nodeid, destnodeid, newname)
135
130
  uri = ENDPOINT_DC + nodeid + "/?destnodeid=" + destnodeid + "&newname=" + URI.encode(newname)
136
131
  res = http_client_request("MOVE", uri)
137
132
  end
138
133
 
139
- # TODO this method is not tested
140
134
  # Replace file in an already existing node
141
- def replace_file(file_name, description, nodeid, renditions=true)
142
- add_file(file_name, description, nodeid, renditions)
135
+ def replace_file(data, file_name, description, nodeid, renditions=true)
136
+ add_file(data, file_name, description, nodeid, renditions)
143
137
  end
144
138
 
145
- # TODO this method is not tested
146
139
  # Add new folder
147
140
  def add_folder(name, description, nodeid)
148
141
  if nodeid
@@ -160,12 +153,12 @@ module AdobeShare
160
153
  doc = Document.new res
161
154
  end
162
155
 
163
- # TODO this method is not tested
164
156
  # Share a file
165
157
  def share_file(nodeid, users, message, level)
166
158
  uri = ENDPOINT_DC + nodeid + "/share/"
167
159
  req = Element.new "request"
168
160
  share = req.add_element "share"
161
+ users = [""] unless users
169
162
  users.each{|e|
170
163
  user = Element.new "user"
171
164
  user.text = e
@@ -175,28 +168,28 @@ module AdobeShare
175
168
  req.add_element "level"
176
169
  req.elements["message"].text = message
177
170
  req.elements["level"].text = level
178
- res = http_client_request("POST", uri, req)
171
+ res = http_client_request("PUT", uri, req)
179
172
  doc = Document.new res
180
173
  end
181
174
 
182
- # TODO this method is not tested
183
175
  # Unshare a file
184
176
  def unshare_file(nodeid)
185
177
  share_file(nodeid, nil, nil, 0)
186
178
  end
187
179
 
188
- # TODO this method is not tested
189
180
  # Update a share file
190
181
  def update_share(nodeid, users_to_add, users_to_remove, message)
191
182
  uri = ENDPOINT_DC + nodeid + "/share/"
192
183
  req = Element.new "request"
193
184
  share = req.add_element "share"
185
+ users_to_add = [""] unless users_to_add
194
186
  users_to_add.each{|e|
195
187
  user = Element.new "user"
196
188
  user.text = e
197
189
  share.add_element user
198
190
  }
199
191
  unshare = req.add_element "unshare"
192
+ users_to_remove = [""] unless users_to_remove
200
193
  users_to_remove.each{|e|
201
194
  user = Element.new "user"
202
195
  user.text = e
@@ -259,13 +252,11 @@ module AdobeShare
259
252
  auth_string << "sessionid=\"#{@sessionid}\"," if @sessionid
260
253
  auth_string << "apikey=\"#{@apikey}\",data=\"#{data}\",sig=\"#{sig}\""
261
254
  headers["Authorization"] = auth_string
262
- headers["User-Agent"] = UA
263
255
  headers
264
256
  end
265
257
 
266
258
  # Performs a generic HTTP request.
267
259
  def http_client_request(method, uri_s, request=nil, header_add={})
268
- uri_s << "?method=MOVE" if method == "MOVE"
269
260
  uri = URI.parse uri_s
270
261
  headers = make_headers method, uri
271
262
  headers = headers.merge header_add
@@ -279,7 +270,7 @@ module AdobeShare
279
270
  when "DELETE"
280
271
  res = @client.delete(uri, headers)
281
272
  when "MOVE"
282
- res = @client.post(uri, request, headers)
273
+ res = @client.move(uri, nil, headers)
283
274
  end
284
275
  body = res.body.content
285
276
  status_code = res.header.response_status_code
@@ -300,4 +291,4 @@ module AdobeShare
300
291
  end
301
292
  class ParameterError < RuntimeError
302
293
  end
303
- end
294
+ end
@@ -0,0 +1,14 @@
1
+ require 'http-access2'
2
+
3
+ module AdobeShare
4
+ #
5
+ # HTTPClient extensions
6
+ #
7
+ class HTTPClient < HTTPClient
8
+
9
+ # MOVE Method extension
10
+ def move(uri, query = nil, extheader = {}, &block)
11
+ request('MOVE', uri, query, nil, extheader, &block)
12
+ end
13
+ end
14
+ end
@@ -2,7 +2,7 @@ module AdobeShare #:nodoc:
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 0
4
4
  MINOR = 0
5
- TINY = 2
5
+ TINY = 3
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
data/lib/adobeshare.rb CHANGED
@@ -3,6 +3,7 @@ $:.unshift File.dirname(__FILE__)
3
3
  require 'adobeshare/version'
4
4
  require 'adobeshare/client'
5
5
  require 'adobeshare/node'
6
+ require 'adobeshare/http'
6
7
 
7
8
  module AdobeShare
8
9
 
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.4
3
3
  specification_version: 1
4
4
  name: adobeshare
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.0.2
7
- date: 2007-10-09 00:00:00 +09:00
6
+ version: 0.0.3
7
+ date: 2007-10-13 00:00:00 +09:00
8
8
  summary: Adobe Share API for Ruby
9
9
  require_paths:
10
10
  - lib
@@ -38,6 +38,7 @@ files:
38
38
  - lib/adobeshare/version.rb
39
39
  - lib/adobeshare/client.rb
40
40
  - lib/adobeshare/node.rb
41
+ - lib/adobeshare/http.rb
41
42
  - examples/sample.rb
42
43
  - examples/config.yaml.sample
43
44
  - setup.rb