rugroupy-server 0.1.2 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: fa99f723522c4a7a822cbb17c5f64aa04c1acb36
4
+ data.tar.gz: 7e47af1c4551c09666d3a5f2716be066976c34ba
5
+ SHA512:
6
+ metadata.gz: 0f946b7e090ab4b631881a9432d323244e5af34718964dac1aaaf34f12d17a646617996e5ee466d655788be651ea5e2dbc1043bd3c8d6e22b550efdbae6828ec
7
+ data.tar.gz: a54b1a1ced90110e33db6f37ee78f75aeef86ae221dd7c4d6e9928120b2fc794826b145ad14b6e334ba264f27a29a361fb0cb3d50277b507a1c9b00a0dc1d605
data/README.rdoc CHANGED
@@ -37,6 +37,15 @@ See http://github.com/rwynn/rugroupy-server/tree/master/test for example input/o
37
37
 
38
38
  * sudo gem install rugroupy-server
39
39
 
40
+ == Install from the GitHub source
41
+
42
+ The source code is available at http://github.com/rwynn/rugroupy-server.
43
+ You can either clone the git repository or download a tarball or zip file.
44
+ Once you have the source, you can use it from wherever you downloaded it or
45
+ you can install it as a gem from the source by typing
46
+
47
+ * sudo rake install
48
+
40
49
  == Contributing to rugroupy-server
41
50
 
42
51
  * Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
@@ -0,0 +1,39 @@
1
+ require 'sinatra/base'
2
+ require 'mongo'
3
+
4
+ module Sinatra
5
+ module MongoHelper
6
+ def mongo
7
+ settings.mongo
8
+ end
9
+ end
10
+
11
+ module MongoExtension
12
+ def mongo=(url)
13
+ @mongo = nil
14
+ set :mongo_url, url
15
+ mongo
16
+ end
17
+
18
+ def mongo
19
+ synchronize do
20
+ @mongo ||= begin
21
+ url = URI(mongo_url)
22
+ client = Mongo::Client.new(mongo_url)
23
+ mongo = Mongo::Database.new(client, url.path[1..-1], mongo_settings)
24
+ mongo
25
+ end
26
+ end
27
+ end
28
+
29
+ protected
30
+
31
+ def self.registered(app)
32
+ app.set :mongo_url, ENV['MONGO_URL'] || 'mongodb://127.0.0.1:27017/default'
33
+ app.set :mongo_settings, {}
34
+ app.helpers MongoHelper
35
+ end
36
+ end
37
+
38
+ register MongoExtension
39
+ end
@@ -1,13 +1,13 @@
1
1
  require 'rubygems'
2
2
  require 'sinatra/base'
3
- require 'sinatra/mongo'
4
3
  require 'rugroupy'
4
+ require 'rugroupy/mongo'
5
5
  require 'json'
6
6
 
7
7
  # Run the server like this by extending GroupyServer and calling run!
8
8
  # require 'rugroupy/server'
9
- # class MyApp < Groupy::GroupyServer
10
- # register Sinatra::MongoExtension
9
+ # class MyApp < Groupy::GroupyServer
10
+ # register Groupy::MongoExtension
11
11
  # set :mongo, 'mongo://localhost:27017/test'
12
12
  # optionally set more things (port, etc.) according to http://www.sinatrarb.com/configuration.html
13
13
  # end
@@ -15,115 +15,121 @@ require 'json'
15
15
 
16
16
  module Groupy
17
17
  module GroupyServerSupport
18
-
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)
18
+ def get_entity(params, create = false)
19
+ e_json = get_entity_json(params)
20
+ e = Groupy::Entity.new(mongo, e_json['name'], e_json['id'], create)
22
21
  e.get
23
22
  end
24
-
23
+
25
24
  def get_entity_json(params)
26
25
  JSON.parse(params[:entity])
27
26
  end
28
-
27
+
29
28
  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"])
29
+ e_json = get_entity_json(params)
30
+ e = Groupy::Entity.new(mongo, e_json['name'], e_json['id'], create = false)
31
+ e.similiar(e_json['tag'], e_json['skip'], e_json['limit'], e_json['reverse'])
33
32
  end
34
-
33
+
35
34
  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)
35
+ e_json = get_entity_json(params)
36
+ e = Groupy::Entity.new(mongo, e_json['name'], e_json['id'], create = create)
38
37
  e.delete
39
38
  end
