rugroupy-server 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
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