rugroupy-server 0.1.0 → 0.1.1

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.rdoc CHANGED
@@ -3,16 +3,28 @@
3
3
  rugroupy-server is a sinatra based server allowing one to interact with the rugroupy library
4
4
  over http.
5
5
 
6
- == features
6
+ == Features
7
7
  * requests and responses use JSON
8
8
  * GET, PUT, DELETE /entity to retrieve, create, or delete entities
9
9
  * PUT, DELETE /entity/tags to tag or untag entities
10
10
  * GET /entity/similiar to find entities similiar to a given entity sorted by score
11
11
  * GET, POST /group to retrieve most similiar entities or initiate a grouping request
12
12
 
13
+ == Usage
14
+
15
+ Extend Groupy::GroupyServer to configure mongo and other settings and then run it
16
+
17
+ require 'rugroupy/server'
18
+ class MyApp < Groupy::GroupyServer
19
+ register Sinatra::MongoExtension
20
+ set :mongo, 'mongo://localhost:27017/mongo_database_name'
21
+ # optionally set more things (port, etc.) according to http://www.sinatrarb.com/configuration.html
22
+ end
23
+ MyApp.run!
24
+
13
25
  == Examples
14
26
 
15
- See http://github.com/rwynn/rugroupy-server/tree/master/test
27
+ See http://github.com/rwynn/rugroupy-server/tree/master/test for example input/output to and from the server
16
28
 
17
29
  == Requirements
18
30
 
@@ -4,118 +4,126 @@ require 'sinatra/mongo'
4
4
  require 'rugroupy'
5
5
  require 'json'
6
6
 
7
- module ApplicationHelper
7
+ # Run the server like this by extending GroupyServer and calling run!
8
+ # require 'rugroupy/server'
9
+ # class MyApp < Groupy::GroupyServer
10
+ # register Sinatra::MongoExtension
11
+ # set :mongo, 'mongo://localhost:27017/test'
12
+ # optionally set more things (port, etc.) according to http://www.sinatrarb.com/configuration.html
13
+ # end
14
+ # MyApp.run!
15
+
16
+ module Groupy
17
+ module GroupyServerSupport
8
18
 
9
- def get_entity(params, create=false)
10
- e_json = self.get_entity_json(params)
11
- e = Groupy::Entity.new(mongo, e_json['name'], e_json["id"], create)
12
- e.get
13
- end
19
+ def get_entity(params, create=false)
20
+ e_json = self.get_entity_json(params)
21
+ e = Groupy::Entity.new(mongo, e_json['name'], e_json["id"], create)
22
+ e.get
23
+ end
14
24
 
15
- def get_entity_json(params)
16
- JSON.parse(params[:entity])
17
- end
25
+ def get_entity_json(params)
26
+ JSON.parse(params[:entity])
27
+ end
18
28
 
19
- def get_entity_similiar(params)
20
- e_json = self.get_entity_json(params)
21
- e = Groupy::Entity.new(mongo, e_json['name'], e_json["id"], create=false)
22
- e.similiar(e_json["tag"], e_json["skip"], e_json["limit"], e_json["reverse"])
23
- end
29
+ def get_entity_similiar(params)
30
+ e_json = self.get_entity_json(params)
31
+ e = Groupy::Entity.new(mongo, e_json['name'], e_json["id"], create=false)
32
+ e.similiar(e_json["tag"], e_json["skip"], e_json["limit"], e_json["reverse"])
33
+ end
24
34
 
25
- def delete_entity(params)
26
- e_json = self.get_entity_json(params)
27
- e = Groupy::Entity.new(mongo, e_json['name'], e_json["id"], create=create)
28
- e.delete
29
- end
35
+ def delete_entity(params)
36
+ e_json = self.get_entity_json(params)
37
+ e = Groupy::Entity.new(mongo, e_json['name'], e_json["id"], create=create)
38
+ e.delete
39
+ end
30
40
 
31
- def tag_entity(params, create=true)
32
- e_json = self.get_entity_json(params)
33
- e = Groupy::Entity.new(mongo, e_json['name'], e_json["id"], create=create)
34
- e_json["tags"].each_pair do |name, value|
35
- create ? e.tag(name, value) : e.untag(name, value)
41
+ def tag_entity(params, create=true)
42
+ e_json = self.get_entity_json(params)
43
+ e = Groupy::Entity.new(mongo, e_json['name'], e_json["id"], create=create)
44
+ e_json["tags"].each_pair do |name, value|
45
+ create ? e.tag(name, value) : e.untag(name, value)
46
+ end
47
+ e.get
36
48
  end
37
- e.get
38
- end
39
49
 
40
- def group_entities(params)
41
- e_json = self.get_entity_json(params)
42
- g = Groupy::EntityGrouper.new(mongo, e_json["name"])
43
- options = {:includeFunction => e_json["include_function"],
44
- :scoreFunction => e_json["score_function"],
45
- :dynamicTagFunction => e_json["dynamic_tag_function"]}
46
- g.group(options)
47
- end
50
+ def group_entities(params)
51
+ e_json = self.get_entity_json(params)
52
+ g = Groupy::EntityGrouper.new(mongo, e_json["name"])
53
+ options = {:includeFunction => e_json["include_function"],
54
+ :scoreFunction => e_json["score_function"],
55
+ :dynamicTagFunction => e_json["dynamic_tag_function"]}
56
+ g.group(options)
57
+ end
48
58
 
49
- def similiar_entities(params)
50
- e_json = self.get_entity_json(params)
51
- g = Groupy::EntityGrouper.new(mongo, e_json["name"])
52
- g.similiar(e_json["tag"], e_json["skip"], e_json["limit"], e_json["reverse"])
53
- end
59
+ def similiar_entities(params)
60
+ e_json = self.get_entity_json(params)
61
+ g = Groupy::EntityGrouper.new(mongo, e_json["name"])
62
+ g.similiar(e_json["tag"], e_json["skip"], e_json["limit"], e_json["reverse"])
63
+ end
54
64
 
