couchdb_basic 0.0.1.beta

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.
Files changed (2) hide show
  1. data/lib/couchdb_basic.rb +90 -0
  2. metadata +111 -0
@@ -0,0 +1,90 @@
1
+ require 'multi_json'
2
+ require 'rest-client'
3
+ require 'uri-handler'
4
+
5
+ class Couchdb
6
+
7
+ def initialize(url)
8
+ @url = url
9
+ end
10
+
11
+ def _get(url="")
12
+ r = RestClient.get "#{@url}#{url}"
13
+ MultiJson.load(r.to_str, :symbolize_keys => true)
14
+ end
15
+
16
+ def _post(data,bulk=false)
17
+ begin
18
+ url = @url
19
+ if bulk
20
+ url = "#{url}/_bulk_docs"
21
+ end
22
+ r = RestClient.post "#{url}", MultiJson.dump(data), :content_type => :json, :accept => :json
23
+ rescue RestClient::Forbidden => e
24
+ puts e.response.to_str
25
+ r = e.response
26
+ end
27
+ MultiJson.load(r.to_str, :symbolize_keys => true)
28
+ end
29
+
30
+ def db()
31
+ _get()
32
+ end
33
+
34
+ def create(doc)
35
+ r = _post(doc)
36
+ doc[:_id] = r[:id]
37
+ doc[:_rev] = r[:rev]
38
+ doc
39
+ end
40
+
41
+ def create_bulk(docs)
42
+ docs = {:docs=>docs}
43
+ _post(docs,true)
44
+ end
45
+
46
+ def update(doc)
47
+ r = _post(doc)
48
+ doc[:_rev] = r[:rev]
49
+ doc
50
+ end
51
+
52
+ def get(id)
53
+ begin
54
+ _get "/#{id.to_uri}"
55
+ rescue RestClient::ResourceNotFound
56
+ nil
57
+ rescue RestClient::BadRequest => e
58
+ puts e.response.to_str
59
+ nil
60
+ end
61
+ end
62
+
63
+ def delete(doc)
64
+ r = RestClient.delete "#{@url}/#{doc[:_id]}?rev=#{doc[:_rev]}", :content_type => :json
65
+ nil
66
+ end
67
+
68
+ def view(design,view,args={})
69
+ url = "/_design/#{design}/_view/#{view}?"
70
+ if args.has_key?(:key)
71
+ key = MultiJson.dump(args[:key]).to_uri
72
+ url << "&key=#{key}"
73
+ end
74
+ if args.has_key?(:group)
75
+ key = MultiJson.dump(args[:group]).to_uri
76
+ url << "&group=#{key}"
77
+ end
78
+ if args.has_key?(:reduce)
79
+ key = MultiJson.dump(args[:reduce]).to_uri
80
+ url << "&reduce=#{key}"
81
+ end
82
+ _get(url)[:rows]
83
+ end
84
+
85
+ def get_all()
86
+ docs = []
87
+ _get("/_all_docs?include_docs=true")[:rows].each{ | row | docs << row[:doc ] }
88
+ docs
89
+ end
90
+ end
metadata ADDED
@@ -0,0 +1,111 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: couchdb_basic
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1.beta
5
+ prerelease: 6
6
+ platform: ruby
7
+ authors:
8
+ - Diogo Silva
9
+ - Bruno Giminiani
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2014-03-18 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: multi_json
17
+ requirement: !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: '0'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ! '>='
29
+ - !ruby/object:Gem::Version
30
+ version: '0'
31
+ - !ruby/object:Gem::Dependency
32
+ name: rest_client
33
+ requirement: !ruby/object:Gem::Requirement
34
+ none: false
35
+ requirements:
36
+ - - ! '>='
37
+ - !ruby/object:Gem::Version
38
+ version: '0'
39
+ type: :runtime
40
+ prerelease: false
41
+ version_requirements: !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ! '>='
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ - !ruby/object:Gem::Dependency
48
+ name: uri-handler
49
+ requirement: !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :runtime
56
+ prerelease: false
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ none: false
59
+ requirements:
60
+ - - ! '>='
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ - !ruby/object:Gem::Dependency
64
+ name: rspec
65
+ requirement: !ruby/object:Gem::Requirement
66
+ none: false
67
+ requirements:
68
+ - - ! '>='
69
+ - !ruby/object:Gem::Version
70
+ version: '0'
71
+ type: :development
72
+ prerelease: false
73
+ version_requirements: !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ! '>='
77
+ - !ruby/object:Gem::Version
78
+ version: '0'
79
+ description: A lib for documents database operations.
80
+ email: diogo@cncflora.jbrj.gov.br
81
+ executables: []
82
+ extensions: []
83
+ extra_rdoc_files: []
84
+ files:
85
+ - lib/couchdb_basic.rb
86
+ homepage: https://github.com/CNCFlora/couchdb-basic
87
+ licenses:
88
+ - Apache License 2.0
89
+ post_install_message:
90
+ rdoc_options: []
91
+ require_paths:
92
+ - lib
93
+ required_ruby_version: !ruby/object:Gem::Requirement
94
+ none: false
95
+ requirements:
96
+ - - ! '>='
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
99
+ required_rubygems_version: !ruby/object:Gem::Requirement
100
+ none: false
101
+ requirements:
102
+ - - ! '>'
103
+ - !ruby/object:Gem::Version
104
+ version: 1.3.1
105
+ requirements: []
106
+ rubyforge_project:
107
+ rubygems_version: 1.8.23
108
+ signing_key:
109
+ specification_version: 3
110
+ summary: A basic couchdb database lib.
111
+ test_files: []