40
-
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|
39
+
40
+ def tag_entity(params, create = true)
41
+ e_json = get_entity_json(params)
42
+ e = Groupy::Entity.new(mongo, e_json['name'], e_json['id'], create = create)
43
+ e_json['tags'].each_pair do |name, value|
45
44
  create ? e.tag(name, value) : e.untag(name, value)
46
45
  end
47
46
  e.get
48
47
  end
49
-
48
+
50
49
  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"]}
50
+ e_json = get_entity_json(params)
51
+ g = Groupy::EntityGrouper.new(mongo, e_json['name'])
52
+ options = { includeFunction: e_json['include_function'],
53
+ scoreFunction: e_json['score_function'],
54
+ dynamicTagFunction: e_json['dynamic_tag_function'] }
56
55
  g.group(options)
57
56
  end
58
57
 
59
58
  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"])
59
+ e_json = get_entity_json(params)
60
+ g = Groupy::EntityGrouper.new(mongo, e_json['name'])
61
+ g.similiar(e_json['tag'], e_json['skip'], e_json['limit'], e_json['reverse'])
63
62
  end
64
-
65
63
  end
66
64
 
67
65
  class GroupyServer < Sinatra::Base
68
66
  include GroupyServerSupport
69
- #register Sinatra::MongoExtension
70
- #set :mongo, 'mongo://localhost:27017/test'
71
-
72
- before do
73
- headers "Content-Type" => "application/json; charset=UTF-8"
67
+ # register Groupy::MongoExtension
68
+ # set :mongo, 'mongo://localhost:27017/test'
69
+
70
+ before do
71
+ headers 'Content-Type' => 'application/json; charset=UTF-8'
74
72
  end
75
-
73
+
76
74
  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]
75
+ response = Hash[success: true, entity: get_entity(params)]
76
+ unless response[:entity]
77
+ halt 404, JSON.generate(success: false,
78
+ message: 'not found')
79
+ end
80
80
  JSON.generate(response)
81
81
  end
82
-
82
+
83
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]
84
+ response = Hash[success: true, entity: get_entity(params, true)]
85
+ unless response[:entity]
86
+ halt 500, JSON.generate(success: false,
87
+ message: 'unable to create entity')
88
+ end
87
89
  status 201
88
90
  JSON.generate(response)
89
91
  end
90
-
92
+
91
93
  delete '/entity' do
92
- response = Hash[:success => true]
93
- self.delete_entity(params)
94
+ response = Hash[success: true]
95
+ delete_entity(params)
94
96
  JSON.generate(response)
95
97
  end
96
-
98
+
97
99
  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]
100
+ response = Hash[success: true, entity: tag_entity(params, true)]
101
+ unless response[:entity]
102
+ halt 500, JSON.generate(success: false,
103
+ message: 'unable to create entity tag')
104
+ end
101
105
  JSON.generate(response)
102
106
  end
103
-
107
+
104
108
  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]
109
+ response = Hash[success: true, entity: tag_entity(params, false)]
110
+ unless response[:entity]
111
+ halt 500, JSON.generate(success: false,
112
+ message: 'unable to remove entity tag')
113
+ end
108
114
  JSON.generate(response)
109
115
  end
110
-
116
+
111
117
  get '/entity/similiar' do
112
- response = Hash[:success => true, :results => self.get_entity_similiar(params)]
118
+ response = Hash[success: true, results: get_entity_similiar(params)]
113
119
  JSON.generate(response)
114
120
  end
115
-
121
+
116
122
  get '/group' do
117
- response = Hash[:success => true,
118
- :results => self.similiar_entities(params)]
123
+ response = Hash[success: true,
124
+ results: similiar_entities(params)]
119
125
  JSON.generate(response)
120
126
  end
121
-
127
+
122
128
  post '/group' do
123
- self.group_entities(params)
124
- response = Hash[:success => true,
125
- :result => self.similiar_entities(params)]
129
+ group_entities(params)
130
+ response = Hash[success: true,
131
+ result: similiar_entities(params)]
126
132
  JSON.generate(response)
127
133
  end
128
134
  end
129
- end
135
+ end
@@ -3,7 +3,7 @@ require 'rugroupy/server'
3
3
  # This default server is used for testing
4
4
  class ServerDefault < Groupy::GroupyServer
5
5
  register Sinatra::MongoExtension
6
- set :mongo, 'mongo://localhost:27017/test'
6
+ set :mongo, 'mongodb://localhost:27017/test'
7
7
  end
8
8
 
