couch_surfer 0.3.2 → 0.3.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -3,7 +3,7 @@ module CouchRest
3
3
  # Query a CouchDB view as defined by a <tt>_design</tt> document. Accepts
4
4
  # paramaters as described in http://wiki.apache.org/couchdb/HttpViewApi
5
5
  #/db/_design/examples/_list/index-posts/posts-by-date
6
-
6
+
7
7
  def list(list_name, view_name, doc_name, params = {})
8
8
  url = CouchRest.paramify_url "#{@root}/_design/#{doc_name}/_list/#{list_name}/#{view_name}", params
9
9
  response = RestClient.get(url)
@@ -11,6 +11,14 @@ module CouchRest
11
11
  rescue
12
12
  response
13
13
  end
14
+
15
+ # PUT an attachment directly to CouchDB
16
+ def put_attachment(doc, name, file, options = {})
17
+ docid = escape_docid(doc['_id'])
18
+ uri = url_for_attachment(doc, name)
19
+ JSON.parse(HttpAbstraction.put(uri, file, options))
20
+ end
21
+
14
22
  end
15
23
 
16
24
  class Design
@@ -24,6 +24,19 @@ describe CouchSurfer::Attachments do
24
24
  @person.put_attachment("couchdb.png", open_fixture("attachments/couchdb.png")).should be_true
25
25
  end
26
26
 
27
+ it "should not escape spaces" do
28
+ @person.put_attachment("couch db.png", open_fixture("attachments/couchdb.png")).should be_true
29
+ @person.reload["_attachments"].keys.should include "couch db.png"
30
+ end
31
+
32
+ it "should not store filenames beginning with an underscore" do
33
+ lambda{ @person.put_attachment("_couch db.png", open_fixture("attachments/couchdb.png")) }.should raise_error RestClient::RequestFailed
34
+ end
35
+
36
+ it "should not store filenames which are non-utf8" do
37
+ lambda{ @person.put_attachment("®#†π¶®¥π€.png", open_fixture("attachments/couchdb.png")) }.should raise_error RestClient::RequestFailed
38
+ end
39
+
27
40
  it "should raise an exception if the record is not yet saved" do
28
41
  person = Person.new(:name => "John", :email => "john@mail.com")
29
42
  lambda {person.put_attachment("couchdb.png", open_fixture("attachments/couchdb.png"))}.should raise_error(ArgumentError)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: couch_surfer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Groves
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-12-10 00:00:00 +01:00
12
+ date: 2010-01-27 00:00:00 +01:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -104,7 +104,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
104
104
  requirements: []
105
105
 
106
106
  rubyforge_project:
107
- rubygems_version: 1.3.4
107
+ rubygems_version: 1.3.5
108
108
  signing_key:
109
109
  specification_version: 3
110
110
  summary: ORM based on CouchRest::Model