55
- end
56
-
57
- class Application < Sinatra::Base
58
- include ApplicationHelper
59
- register Sinatra::MongoExtension
60
- set :app_file, __FILE__
61
- set :mongo, 'mongo://localhost:27017/test'
62
-
63
- before do
64
- headers "Content-Type" => "application/json; charset=UTF-8"
65
65
  end
66
+
67
+ class GroupyServer < Sinatra::Base
68
+ include GroupyServerSupport
69
+ #register Sinatra::MongoExtension
70
+ #set :mongo, 'mongo://localhost:27017/test'
66
71
 
67
- get '/entity' do
68
- response = Hash[:success => true, :entity => self.get_entity(params)]
69
- halt 404, JSON.generate({:success => false,
70
- :message => "not found"}) if not response[:entity]
71
- JSON.generate(response)
72
- end
72
+ before do
73
+ headers "Content-Type" => "application/json; charset=UTF-8"
74
+ end
73
75
 
74
- put '/entity' do
75
- response = Hash[:success => true, :entity => self.get_entity(params, true)]
76
- halt 500, JSON.generate({:success => false,
77
- :message => "unable to create entity"}) if not response[:entity]
78
- status 201
79
- JSON.generate(response)
80
- end
76
+ get '/entity' do
77
+ response = Hash[:success => true, :entity => self.get_entity(params)]
78
+ halt 404, JSON.generate({:success => false,
79
+ :message => "not found"}) if not response[:entity]
80
+ JSON.generate(response)
81
+ end
81
82
 
82
- delete '/entity' do
83
- response = Hash[:success => true]
84
- self.delete_entity(params)
85
- JSON.generate(response)
86
- end
83
+ put '/entity' do
84
+ response = Hash[:success => true, :entity => self.get_entity(params, true)]
85
+ halt 500, JSON.generate({:success => false,
86
+ :message => "unable to create entity"}) if not response[:entity]
87
+ status 201
88
+ JSON.generate(response)
89
+ end
87
90
 
88
- put '/entity/tags' do
89
- response = Hash[:success => true, :entity => self.tag_entity(params, true)]
90
- halt 500, JSON.generate({:success => false,
91
- :message => "unable to create entity tag"}) if not response[:entity]
92
- JSON.generate(response)
93
- end
91
+ delete '/entity' do
92
+ response = Hash[:success => true]
93
+ self.delete_entity(params)
94
+ JSON.generate(response)
95
+ end
94
96
 
95
- delete '/entity/tags' do
96
- response = Hash[:success => true, :entity => self.tag_entity(params, false)]
97
- halt 500, JSON.generate({:success => false,
98
- :message => "unable to remove entity tag"}) if not response[:entity]
99
- JSON.generate(response)
100
- end
97
+ put '/entity/tags' do
98
+ response = Hash[:success => true, :entity => self.tag_entity(params, true)]
99
+ halt 500, JSON.generate({:success => false,
100
+ :message => "unable to create entity tag"}) if not response[:entity]
101
+ JSON.generate(response)
102
+ end
101
103
 
102
- get '/entity/similiar' do
103
- response = Hash[:success => true, :results => self.get_entity_similiar(params)]
104
- JSON.generate(response)
105
- end
104
+ delete '/entity/tags' do
105
+ response = Hash[:success => true, :entity => self.tag_entity(params, false)]
106
+ halt 500, JSON.generate({:success => false,
107
+ :message => "unable to remove entity tag"}) if not response[:entity]
108
+ JSON.generate(response)
109
+ end
106
110
 
107
- get '/group' do
108
- response = Hash[:success => true,
109
- :results => self.similiar_entities(params)]
110
- JSON.generate(response)
111
- end
111
+ get '/entity/similiar' do
112
+ response = Hash[:success => true, :results => self.get_entity_similiar(params)]
113
+ JSON.generate(response)
114
+ end
112
115
 
113
- post '/group' do
114
- self.group_entities(params)
115
- response = Hash[:success => true,
116
- :result => self.similiar_entities(params)]
117
- JSON.generate(response)
118
- end
116
+ get '/group' do
117
+ response = Hash[:success => true,
118
+ :results => self.similiar_entities(params)]
119
+ JSON.generate(response)
120
+ end
119
121
 
120
- run! if app_file == $0
122
+ post '/group' do
123
+ self.group_entities(params)
124
+ response = Hash[:success => true,
125
+ :result => self.similiar_entities(params)]
126
+ JSON.generate(response)
127
+ end
128
+ end
121
129
  end
@@ -0,0 +1,9 @@
1
+ require 'rugroupy/server'
2
+
3
+ # This default server is used for testing
4
+ class ServerDefault < Groupy::GroupyServer
5
+ register Sinatra::MongoExtension
6
+ set :mongo, 'mongo://localhost:27017/test'
7
+ end
8
+
9
+ ServerDefault.run!
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rugroupy-server
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
4
+ hash: 25
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 0
10
- version: 0.1.0
9
+ - 1
10
+ version: 0.1.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - Ryan Wynn
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-08-17 00:00:00 Z
18
+ date: 2011-08-18 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  requirement: &id001 !ruby/object:Gem::Requirement
@@ -232,6 +232,7 @@ extra_rdoc_files:
232
232
  - README.rdoc
233
233
  files:
234
234
  - lib/rugroupy/server.rb
235
+ - lib/rugroupy/server_default.rb
235
236
  - LICENSE.txt
236
237
  - README.rdoc
237
238
  homepage: http://github.com/rwynn/rugroupy-server