usergrid_iron 0.0.1 → 0.0.2

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.
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 run through some of the
30
- basic concepts:
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
- # set the Usergrid (or Apigee App Services) URL
36
- usergrid_api = Usergrid::Resource.new 'http://localhost:8080'
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.management
40
- management.login 'test', 'test'
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
- app_name = 'dogs_application'
44
- organization = management.organization 'test-organization'
45
- application = organization.create_application app_name
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
- # create an application user
48
- application.create_user 'app_username', 'app_name', 'app_email@test.com', 'password'
89
+ ## now we can play with the puppies! ##
49
90
 
50
- # get a new application context and login as the new user
51
- application = usergrid_api.application 'test-organization', app_name
52
- application.login 'app_username', 'password'
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
- # create a dog
55
- application.create_entity 'dogs', { breed: 'Black Mouth Cur', name: 'Old Yeller' }
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
- { breed: 'Cocker Spaniel', name: 'Lady' },
60
- { breed: 'Mixed', name: 'Benji' }]
100
+ { breed: 'Cocker Spaniel', name: 'Lady' },
101
+ { breed: 'Mixed', name: 'Benji' }]
61
102
 
62
- # retrieves the dogs collection from Usergrid and prints their names
63
- dogs = application['dogs'].get.collection
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
- pp dog.name # entities automatically have attributes
106
+ puts "Hello, #{dog.name}!" # entities automatically have attributes
66
107
  end
67
108
 
68
- # query for a dog named Benji
69
- dogs.query "select * where name = 'Benji'" # repopulates the collection
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.command = 'come home' # use attribute access
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
- # get the dog by uuid - the attributes were saved!
78
- dog = application["dogs/#{benji.uuid}"].get.entity
79
- if dog.command == 'come home'
80
- puts "Benji's coming home!"
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
- Looking for a specific feature? Check out the rspecs, there are examples of almost everything!
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
@@ -1,7 +1,9 @@
1
1
  module Usergrid
2
2
  class Application < Resource
3
3
 
4
- def initialize(url, api_url, options)
4
+ def initialize(url, options={})
5
+ org_name = url.split('/')[-2]
6
+ api_url = url[0..url.index(org_name)-2]
5
7
  super url, api_url, options
6
8
  end
7
9
 
@@ -35,11 +35,11 @@ module Usergrid
35
35
  end
36
36
 
37
37
  def create_entity(data)
38
- response = self.post data
39
- response.entity
38
+ self.post data
40
39
  end
40
+ alias_method :create_entities, :create_entity
41
41
 
42
- # options: 'reversed', 'start', 'cursor', 'limit', 'permission'
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
@@ -37,7 +37,7 @@ module Usergrid
37
37
  end
38
38
 
39
39
  def to_s
40
- "resource: #{url}\ndata: #{data.pretty_inspect}"
40
+ "resource: #{url}\ndata: #{data}"
41
41
  end
42
42
 
43
43
  private
@@ -1,12 +1,17 @@
1
1
  module Usergrid
2
2
  class Management < Resource
3
3
 
4
- def initialize(api_url, options)
5
- url = concat_urls(api_url, 'management')
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, api_url, options
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, api_url, options)
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}"), api_url, options
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}"), api_url, options
46
+ Usergrid::Application.new concat_urls(api_url, "#{organization}/#{application}"), options
47
47
  end
48
48
 
49
49
  def query(query=nil, options={})
@@ -1,3 +1,3 @@
1
1
  module Usergrid
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
File without changes
data/spec/spec_helper.rb CHANGED
@@ -3,7 +3,7 @@ require 'simplecov'
3
3
  require 'rspec'
4
4
  require 'yaml'
5
5
  require 'securerandom'
6
- require_relative '../lib/usergrid'
6
+ require_relative '../lib/usergrid_iron'
7
7
 
8
8
  LOG = Logger.new(STDOUT)
9
9
  RestClient.log=LOG
@@ -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 # todo
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 }.should raise_error
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.1
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-21 00:00:00.000000000 Z
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: -1597899148183039050
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: -1597899148183039050
161
+ hash: -4175816790877245614
162
162
  requirements: []
163
163
  rubyforge_project:
164
164
  rubygems_version: 1.8.24