usergrid_iron 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +72 -33
- data/lib/usergrid/core/application.rb +3 -1
- data/lib/usergrid/core/collection.rb +3 -3
- data/lib/usergrid/core/entity.rb +1 -1
- data/lib/usergrid/core/management.rb +9 -4
- data/lib/usergrid/core/organization.rb +4 -2
- data/lib/usergrid/core/resource.rb +1 -1
- data/lib/usergrid/version.rb +1 -1
- data/lib/{usergrid.rb → usergrid_iron.rb} +0 -0
- data/spec/spec_helper.rb +1 -1
- data/spec/usergrid/core/application_spec.rb +1 -1
- data/spec/usergrid/core/collection_spec.rb +2 -3
- data/spec/usergrid/extensions/hash_spec.rb +1 -1
- metadata +5 -5
data/README.md
CHANGED
@@ -26,65 +26,104 @@ Or install it yourself as:
|
|
26
26
|
Docs: http://apigee.com/docs/usergrid/
|
27
27
|
Open source: https://github.com/apigee/usergrid-stack
|
28
28
|
|
29
|
-
2. Getting started with the Usergrid_iron SDK is simple! Let's
|
30
|
-
|
29
|
+
2. Getting started with the Usergrid_iron SDK is simple! Let's start with the basics.
|
30
|
+
I'll assume you've already set up an organization, application, and user - just fill in your
|
31
|
+
own values in the code below.
|
32
|
+
|
33
|
+
<pre>
|
34
|
+
require 'usergrid_iron'
|
35
|
+
|
36
|
+
# fill in your values here!
|
37
|
+
usergrid_api = 'http://localhost:8080'
|
38
|
+
organization = ''
|
39
|
+
application = ''
|
40
|
+
username = ''
|
41
|
+
password = ''
|
42
|
+
|
43
|
+
application = Usergrid::Application.new "#{usergrid_api}/#{organization}/#{application}"
|
44
|
+
application.login username, password
|
45
|
+
|
46
|
+
# create and store a dog in the 'dogs' collection on the server
|
47
|
+
response = application.create_entity 'dogs', { breed: 'Black Mouth Cur', name: 'Old Yeller' }
|
48
|
+
|
49
|
+
# let's get the dog from the response and grab its persistent id
|
50
|
+
dog = response.entity
|
51
|
+
uuid = dog.uuid
|
52
|
+
|
53
|
+
# let's retrieve a dog from the server by UUID
|
54
|
+
same_dog = application['dogs'][uuid].entity
|
55
|
+
|
56
|
+
# is it our dog? well, he knows his name!
|
57
|
+
puts "My dog's name is: #{same_dog.name}"
|
58
|
+
</pre>
|
59
|
+
|
60
|
+
That was really easy. So let's try something slightly more complex.
|
61
|
+
Let's say we've registered for an organization, but we don't have an application yet (or
|
62
|
+
want to create a new one to work on). No worries, just fill in your organization and
|
63
|
+
superuser credentials below, and follow along! (Better yet: If you used the Usergrid launcher
|
64
|
+
and let it initialize your database, you shouldn't need to do anything!)
|
31
65
|
|
32
66
|
<pre>
|
33
67
|
require 'usergrid_iron'
|
34
68
|
|
35
|
-
|
36
|
-
|
69
|
+
usergrid_api = 'http://localhost:8080'
|
70
|
+
org_name = 'test-organization'
|
71
|
+
username = 'test'
|
72
|
+
password = 'test'
|
73
|
+
app_name = 'dog_sitter'
|
74
|
+
|
75
|
+
## first, let's get that setup out of the way ##
|
37
76
|
|
38
77
|
# get a management context & login the superuser
|
39
|
-
management = usergrid_api
|
40
|
-
management.login
|
78
|
+
management = Usergrid::Management.new usergrid_api
|
79
|
+
management.login username, password
|
41
80
|
|
42
81
|
# get the organization context & create a new application
|
43
|
-
|
44
|
-
|
45
|
-
|
82
|
+
organization = management.organization org_name
|
83
|
+
new_application = organization.create_application app_name
|
84
|
+
|
85
|
+
# create an user for our application
|
86
|
+
new_application.create_user 'username', 'name', 'email@test.com', 'password'
|
87
|
+
|
46
88
|
|
47
|
-
|
48
|
-
application.create_user 'app_username', 'app_name', 'app_email@test.com', 'password'
|
89
|
+
## now we can play with the puppies! ##
|
49
90
|
|
50
|
-
#
|
51
|
-
application =
|
52
|
-
application.login '
|
91
|
+
# login to our new application as our new user
|
92
|
+
application = Usergrid::Application.new "#{usergrid_api}/#{org_name}/#{app_name}"
|
93
|
+
application.login 'username', 'password'
|
53
94
|
|
54
|
-
#
|
55
|
-
application.create_entity
|
95
|
+
# we can start with our dog again
|
96
|
+
application.create_entity 'dogs', { breed: 'Black Mouth Cur', name: 'Old Yeller' }
|
56
97
|
|
57
|
-
# create several more dogs
|
98
|
+
# but this time let's create several more dogs at once
|
58
99
|
application.create_entities 'dogs', [{ breed: 'Catalan sheepdog', name: 'Einstein' },
|
59
|
-
|
60
|
-
|
100
|
+
{ breed: 'Cocker Spaniel', name: 'Lady' },
|
101
|
+
{ breed: 'Mixed', name: 'Benji' }]
|
61
102
|
|
62
|
-
#
|
63
|
-
dogs = application['dogs'].
|
103
|
+
# retrieve all the dogs (well, the first 'page' anyway) and tell them hi!
|
104
|
+
dogs = application['dogs'].collection
|
64
105
|
dogs.each do |dog| # works just like an array
|
65
|
-
|
106
|
+
puts "Hello, #{dog.name}!" # entities automatically have attributes
|
66
107
|
end
|
67
108
|
|
68
|
-
#
|
69
|
-
dogs.query
|
70
|
-
benji = dogs.first
|
109
|
+
# "Benji, come!"
|
110
|
+
benji = dogs.query("select * where name = 'Benji'").entity # shortcut: entity will return the first in the collection
|
71
111
|
|
72
112
|
# modify Benji's attributes & save
|
73
|
-
benji.
|
113
|
+
benji.location = 'home' # use attribute access
|
74
114
|
benji['breed'] = 'American Cocker Spaniel' # or access it like a Hash
|
75
115
|
benji.save
|
76
116
|
|
77
|
-
#
|
78
|
-
|
79
|
-
if
|
80
|
-
puts "Benji's
|
81
|
-
else
|
82
|
-
raise 'Benji is a lost puppy!'
|
117
|
+
# query for the dogs that are home (should just be Benji)
|
118
|
+
dogs = application['dogs'].query("select * where location = 'home'").collection
|
119
|
+
if dogs.size == 1 && dogs.first == 'home'
|
120
|
+
puts "Benji's home!"
|
83
121
|
end
|
84
122
|
|
85
123
|
</pre>
|
86
124
|
|
87
|
-
|
125
|
+
Whew. That's enough for now. But looking for a specific feature? Check out the rspecs,
|
126
|
+
there are examples of nearly everything!
|
88
127
|
|
89
128
|
|
90
129
|
## Contributing
|
@@ -35,11 +35,11 @@ module Usergrid
|
|
35
35
|
end
|
36
36
|
|
37
37
|
def create_entity(data)
|
38
|
-
|
39
|
-
response.entity
|
38
|
+
self.post data
|
40
39
|
end
|
40
|
+
alias_method :create_entities, :create_entity
|
41
41
|
|
42
|
-
|
42
|
+
## options: 'reversed', 'start', 'cursor', 'limit', 'permission'
|
43
43
|
#def update(new_data, query=nil, options={}) # todo: enable when server is fixed
|
44
44
|
# options = options.symbolize_keys
|
45
45
|
# @query_params = query ? options.merge({ql: query}) : options
|
data/lib/usergrid/core/entity.rb
CHANGED
@@ -1,12 +1,17 @@
|
|
1
1
|
module Usergrid
|
2
2
|
class Management < Resource
|
3
3
|
|
4
|
-
def initialize(
|
5
|
-
|
4
|
+
def initialize(url, options={})
|
5
|
+
management = url.split('/')[-1]
|
6
|
+
if management == 'management'
|
7
|
+
api_url = url[0..url.index(management)-2]
|
8
|
+
else
|
9
|
+
api_url = url
|
10
|
+
url = concat_urls(api_url, 'management')
|
11
|
+
end
|
6
12
|
super url, api_url, options
|
7
13
|
end
|
8
14
|
|
9
|
-
# one way: cannot delete organizations
|
10
15
|
def create_organization(organization, username, name, email, password)
|
11
16
|
data = { organization: organization,
|
12
17
|
username: username,
|
@@ -22,7 +27,7 @@ module Usergrid
|
|
22
27
|
|
23
28
|
def organization(organization)
|
24
29
|
url = self["organizations/#{organization}"].url
|
25
|
-
Organization.new url,
|
30
|
+
Organization.new url, options
|
26
31
|
end
|
27
32
|
|
28
33
|
def users
|
@@ -2,7 +2,9 @@ require 'uri'
|
|
2
2
|
module Usergrid
|
3
3
|
class Organization < Resource
|
4
4
|
|
5
|
-
def initialize(url,
|
5
|
+
def initialize(url, options={})
|
6
|
+
org_name = url.split('/')[-1]
|
7
|
+
api_url = url[0..url.index('management')-2]
|
6
8
|
super url, api_url, options
|
7
9
|
end
|
8
10
|
|
@@ -24,7 +26,7 @@ module Usergrid
|
|
24
26
|
end
|
25
27
|
|
26
28
|
def application(name_or_uuid)
|
27
|
-
Usergrid::Application.new concat_urls(api_url, "#{name}/#{name_or_uuid}"),
|
29
|
+
Usergrid::Application.new concat_urls(api_url, "#{name}/#{name_or_uuid}"), options
|
28
30
|
end
|
29
31
|
|
30
32
|
def users(query=nil)
|
@@ -43,7 +43,7 @@ module Usergrid
|
|
43
43
|
|
44
44
|
# application defaults to sandbox if none provided
|
45
45
|
def application(organization, application='sandbox')
|
46
|
-
Usergrid::Application.new concat_urls(api_url, "#{organization}/#{application}"),
|
46
|
+
Usergrid::Application.new concat_urls(api_url, "#{organization}/#{application}"), options
|
47
47
|
end
|
48
48
|
|
49
49
|
def query(query=nil, options={})
|
data/lib/usergrid/version.rb
CHANGED
File without changes
|
data/spec/spec_helper.rb
CHANGED
@@ -258,7 +258,7 @@ describe Usergrid::Application do
|
|
258
258
|
roles.size.should == size
|
259
259
|
end
|
260
260
|
|
261
|
-
it "should be able to create a new collection and access it" do
|
261
|
+
it "should be able to create a new collection and access it" do
|
262
262
|
entities = (1..4).collect do |i|
|
263
263
|
{ name: "test_#{i}" }
|
264
264
|
end
|
@@ -2,16 +2,15 @@ describe Usergrid::Collection do
|
|
2
2
|
|
3
3
|
before :all do
|
4
4
|
@application = create_random_application
|
5
|
+
@user = create_random_user @application, true
|
5
6
|
|
6
7
|
@collection = @application['tests'].collection
|
7
8
|
@entity_data = []
|
8
9
|
(1..10).each do |i|
|
9
10
|
test = { name: "test_#{i}" }
|
10
11
|
@entity_data << test
|
11
|
-
@collection.create_entity test
|
12
12
|
end
|
13
|
-
|
14
|
-
@user = create_random_user @application, true
|
13
|
+
@collection.create_entities @entity_data
|
15
14
|
end
|
16
15
|
|
17
16
|
after :all do
|
@@ -4,7 +4,7 @@ describe Hash do
|
|
4
4
|
|
5
5
|
it "should add dot notation recursively" do
|
6
6
|
h = { test1: 'test1', test2: { test2a: 'test2a' }, test3: [ { test3a: 'test3a' }] }
|
7
|
-
expect { h.test1 }.
|
7
|
+
expect { h.test1 }.to raise_error
|
8
8
|
h.add_dot_notation!
|
9
9
|
h.test1.should eq 'test1'
|
10
10
|
h.test2.test2a.should eq 'test2a'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: usergrid_iron
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-09-
|
12
|
+
date: 2012-09-22 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rest-client
|
@@ -115,7 +115,6 @@ files:
|
|
115
115
|
- bin/ldiff
|
116
116
|
- bin/restclient
|
117
117
|
- bin/rspec
|
118
|
-
- lib/usergrid.rb
|
119
118
|
- lib/usergrid/core/application.rb
|
120
119
|
- lib/usergrid/core/collection.rb
|
121
120
|
- lib/usergrid/core/entity.rb
|
@@ -125,6 +124,7 @@ files:
|
|
125
124
|
- lib/usergrid/extensions/hash.rb
|
126
125
|
- lib/usergrid/extensions/response.rb
|
127
126
|
- lib/usergrid/version.rb
|
127
|
+
- lib/usergrid_iron.rb
|
128
128
|
- spec/spec_helper.rb
|
129
129
|
- spec/spec_settings.yaml
|
130
130
|
- spec/usergrid/core/application_spec.rb
|
@@ -149,7 +149,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
149
149
|
version: '0'
|
150
150
|
segments:
|
151
151
|
- 0
|
152
|
-
hash: -
|
152
|
+
hash: -4175816790877245614
|
153
153
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
154
154
|
none: false
|
155
155
|
requirements:
|
@@ -158,7 +158,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
158
158
|
version: '0'
|
159
159
|
segments:
|
160
160
|
- 0
|
161
|
-
hash: -
|
161
|
+
hash: -4175816790877245614
|
162
162
|
requirements: []
|
163
163
|
rubyforge_project:
|
164
164
|
rubygems_version: 1.8.24
|