rugroupy-server 0.1.2 → 0.2.0

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.
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
-