shared_workforce 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
data/README.markdown CHANGED
@@ -91,11 +91,7 @@ Advanced definition options
91
91
 
92
92
  ### Task types
93
93
 
94
- SharedWorkforce currently supports 2 types of task. :tags (multiple select) and :choice (single answer from a list of options). Free-form input is planned in the near future.
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
 
@@ -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 = TaskRequest::Http
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
@@ -1,4 +1,4 @@
1
1
  module SharedWorkforce
2
- VERSION = "0.2.0"
2
+ VERSION = "0.2.1"
3
3
 
4
4
  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
- date: 2012-03-02 00:00:00 +00:00
14
- default_executable:
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
- prerelease: false
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: "0"
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
- requirement: &id002 !ruby/object:Gem::Requirement
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: "0"
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
- requirement: &id003 !ruby/object:Gem::Requirement
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: "0"
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
- requirement: &id004 !ruby/object:Gem::Requirement
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
- requirement: &id005 !ruby/object:Gem::Requirement
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: "0"
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
69
66
  type: :development
70
- version_requirements: *id005
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: "0"
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: "0"
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.6.2
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