shared_workforce 0.2.0 → 0.2.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.markdown
CHANGED
@@ -91,11 +91,7 @@ Advanced definition options
|
|
91
91
|
|
92
92
|
### Task types
|
93
93
|
|
94
|
-
SharedWorkforce currently supports
|
95
|
-
|
96
|
-
SharedWorkforce::Task.define |t|
|
97
|
-
t.answer_type = #:tags or :choice
|
98
|
-
end
|
94
|
+
SharedWorkforce currently supports 3 types of task. `:tags` (multiple select), `:choice` (single answer from a list of options), or `:edit` (edit text).
|
99
95
|
|
100
96
|
###Multiple responses
|
101
97
|
|
data/lib/shared_workforce.rb
CHANGED
@@ -6,9 +6,11 @@ require 'shared_workforce/task'
|
|
6
6
|
require 'shared_workforce/task_request/task_request'
|
7
7
|
require 'shared_workforce/task_request/black_hole'
|
8
8
|
require 'shared_workforce/task_request/http'
|
9
|
+
require 'shared_workforce/task_request/http_with_poller'
|
9
10
|
require 'shared_workforce/task_result'
|
10
11
|
require 'shared_workforce/task_response'
|
11
12
|
require 'shared_workforce/end_point'
|
13
|
+
require 'shared_workforce/response_poller'
|
12
14
|
require 'shared_workforce/frameworks/rails' if defined?(Rails)
|
13
15
|
require 'active_support/inflector'
|
14
16
|
require 'active_support/core_ext/hash/indifferent_access'
|
@@ -9,7 +9,7 @@ module SharedWorkforce
|
|
9
9
|
|
10
10
|
def initialize
|
11
11
|
@http_end_point = "http://api.sharedworkforce.com"
|
12
|
-
@request_class =
|
12
|
+
@request_class = default_request_class
|
13
13
|
end
|
14
14
|
|
15
15
|
def callback_url
|
@@ -18,7 +18,23 @@ module SharedWorkforce
|
|
18
18
|
|
19
19
|
def callback_path
|
20
20
|
@callback_path ||= "hci_task_result"
|
21
|
-
end
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
def default_request_class
|
26
|
+
if defined?(Rails)
|
27
|
+
if Rails.env.development?
|
28
|
+
TaskRequest::HttpWithPoller
|
29
|
+
elsif Rails.env.test?
|
30
|
+
TaskRequest::BlackHole
|
31
|
+
else
|
32
|
+
TaskRequest::Http
|
33
|
+
end
|
34
|
+
else
|
35
|
+
TaskRequest::Http
|
36
|
+
end
|
37
|
+
end
|
22
38
|
|
23
39
|
end
|
24
40
|
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module SharedWorkforce
|
2
|
+
class ResponsePoller
|
3
|
+
def self.start(task_id)
|
4
|
+
Thread.new do
|
5
|
+
puts "SharedWorkforce: Checking every 20 seconds for responses for task #{task_id}."
|
6
|
+
while true
|
7
|
+
sleep 20
|
8
|
+
puts "SharedWorkforce: Checking for task responses for task #{task_id} (development mode)"
|
9
|
+
task = JSON.parse(RestClient.get("#{SharedWorkforce.configuration.http_end_point}/tasks/#{task_id}", {
|
10
|
+
'X-API-Key'=>SharedWorkforce.configuration.api_key,
|
11
|
+
:content_type => :json,
|
12
|
+
:accept => :json
|
13
|
+
}))
|
14
|
+
if task['state'] == "completed"
|
15
|
+
puts "SharedWorkforce: Task complete. Getting responses."
|
16
|
+
responses = JSON.parse(RestClient.get("#{SharedWorkforce.configuration.http_end_point}/tasks/#{task_id}/responses", {
|
17
|
+
'X-API-Key'=>SharedWorkforce.configuration.api_key,
|
18
|
+
:content_type => :json,
|
19
|
+
:accept => :json
|
20
|
+
}))
|
21
|
+
puts "SharedWorkforce: Processing responses."
|
22
|
+
SharedWorkforce::TaskResult.new(responses).process!
|
23
|
+
break;
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'rest_client'
|
2
|
+
module SharedWorkforce
|
3
|
+
class TaskRequest::HttpWithPoller < TaskRequest
|
4
|
+
|
5
|
+
def create
|
6
|
+
task = JSON.parse(RestClient.post("#{http_end_point}/tasks", *request_params))
|
7
|
+
ResponsePoller.start(task['id'])
|
8
|
+
end
|
9
|
+
|
10
|
+
def cancel
|
11
|
+
RestClient.post("#{http_end_point}/tasks/cancel", *request_params)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
metadata
CHANGED
@@ -1,83 +1,78 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: shared_workforce
|
3
|
-
version: !ruby/object:Gem::Version
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.2.1
|
4
5
|
prerelease:
|
5
|
-
version: 0.2.0
|
6
6
|
platform: ruby
|
7
|
-
authors:
|
7
|
+
authors:
|
8
8
|
- Sam Oliver
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
dependencies:
|
16
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2012-03-27 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
17
15
|
name: rest-client
|
18
|
-
|
19
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: &70198918375060 !ruby/object:Gem::Requirement
|
20
17
|
none: false
|
21
|
-
requirements:
|
22
|
-
- -
|
23
|
-
- !ruby/object:Gem::Version
|
24
|
-
version:
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
25
22
|
type: :runtime
|
26
|
-
version_requirements: *id001
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: json
|
29
23
|
prerelease: false
|
30
|
-
|
24
|
+
version_requirements: *70198918375060
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: json
|
27
|
+
requirement: &70198918374600 !ruby/object:Gem::Requirement
|
31
28
|
none: false
|
32
|
-
requirements:
|
33
|
-
- -
|
34
|
-
- !ruby/object:Gem::Version
|
35
|
-
version:
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
36
33
|
type: :runtime
|
37
|
-
version_requirements: *id002
|
38
|
-
- !ruby/object:Gem::Dependency
|
39
|
-
name: activesupport
|
40
34
|
prerelease: false
|
41
|
-
|
35
|
+
version_requirements: *70198918374600
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: activesupport
|
38
|
+
requirement: &70198918374120 !ruby/object:Gem::Requirement
|
42
39
|
none: false
|
43
|
-
requirements:
|
44
|
-
- -
|
45
|
-
- !ruby/object:Gem::Version
|
46
|
-
version:
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
47
44
|
type: :runtime
|
48
|
-
version_requirements: *id003
|
49
|
-
- !ruby/object:Gem::Dependency
|
50
|
-
name: rspec
|
51
45
|
prerelease: false
|
52
|
-
|
46
|
+
version_requirements: *70198918374120
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: rspec
|
49
|
+
requirement: &70198918373500 !ruby/object:Gem::Requirement
|
53
50
|
none: false
|
54
|
-
requirements:
|
55
|
-
- -
|
56
|
-
- !ruby/object:Gem::Version
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
57
54
|
version: 1.2.9
|
58
55
|
type: :development
|
59
|
-
version_requirements: *id004
|
60
|
-
- !ruby/object:Gem::Dependency
|
61
|
-
name: webmock
|
62
56
|
prerelease: false
|
63
|
-
|
57
|
+
version_requirements: *70198918373500
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: webmock
|
60
|
+
requirement: &70198918366780 !ruby/object:Gem::Requirement
|
64
61
|
none: false
|
65
|
-
requirements:
|
66
|
-
- -
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version:
|
62
|
+
requirements:
|
63
|
+
- - ! '>='
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '0'
|
69
66
|
type: :development
|
70
|
-
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: *70198918366780
|
71
69
|
description: Shared Workforce is a service and simple API for human intelligence tasks
|
72
|
-
email:
|
70
|
+
email:
|
73
71
|
- sam@samoliver.com
|
74
72
|
executables: []
|
75
|
-
|
76
73
|
extensions: []
|
77
|
-
|
78
74
|
extra_rdoc_files: []
|
79
|
-
|
80
|
-
files:
|
75
|
+
files:
|
81
76
|
- .gitignore
|
82
77
|
- .travis.yml
|
83
78
|
- Gemfile
|
@@ -89,9 +84,11 @@ files:
|
|
89
84
|
- lib/shared_workforce/end_point.rb
|
90
85
|
- lib/shared_workforce/exceptions.rb
|
91
86
|
- lib/shared_workforce/frameworks/rails.rb
|
87
|
+
- lib/shared_workforce/response_poller.rb
|
92
88
|
- lib/shared_workforce/task.rb
|
93
89
|
- lib/shared_workforce/task_request/black_hole.rb
|
94
90
|
- lib/shared_workforce/task_request/http.rb
|
91
|
+
- lib/shared_workforce/task_request/http_with_poller.rb
|
95
92
|
- lib/shared_workforce/task_request/task_request.rb
|
96
93
|
- lib/shared_workforce/task_response.rb
|
97
94
|
- lib/shared_workforce/task_result.rb
|
@@ -107,35 +104,31 @@ files:
|
|
107
104
|
- spec/task_result_spec.rb
|
108
105
|
- spec/task_spec.rb
|
109
106
|
- spec/tasks/approve_photo.rb
|
110
|
-
has_rdoc: true
|
111
107
|
homepage: http://github.com/sharedworkforce/sharedworkforce
|
112
108
|
licenses: []
|
113
|
-
|
114
109
|
post_install_message:
|
115
110
|
rdoc_options: []
|
116
|
-
|
117
|
-
require_paths:
|
111
|
+
require_paths:
|
118
112
|
- lib
|
119
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
113
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
120
114
|
none: false
|
121
|
-
requirements:
|
122
|
-
- -
|
123
|
-
- !ruby/object:Gem::Version
|
124
|
-
version:
|
125
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
115
|
+
requirements:
|
116
|
+
- - ! '>='
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
version: '0'
|
119
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
126
120
|
none: false
|
127
|
-
requirements:
|
128
|
-
- -
|
129
|
-
- !ruby/object:Gem::Version
|
130
|
-
version:
|
121
|
+
requirements:
|
122
|
+
- - ! '>='
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
131
125
|
requirements: []
|
132
|
-
|
133
126
|
rubyforge_project: shared_workforce
|
134
|
-
rubygems_version: 1.
|
127
|
+
rubygems_version: 1.8.17
|
135
128
|
signing_key:
|
136
129
|
specification_version: 3
|
137
130
|
summary: Shared Workforce Client
|
138
|
-
test_files:
|
131
|
+
test_files:
|
139
132
|
- spec/client_spec.rb
|
140
133
|
- spec/spec_helper.rb
|
141
134
|
- spec/support/configuration_helper.rb
|