camlistore 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +6 -14
- data/Gemfile +1 -0
- data/README.md +4 -0
- data/camlistore.gemspec +1 -0
- data/lib/camlistore.rb +2 -0
- data/lib/camlistore/api.rb +23 -3
- data/lib/camlistore/client.rb +37 -6
- data/lib/camlistore/version.rb +1 -1
- metadata +23 -8
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
metadata.gz: !binary |-
|
9
|
-
MzMwYjRiMWNhNjdkMWU3ZmNkNmU3MmM4MmE4MDc1MDljNTBiYzU0OThjNTM2
|
10
|
-
M2U5ODIyMTcwZTk4YzMyMzIxMDE3OGJkMjRkMjVmMDU5ZTlkZWJkYWNhOTk3
|
11
|
-
NDQ4MTE1NGVkMTYwNzVkMmMyZjc3ZmE4MzA5OGNjZDcyMzBkOWE=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
YjhlNDUyYTI0ZjdhM2UwZWI2NTA2MTdhMjgwYzNkZTAzZjQwMzI1MjVjMjg5
|
14
|
-
NmU3YTBlOWVlODFmZjVkM2UyYWM2MzNjM2FkODAwY2Q5MGFjYWMyNDE1NDAy
|
15
|
-
NDk4MzFmZWQ4MDQxNzBlMTZmZjhmZDkwNjdmZTE5NjdhNjY4ODE=
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: efa7c94d5b87809a153c69a9f8de65456c707464
|
4
|
+
data.tar.gz: af9f070609707f40e5164106c38df07f13e4aba6
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: a53893d9812102fcebdcb4cd5ebc738d53702722ae763e2ff4fe4d6c4f6411e2abcf718baa3072eb2b2c1ddb1d0c175faf7447fa85f846a23fba957f04f98840
|
7
|
+
data.tar.gz: 895512a4f6bb0989755d8b9dc53aa05c0235c29aa2bc4bf24a66b9acbd7c292591299be53af034331a586c1840fdfee45bb58ea0ce7039b9a2c2644cb8458880
|
data/Gemfile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
gemspec
|
data/README.md
CHANGED
data/camlistore.gemspec
CHANGED
data/lib/camlistore.rb
CHANGED
@@ -5,6 +5,8 @@ require 'active_support/core_ext/object/blank'
|
|
5
5
|
require 'active_support/core_ext/array/wrap'
|
6
6
|
require 'active_support/core_ext/string/inflections'
|
7
7
|
require 'active_support/concern'
|
8
|
+
require 'digest/sha1'
|
9
|
+
require 'json'
|
8
10
|
|
9
11
|
module Camlistore
|
10
12
|
autoload :Configuration, 'camlistore/configuration'
|
data/lib/camlistore/api.rb
CHANGED
@@ -4,15 +4,35 @@ module Camlistore
|
|
4
4
|
extend ActiveSupport::Concern
|
5
5
|
|
6
6
|
def connection
|
7
|
-
@connection ||= Faraday.new(config.
|
7
|
+
@connection ||= Faraday.new(config.host) do |conn|
|
8
8
|
conn.response :mashify
|
9
9
|
conn.response :json, content_type: 'text/javascript'
|
10
10
|
conn.adapter Faraday.default_adapter
|
11
11
|
end
|
12
12
|
end
|
13
13
|
|
14
|
-
def api_call url, params = {}
|
15
|
-
response = connection.get(url, params)
|
14
|
+
def api_call url, params = {}, headers = {}
|
15
|
+
response = connection.get(url, params, headers) do |conn|
|
16
|
+
yield(conn) if block_given?
|
17
|
+
end
|
18
|
+
|
19
|
+
data = response.body
|
20
|
+
|
21
|
+
# Camlistore doesn't seem to give errors?
|
22
|
+
# error_message = data.error_message
|
23
|
+
# raise ArgumentError, error_message if error_message
|
24
|
+
|
25
|
+
if block_given?
|
26
|
+
yield data
|
27
|
+
else
|
28
|
+
data
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def api_post url, params = {}, headers = {}
|
33
|
+
response = connection.post(url, params, headers) do |conn|
|
34
|
+
yield(conn) if block_given?
|
35
|
+
end
|
16
36
|
|
17
37
|
data = response.body
|
18
38
|
|
data/lib/camlistore/client.rb
CHANGED
@@ -1,18 +1,21 @@
|
|
1
1
|
module Camlistore
|
2
2
|
Configuration.namespace :camlistore
|
3
|
-
Configuration.keys :
|
3
|
+
Configuration.keys :host
|
4
4
|
Configuration.env ENV
|
5
5
|
|
6
6
|
class Client
|
7
|
-
attr_reader :config
|
7
|
+
attr_reader :config, :blobroot, :searchroot
|
8
8
|
include API
|
9
9
|
|
10
10
|
def initialize options = {}
|
11
|
-
@config = Configuration.new(options,
|
12
|
-
raise ArgumentError, "You must supply blobstore host." unless config.
|
11
|
+
@config = Configuration.new(options, host: 'http://localhost:3179')
|
12
|
+
raise ArgumentError, "You must supply blobstore host." unless config.host.present?
|
13
|
+
remote_configuration = api_call '/', {}, {accept: 'text/x-camli-configuration'}
|
14
|
+
@blobroot = remote_configuration['blobRoot']
|
15
|
+
@searchroot = remote_configuration['searchRoot']
|
13
16
|
end
|
14
17
|
|
15
|
-
api_method :enumerate_blobs, 'camli/enumerate-blobs'
|
18
|
+
api_method :enumerate_blobs, '/bs/camli/enumerate-blobs'
|
16
19
|
|
17
20
|
def each_blob &block
|
18
21
|
data = enumerate_blobs
|
@@ -30,8 +33,36 @@ module Camlistore
|
|
30
33
|
end
|
31
34
|
end
|
32
35
|
|
36
|
+
def blobref content
|
37
|
+
'sha1-' + Digest::SHA1.hexdigest(content)
|
38
|
+
end
|
39
|
+
|
33
40
|
def get sha
|
34
|
-
api_call('camli/' + sha)
|
41
|
+
api_call(@blobroot + 'camli/' + sha)
|
42
|
+
end
|
43
|
+
|
44
|
+
def describe sha
|
45
|
+
api_call(@searchroot + 'camli/search/describe', {'blobref' => sha})
|
46
|
+
end
|
47
|
+
|
48
|
+
def search query
|
49
|
+
query = query.to_json if query.is_a?(Hash)
|
50
|
+
api_post(@searchroot + 'camli/search/query', query)
|
51
|
+
end
|
52
|
+
|
53
|
+
def put content
|
54
|
+
sha = blobref(content)
|
55
|
+
boundary = 'randomboundaryXYZ'
|
56
|
+
content_type = "multipart/form-data; boundary=#{boundary}"
|
57
|
+
|
58
|
+
post_body = "--#{boundary}
|
59
|
+
Content-Disposition: form-data; name='#{sha}'; filename='#{sha}'
|
60
|
+
Content-Type: application/octet-stream
|
61
|
+
|
62
|
+
#{content}
|
63
|
+
--#{boundary}--"
|
64
|
+
|
65
|
+
api_post(@blobroot + 'camli/upload', post_body, {:content_type => content_type})
|
35
66
|
end
|
36
67
|
end
|
37
68
|
|
data/lib/camlistore/version.rb
CHANGED
metadata
CHANGED
@@ -1,36 +1,51 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: camlistore
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Quinn Shanahan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2014-07-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday_middleware
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ~>
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: 0.9.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - ~>
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 0.9.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: activesupport
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 4.0.0
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 4.0.0
|
27
41
|
description: Some access to your camlistore in ruby
|
28
42
|
email: quinn@tastehoneyco.com
|
29
43
|
executables: []
|
30
44
|
extensions: []
|
31
45
|
extra_rdoc_files: []
|
32
46
|
files:
|
33
|
-
- .gitignore
|
47
|
+
- ".gitignore"
|
48
|
+
- Gemfile
|
34
49
|
- LICENSE
|
35
50
|
- README.md
|
36
51
|
- camlistore.gemspec
|
@@ -48,17 +63,17 @@ require_paths:
|
|
48
63
|
- lib
|
49
64
|
required_ruby_version: !ruby/object:Gem::Requirement
|
50
65
|
requirements:
|
51
|
-
- -
|
66
|
+
- - ">="
|
52
67
|
- !ruby/object:Gem::Version
|
53
68
|
version: '0'
|
54
69
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
55
70
|
requirements:
|
56
|
-
- -
|
71
|
+
- - ">="
|
57
72
|
- !ruby/object:Gem::Version
|
58
73
|
version: '0'
|
59
74
|
requirements: []
|
60
75
|
rubyforge_project:
|
61
|
-
rubygems_version: 2.
|
76
|
+
rubygems_version: 2.2.2
|
62
77
|
signing_key:
|
63
78
|
specification_version: 4
|
64
79
|
summary: Camlistore client
|