9
- ServerDefault.run!
9
+ ServerDefault.run!
metadata CHANGED
@@ -1,272 +1,177 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: rugroupy-server
3
- version: !ruby/object:Gem::Version
4
- hash: 31
5
- prerelease:
6
- segments:
7
- - 0
8
- - 1
9
- - 2
10
- version: 0.1.2
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.0
11
5
  platform: ruby
12
- authors:
6
+ authors:
13
7
  - Ryan Wynn
14
8
  autorequire:
15
9
  bindir: bin
16
10
  cert_chain: []
17
-
18
- date: 2011-08-22 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
21
- requirement: &id001 !ruby/object:Gem::Requirement
22
- none: false
23
- requirements:
11
+ date: 2018-03-08 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bson
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
24
17
  - - ">="
25
- - !ruby/object:Gem::Version
26
- hash: 19
27
- segments:
28
- - 1
29
- - 2
30
- - 6
31
- version: 1.2.6
32
- version_requirements: *id001
33
- name: sinatra
34
- prerelease: false
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
35
20
  type: :runtime
36
- - !ruby/object:Gem::Dependency
37
- requirement: &id002 !ruby/object:Gem::Requirement
38
- none: false
39
- requirements:
40
- - - ">="
41
- - !ruby/object:Gem::Version
42
- hash: 27
43
- segments:
44
- - 0
45
- - 1
46
- - 0
47
- version: 0.1.0
48
- version_requirements: *id002
49
- name: sinatra-mongo
50
21
  prerelease: false
51
- type: :runtime
52
- - !ruby/object:Gem::Dependency
53
- requirement: &id003 !ruby/object:Gem::Requirement
54
- none: false
55
- requirements:
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
56
24
  - - ">="
57
- - !ruby/object:Gem::Version
58
- hash: 5
59
- segments:
60
- - 1
61
- - 5
62
- - 3
63
- version: 1.5.3
64
- version_requirements: *id003
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
65
28
  name: json
66
- prerelease: false
67
- type: :runtime
68
- - !ruby/object:Gem::Dependency
69
- requirement: &id004 !ruby/object:Gem::Requirement
70
- none: false
71
- requirements:
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
72
31
  - - ">="
73
- - !ruby/object:Gem::Version
74
- hash: 27
75
- segments:
76
- - 0
77
- - 1
78
- - 0
79
- version: 0.1.0
80
- version_requirements: *id004
81
- name: rugroupy
82
- prerelease: false
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
83
34
  type: :runtime
84
- - !ruby/object:Gem::Dependency
85
- requirement: &id005 !ruby/object:Gem::Requirement
86
- none: false
87
- requirements:
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
88
38
  - - ">="
89
- - !ruby/object:Gem::Version
90
- hash: 25
91
- segments:
92
- - 1
93
- - 3
94
- - 1
95
- version: 1.3.1
96
- version_requirements: *id005
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
97
42
  name: mongo
98
- prerelease: false
99
- type: :runtime
100
- - !ruby/object:Gem::Dependency
101
- requirement: &id006 !ruby/object:Gem::Requirement
102
- none: false
103
- requirements:
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
104
45
  - - ">="
105
- - !ruby/object:Gem::Version
106
- hash: 25
107
- segments:
108
- - 1
109
- - 3
110
- - 1
111
- version: 1.3.1
112
- version_requirements: *id006
113
- name: bson
114
- prerelease: false
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
115
48
  type: :runtime
116
- - !ruby/object:Gem::Dependency
117
- requirement: &id007 !ruby/object:Gem::Requirement
118
- none: false
119
- requirements:
120
- - - ">="
121
- - !ruby/object:Gem::Version
122
- hash: 25
123
- segments:
124
- - 1
125
- - 3
126
- - 1
127
- version: 1.3.1
128
- version_requirements: *id007
129
- name: bson_ext
130
49
  prerelease: false
131
- type: :runtime
132
- - !ruby/object:Gem::Dependency
133
- requirement: &id008 !ruby/object:Gem::Requirement
134
- none: false
135
- requirements:
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
136
52
  - - ">="
137
- - !ruby/object:Gem::Version
138
- hash: 25
139
- segments:
140
- - 1
141
- - 2
142
- - 3
143
- version: 1.2.3
144
- version_requirements: *id008
145
- name: SystemTimer
146
- prerelease: false
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rugroupy
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
147
62
  type: :runtime
148
- - !ruby/object:Gem::Dependency
149
- requirement: &id009 !ruby/object:Gem::Requirement
150
- none: false
151
- requirements:
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
152
66
  - - ">="
