kinto_box 0.1.7 → 0.1.8
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.
- checksums.yaml +4 -4
- data/README.md +10 -2
- data/lib/kinto_box/kinto_collection.rb +7 -2
- data/lib/kinto_box/version.rb +1 -1
- data/lib/kinto_box.rb +61 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cd63b799d4e03bcc37de77e6e9669c29ca7f403e
|
4
|
+
data.tar.gz: e24e02470648c46c9b45ed357df0cff3e19f243b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 300f47c897217f481d07ba653a1065693af058545b6c3b2fe27ccea491ab044a8c576b1b0f6518385d33e45fdf03fe801e54a00f6ce659fb61f675a78ce44760
|
7
|
+
data.tar.gz: 1f1b80c4135e17c9da8c81ead68ebcd593952159331dc4713ca4a3fce2036df92c668b367317d8e3f7c576a2e14b037afde2c0f4b1f53a41b9862dfd4c9baf08
|
data/README.md
CHANGED
@@ -28,7 +28,7 @@ To use kinto_box, add `require 'kinto_box'` to your file.
|
|
28
28
|
To connect to a kinto server, you can pass the username and password to the client
|
29
29
|
|
30
30
|
```
|
31
|
-
kinto_client = KintoBox
|
31
|
+
kinto_client = KintoBox.new('https://kinto.dev.mozaws.net', {:username => 'token', :password => 'my-secret'})
|
32
32
|
```
|
33
33
|
|
34
34
|
If no credentials are passed, the gem looks for `KINTO_API_TOKEN` environment variable. The environment variable should store the Base64 encoding of `username:password` string, for this to work.
|
@@ -105,7 +105,7 @@ To connect to a collection named `TestCollection`
|
|
105
105
|
collection = bucket.collection('TestCollection')
|
106
106
|
```
|
107
107
|
|
108
|
-
> Note: This does not create the
|
108
|
+
> Note: This does not create the collection nor check if the collection exists on the server.
|
109
109
|
|
110
110
|
To check if the collection exists use
|
111
111
|
|
@@ -143,6 +143,14 @@ To read from the collection
|
|
143
143
|
records = collection.list_records
|
144
144
|
```
|
145
145
|
|
146
|
+
List records support filtering and sorting. It follows the convention described [here](http://kinto.readthedocs.io/en/stable/api/1.x/filtering.html) and [here](http://kinto.readthedocs.io/en/stable/api/1.x/sorting.html).
|
147
|
+
|
148
|
+
```
|
149
|
+
records = collection.list_records('min_val=10','val')
|
150
|
+
```
|
151
|
+
|
152
|
+
The above line will return all records where `val` is at least 10 and sorted ascending on the field `val`
|
153
|
+
|
146
154
|
To delete all records from the collection
|
147
155
|
|
148
156
|
```
|
@@ -22,8 +22,13 @@ module KintoBox
|
|
22
22
|
record.info
|
23
23
|
end
|
24
24
|
|
25
|
-
def list_records
|
26
|
-
|
25
|
+
def list_records(filters = nil, sort = nil)
|
26
|
+
query_string = '?'
|
27
|
+
query_string += filters unless filters.nil?
|
28
|
+
query_string += '&' unless filters.nil? || sort.nil?
|
29
|
+
query_string += "_sort=#{sort}" unless sort.nil?
|
30
|
+
path = query_string == '?' ? "#{@url_path}/records" : "#{@url_path}/records#{query_string}"
|
31
|
+
@kinto_client.get(path)
|
27
32
|
end
|
28
33
|
|
29
34
|
def create_record(data)
|
data/lib/kinto_box/version.rb
CHANGED
data/lib/kinto_box.rb
CHANGED
@@ -5,11 +5,28 @@ require 'kinto_box/kinto_bucket'
|
|
5
5
|
require 'base64'
|
6
6
|
|
7
7
|
module KintoBox
|
8
|
+
|
9
|
+
# Initializes a new Kinto client.
|
10
|
+
#
|
11
|
+
# @param [String] server Url of the server without the version
|
12
|
+
# @param [Hash] options Optional parameter. If the hash contains :username and :password, it will be used to authenticate.
|
13
|
+
# `options` parameter can be used to pass in credentials. If no credentials are passed, it looks for KINTO_API_TOKEN environment variable
|
14
|
+
# @return [KintoBox::KintoClient] A kinto client object
|
15
|
+
def KintoBox.new(server, options = nil)
|
16
|
+
return KintoClient.new(server, options)
|
17
|
+
end
|
18
|
+
|
8
19
|
class KintoClient
|
9
20
|
include HTTParty
|
10
21
|
headers 'Accept' => 'application/json', 'Content-Type' => 'application/json'
|
11
22
|
format :json
|
12
23
|
|
24
|
+
# Initializes a new Kinto client.
|
25
|
+
#
|
26
|
+
# @param [String] server Url of the server without the version
|
27
|
+
# @param [Hash] options Optional parameter. If the hash contains :username and :password, it will be used to authenticate.
|
28
|
+
# `options` parameter can be used to pass in credentials. If no credentials are passed, it looks for KINTO_API_TOKEN environment variable
|
29
|
+
# @return [KintoBox::KintoClient] A kinto client object
|
13
30
|
def initialize(server, options = nil)
|
14
31
|
@server = server
|
15
32
|
self.class.base_uri URI.join(@server, '/v1/').to_s
|
@@ -22,49 +39,92 @@ module KintoBox
|
|
22
39
|
self.class.headers('Authorization' => "Basic #{@auth}")
|
23
40
|
end
|
24
41
|
|
42
|
+
# Get reference to a bucket
|
43
|
+
#
|
44
|
+
# @param [String] bucket_id The id of the bucket
|
45
|
+
# @return [KintoBox::KintoBucket] A kinto bucket object
|
25
46
|
def bucket (bucket_id)
|
26
47
|
@bucket = KintoBucket.new(self, bucket_id)
|
27
48
|
@bucket
|
28
49
|
end
|
29
50
|
|
51
|
+
# Get server information
|
52
|
+
#
|
53
|
+
# @return [Hash] Server info as a hash
|
30
54
|
def server_info
|
31
55
|
get '/'
|
32
56
|
end
|
33
57
|
|
58
|
+
# Get current user id
|
59
|
+
#
|
60
|
+
# @return [String] current user id
|
34
61
|
def current_user_id
|
35
62
|
server_info['user']['id']
|
36
63
|
end
|
37
64
|
|
38
|
-
# buckets
|
65
|
+
# List of buckets
|
66
|
+
#
|
67
|
+
# @return [Hash] with list of buckets
|
39
68
|
def list_buckets
|
40
69
|
get '/buckets'
|
41
70
|
end
|
42
71
|
|
72
|
+
# Create a bucket
|
73
|
+
#
|
74
|
+
# @param [String] bucket_id The id of the bucket
|
75
|
+
# @return [KintoBox::KintoBucket] A kinto bucket object
|
43
76
|
def create_bucket(bucket_id)
|
44
77
|
put "/buckets/#{bucket_id}"
|
45
78
|
bucket(bucket_id)
|
46
79
|
end
|
47
80
|
|
81
|
+
# Delete all buckets
|
82
|
+
#
|
48
83
|
def delete_buckets
|
49
84
|
delete '/buckets'
|
50
85
|
end
|
51
86
|
|
87
|
+
# Calls http PUT on path
|
88
|
+
#
|
89
|
+
# @params [String]path Url path
|
90
|
+
# @params [Hash] data to be sent in the body
|
91
|
+
# @return [Hash] response body
|
52
92
|
def put(path, data = {})
|
53
93
|
ResponseHandler.handle self.class.put(path, :body => data.to_json)
|
54
94
|
end
|
55
95
|
|
96
|
+
# Calls http POST on path
|
97
|
+
#
|
98
|
+
# @params [String]path Url path
|
99
|
+
# @params [Hash] data to be sent in the body
|
100
|
+
# @return [Hash] response body
|
56
101
|
def post(path, data = {})
|
57
102
|
ResponseHandler.handle self.class.post(path, :body => data.to_json)
|
58
103
|
end
|
59
104
|
|
105
|
+
# Calls http PATCH on path
|
106
|
+
#
|
107
|
+
# @params [String]path Url path
|
108
|
+
# @params [Hash] data to be sent in the body
|
109
|
+
# @return [Hash] response body
|
60
110
|
def patch(path, data)
|
61
111
|
ResponseHandler.handle self.class.patch(path, :body => data.to_json)
|
62
112
|
end
|
63
113
|
|
114
|
+
# Calls http DELETE on path
|
115
|
+
#
|
116
|
+
# @params [String]path Url path
|
117
|
+
# @params [Hash] data to be sent in the body
|
118
|
+
# @return [Hash] response body
|
64
119
|
def delete(path)
|
65
120
|
ResponseHandler.handle self.class.delete(path)
|
66
121
|
end
|
67
122
|
|
123
|
+
# Calls http GET on path
|
124
|
+
#
|
125
|
+
# @params [String]path Url path
|
126
|
+
# @params [Hash] data to be sent in the body
|
127
|
+
# @return [Hash] response body
|
68
128
|
def get(path)
|
69
129
|
ResponseHandler.handle self.class.get(path)
|
70
130
|
end
|