153
- - !ruby/object:Gem::Version
154
- hash: 3
155
- segments:
156
- - 0
157
- version: "0"
158
- version_requirements: *id009
159
- name: shoulda
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: sinatra
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
160
77
  prerelease: false
161
- type: :development
162
- - !ruby/object:Gem::Dependency
163
- requirement: &id010 !ruby/object:Gem::Requirement
164
- none: false
165
- requirements:
166
- - - ~>
167
- - !ruby/object:Gem::Version
168
- hash: 23
169
- segments:
170
- - 1
171
- - 0
172
- - 0
173
- version: 1.0.0
174
- version_requirements: *id010
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
175
84
  name: bundler
176
- prerelease: false
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
177
90
  type: :development
178
- - !ruby/object:Gem::Dependency
179
- requirement: &id011 !ruby/object:Gem::Requirement
180
- none: false
181
- requirements:
182
- - - ~>
183
- - !ruby/object:Gem::Version
184
- hash: 7
185
- segments:
186
- - 1
187
- - 6
188
- - 4
189
- version: 1.6.4
190
- version_requirements: *id011
191
- name: jeweler
192
91
  prerelease: false
193
- type: :development
194
- - !ruby/object:Gem::Dependency
195
- requirement: &id012 !ruby/object:Gem::Requirement
196
- none: false
197
- requirements:
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
198
94
  - - ">="
199
- - !ruby/object:Gem::Version
200
- hash: 3
201
- segments:
202
- - 0
203
- version: "0"
204
- version_requirements: *id012
205
- name: rcov
206
- prerelease: false
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: httparty
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
207
104
  type: :development
208
- - !ruby/object:Gem::Dependency
209
- requirement: &id013 !ruby/object:Gem::Requirement
210
- none: false
211
- requirements:
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
212
108
  - - ">="
213
- - !ruby/object:Gem::Version
214
- hash: 19
215
- segments:
216
- - 0
217
- - 7
218
- - 8
219
- version: 0.7.8
220
- version_requirements: *id013
221
- name: httparty
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: jeweler
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
222
119
  prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: shoulda
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
223
132
  type: :development
224
- description: a sinatra based server which enables a http interface to rugroupy
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ description: a library which uses the map-reduce capabilities of mongodb to group
140
+ entities based on tags.
225
141
  email: ryan.m.wynn@gmail.com
226
142
  executables: []
227
-
228
143
  extensions: []
229
-
230
- extra_rdoc_files:
144
+ extra_rdoc_files:
231
145
  - LICENSE.txt
232
146
  - README.rdoc
233
- files:
234
- - lib/rugroupy/server.rb
235
- - lib/rugroupy/server_default.rb
147
+ files:
236
148
  - LICENSE.txt
237
149
  - README.rdoc
150
+ - lib/rugroupy/mongo.rb
151
+ - lib/rugroupy/server.rb
152
+ - lib/rugroupy/server_default.rb
238
153
  homepage: http://github.com/rwynn/rugroupy-server
239
- licenses:
154
+ licenses:
240
155
  - MIT
156
+ metadata: {}
241
157
  post_install_message:
242
158
  rdoc_options: []
243
-
244
- require_paths:
159
+ require_paths:
245
160
  - lib
246
- required_ruby_version: !ruby/object:Gem::Requirement
247
- none: false
248
- requirements:
161
+ required_ruby_version: !ruby/object:Gem::Requirement
162
+ requirements:
249
163
  - - ">="
250
- - !ruby/object:Gem::Version
251
- hash: 3
252
- segments:
253
- - 0
254
- version: "0"
255
- required_rubygems_version: !ruby/object:Gem::Requirement
256
- none: false
257
- requirements:
164
+ - !ruby/object:Gem::Version
165
+ version: '0'
166
+ required_rubygems_version: !ruby/object:Gem::Requirement
167
+ requirements:
258
168
  - - ">="
259
- - !ruby/object:Gem::Version
260
- hash: 3
261
- segments:
262
- - 0
263
- version: "0"
169
+ - !ruby/object:Gem::Version
170
+ version: '0'
264
171
  requirements: []
265
-
266
172
  rubyforge_project:
267
- rubygems_version: 1.8.6
173
+ rubygems_version: 2.2.2
268
174
  signing_key:
269
- specification_version: 3
270
- summary: an http interface to rugroupy
175
+ specification_version: 4
176
+ summary: find things that are similiar to things
271
177
  test_files: []
272
-