shared_workforce 0.2.13 → 0.2.14
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/lib/shared_workforce/configuration.rb +2 -2
- data/lib/shared_workforce/task.rb +2 -0
- data/lib/shared_workforce/version.rb +1 -1
- data/spec/configuration_spec.rb +30 -20
- data/spec/task_request/http_spec.rb +11 -9
- data/spec/task_request/http_with_poller_spec.rb +3 -2
- data/spec/task_spec.rb +6 -4
- data/spec/tasks/approve_photo.rb +1 -0
- metadata +12 -12
@@ -10,7 +10,7 @@ module SharedWorkforce
|
|
10
10
|
attr_accessor :request_class
|
11
11
|
|
12
12
|
def initialize
|
13
|
-
@http_end_point = "
|
13
|
+
@http_end_point = "https://api.sharedworkforce.com"
|
14
14
|
@request_class = default_request_class
|
15
15
|
end
|
16
16
|
|
@@ -35,7 +35,7 @@ module SharedWorkforce
|
|
35
35
|
end
|
36
36
|
|
37
37
|
def valid?
|
38
|
-
|
38
|
+
api_key.present?
|
39
39
|
end
|
40
40
|
|
41
41
|
private
|
@@ -14,6 +14,7 @@ module SharedWorkforce
|
|
14
14
|
:image_url,
|
15
15
|
:image_crop_ratio,
|
16
16
|
:text,
|
17
|
+
:html,
|
17
18
|
:on_success,
|
18
19
|
:on_failure,
|
19
20
|
:on_complete
|
@@ -133,6 +134,7 @@ module SharedWorkforce
|
|
133
134
|
:callback_url => callback_url,
|
134
135
|
:replace => replace,
|
135
136
|
:text => text,
|
137
|
+
:html => html,
|
136
138
|
:callback_params => attributes
|
137
139
|
}.reject {|k,v| v.nil? }
|
138
140
|
end
|
data/spec/configuration_spec.rb
CHANGED
@@ -6,35 +6,31 @@ describe "Configuration" do
|
|
6
6
|
|
7
7
|
describe "#api_key" do
|
8
8
|
it "should use the API key set in ENV['SHAREDWORKFORCE_API_KEY']" do
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
ENV['SHAREDWORKFORCE_API_KEY'] = old_env
|
9
|
+
with_env 'SHAREDWORKFORCE_API_KEY', 'API_KEY_FROM_ENV' do
|
10
|
+
configuration.api_key.should == "API_KEY_FROM_ENV"
|
11
|
+
end
|
13
12
|
end
|
14
13
|
|
15
14
|
it "should be overridable with a custom value" do
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
ENV['SHAREDWORKFORCE_API_KEY'] = old_env
|
15
|
+
with_env 'SHAREDWORKFORCE_API_KEY', 'API_KEY_FROM_ENV' do
|
16
|
+
configuration.api_key = "CUSTOM_API_KEY"
|
17
|
+
configuration.api_key.should == "CUSTOM_API_KEY"
|
18
|
+
end
|
21
19
|
end
|
22
20
|
end
|
23
21
|
|
24
22
|
describe "#callback_host" do
|
25
23
|
it "should use the callback host set in ENV['SHAREDWORKFORCE_CALLBACK_HOST']" do
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
ENV['SHAREDWORKFORCE_CALLBACK_HOST'] = old_env
|
24
|
+
with_env 'SHAREDWORKFORCE_CALLBACK_HOST', "http://env.example.com" do
|
25
|
+
configuration.callback_host.should == "http://env.example.com"
|
26
|
+
end
|
30
27
|
end
|
31
28
|
|
32
29
|
it "should be overridable with a custom value" do
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
ENV['SHAREDWORKFORCE_CALLBACK_HOST'] = old_env
|
30
|
+
with_env 'SHAREDWORKFORCE_CALLBACK_HOST', "env.example.com" do
|
31
|
+
configuration.callback_host = "custom.example.com"
|
32
|
+
configuration.callback_host.should == "custom.example.com"
|
33
|
+
end
|
38
34
|
end
|
39
35
|
end
|
40
36
|
|
@@ -72,9 +68,23 @@ describe "Configuration" do
|
|
72
68
|
|
73
69
|
describe "#valid" do
|
74
70
|
it "should be false if no api key is set" do
|
75
|
-
|
76
|
-
|
71
|
+
with_env 'SHAREDWORKFORCE_API_KEY', nil do
|
72
|
+
configuration.should_not be_valid
|
73
|
+
end
|
77
74
|
end
|
75
|
+
|
76
|
+
it "should be true if the api key is set in ENV" do
|
77
|
+
with_env 'SHAREDWORKFORCE_API_KEY', 'SOMETHING' do
|
78
|
+
configuration.should be_valid
|
79
|
+
end
|
80
|
+
end
|
78
81
|
end
|
82
|
+
|
83
|
+
def with_env(key, value, &block)
|
84
|
+
old_value = ENV[key]
|
85
|
+
ENV[key] = value
|
86
|
+
yield
|
87
|
+
ENV[key] = old_value
|
88
|
+
end
|
79
89
|
|
80
90
|
end
|
@@ -7,9 +7,9 @@ describe "TaskRequest::Http" do
|
|
7
7
|
task = ApprovePhotoTask.new
|
8
8
|
task_request = SharedWorkforce::TaskRequest::Http.new(task, :image_url=>"http://www.google.com/logo.png", :image_crop_ratio=>1.7, :callback_params=>{:resource_id=>'1234'})
|
9
9
|
|
10
|
-
stub_request(:post, "api.sharedworkforce.com/tasks")
|
10
|
+
stub_request(:post, "https://api.sharedworkforce.com/tasks")
|
11
11
|
task_request.create
|
12
|
-
a_request(:post, "
|
12
|
+
a_request(:post, "https://api.sharedworkforce.com/tasks").with(:body=>{'task'=>
|
13
13
|
{
|
14
14
|
'title'=>"Approve Photo",
|
15
15
|
'instruction'=>"Please classify this photo by choosing the appropriate tickboxes.",
|
@@ -20,7 +20,8 @@ describe "TaskRequest::Http" do
|
|
20
20
|
'answer_type'=>'tags',
|
21
21
|
'callback_url'=>"#{SharedWorkforce.configuration.callback_host}/shared_workforce/task_response",
|
22
22
|
'callback_params'=>{'resource_id'=>'1234'},
|
23
|
-
'replace'=>true
|
23
|
+
'replace'=>true,
|
24
|
+
'html'=>'<strong>Custom html</strong>'
|
24
25
|
}, :api_key=>'test-api-key'}).should have_been_made.once
|
25
26
|
|
26
27
|
end
|
@@ -41,9 +42,9 @@ describe "TaskRequest::Http" do
|
|
41
42
|
|
42
43
|
task_request = SharedWorkforce::TaskRequest::Http.new(task.new, {:callback_params=>{:resource_id=>'1234'}, :image_url=>"http://www.example.com/image.jpg"})
|
43
44
|
|
44
|
-
stub_request(:post, "api.sharedworkforce.com/tasks")
|
45
|
+
stub_request(:post, "https://api.sharedworkforce.com/tasks")
|
45
46
|
task_request.create
|
46
|
-
a_request(:post, "
|
47
|
+
a_request(:post, "https://api.sharedworkforce.com/tasks").with(:body=>{'task'=>
|
47
48
|
{
|
48
49
|
'title'=>"Approve Photo",
|
49
50
|
'instruction'=>"Please classify this photo by choosing the appropriate tickboxes.",
|
@@ -53,7 +54,7 @@ describe "TaskRequest::Http" do
|
|
53
54
|
'answer_type'=>'tags',
|
54
55
|
'callback_url'=>"#{SharedWorkforce.configuration.callback_host}/shared_workforce/task_response",
|
55
56
|
'callback_params'=>{'resource_id'=>'1234'},
|
56
|
-
'replace'=>false
|
57
|
+
'replace'=>false
|
57
58
|
}, :api_key=>'test-api-key'}).should have_been_made.once
|
58
59
|
end
|
59
60
|
end
|
@@ -63,9 +64,9 @@ describe "TaskRequest::Http" do
|
|
63
64
|
|
64
65
|
task_request = SharedWorkforce::TaskRequest::Http.new(ApprovePhotoTask.new, :callback_params=>{:resource_id=>'1234'})
|
65
66
|
|
66
|
-
stub_request(:post, "api.sharedworkforce.com/tasks/cancel")
|
67
|
+
stub_request(:post, "https://api.sharedworkforce.com/tasks/cancel")
|
67
68
|
task_request.cancel
|
68
|
-
a_request(:post, "
|
69
|
+
a_request(:post, "https://api.sharedworkforce.com/tasks/cancel").with(:body=>{'task'=>
|
69
70
|
{
|
70
71
|
'title'=>"Approve Photo",
|
71
72
|
'instruction'=>"Please classify this photo by choosing the appropriate tickboxes.",
|
@@ -75,7 +76,8 @@ describe "TaskRequest::Http" do
|
|
75
76
|
'answer_type'=>'tags',
|
76
77
|
'callback_url'=>"#{SharedWorkforce.configuration.callback_host}/shared_workforce/task_response",
|
77
78
|
'callback_params'=>{'resource_id'=>'1234'},
|
78
|
-
'replace'=>true
|
79
|
+
'replace'=>true,
|
80
|
+
'html'=>'<strong>Custom html</strong>'
|
79
81
|
}, :api_key=>'test-api-key'}).should have_been_made.once
|
80
82
|
|
81
83
|
end
|
@@ -10,11 +10,11 @@ describe "TaskRequest::HttpWithPoller" do
|
|
10
10
|
:callback_params=>{:resource_id=>'1234'}
|
11
11
|
)
|
12
12
|
|
13
|
-
stub_request(:post, "api.sharedworkforce.com/tasks").to_return(:body=>{:id=>123}.to_json)
|
13
|
+
stub_request(:post, "https://api.sharedworkforce.com/tasks").to_return(:body=>{:id=>123}.to_json)
|
14
14
|
|
15
15
|
task_request.create
|
16
16
|
|
17
|
-
a_request(:post, "
|
17
|
+
a_request(:post, "https://api.sharedworkforce.com/tasks").with(:body=>{'task'=>
|
18
18
|
{
|
19
19
|
'title'=>"Approve Photo",
|
20
20
|
'instruction'=>"Please classify this photo by choosing the appropriate tickboxes.",
|
@@ -27,6 +27,7 @@ describe "TaskRequest::HttpWithPoller" do
|
|
27
27
|
'callback_params'=>{'resource_id'=>'1234'},
|
28
28
|
'replace'=>true,
|
29
29
|
'callback_enabled'=>false,
|
30
|
+
'html'=>'<strong>Custom html</strong>'
|
30
31
|
}, :api_key=>'test-api-key'}).should have_been_made.once
|
31
32
|
end
|
32
33
|
end
|
data/spec/task_spec.rb
CHANGED
@@ -18,6 +18,7 @@ describe "Task" do
|
|
18
18
|
answer_type :crop
|
19
19
|
image_crop_ratio 1.7
|
20
20
|
guidelines "* be careful"
|
21
|
+
html "<strong>Custom html</strong>"
|
21
22
|
|
22
23
|
answer_options ['Obscenity', 'Nudity', 'Blurry', 'Upside down or sideways']
|
23
24
|
|
@@ -41,6 +42,7 @@ describe "Task" do
|
|
41
42
|
task.image_crop_ratio.should == 1.7
|
42
43
|
task.answer_options.should == ['Obscenity', 'Nudity', 'Blurry', 'Upside down or sideways']
|
43
44
|
task.guidelines.should == "* be careful"
|
45
|
+
task.html.should == "<strong>Custom html</strong>"
|
44
46
|
end
|
45
47
|
|
46
48
|
it "should allow certain default attributes to be overwritten" do
|
@@ -240,9 +242,9 @@ describe "Task" do
|
|
240
242
|
it "should make a new task http request" do
|
241
243
|
task = Class.new { include SharedWorkforce::Task }
|
242
244
|
|
243
|
-
stub_request(:post, "
|
245
|
+
stub_request(:post, "https://api.sharedworkforce.com/tasks")
|
244
246
|
task.new.request(:request_id=>'123')
|
245
|
-
a_request(:post, "
|
247
|
+
a_request(:post, "https://api.sharedworkforce.com/tasks").should have_been_made.once
|
246
248
|
end
|
247
249
|
end
|
248
250
|
|
@@ -250,9 +252,9 @@ describe "Task" do
|
|
250
252
|
it "should send a cancel task http request" do
|
251
253
|
task_class = Class.new { include SharedWorkforce::Task }
|
252
254
|
|
253
|
-
stub_request(:post, "
|
255
|
+
stub_request(:post, "https://api.sharedworkforce.com/tasks/cancel")
|
254
256
|
task_class.cancel(@resource_class.new)
|
255
|
-
a_request(:post, "
|
257
|
+
a_request(:post, "https://api.sharedworkforce.com/tasks/cancel").should have_been_made.once
|
256
258
|
end
|
257
259
|
|
258
260
|
it "should not raise a ConfigurationError if a callback host is not set" do
|
data/spec/tasks/approve_photo.rb
CHANGED
@@ -9,6 +9,7 @@ class ApprovePhotoTask
|
|
9
9
|
answer_options ['Obscenity', 'Nudity', 'Blurry', 'Upside down or sideways', 'Contains more than one person in the foreground', 'Has people in the background', 'Contains children']
|
10
10
|
answer_type :tags
|
11
11
|
image_url "http://www.google.com/logo.png"
|
12
|
+
html '<strong>Custom html</strong>'
|
12
13
|
|
13
14
|
replace true
|
14
15
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: shared_workforce
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.14
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-09-20 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rest-client
|
16
|
-
requirement: &
|
16
|
+
requirement: &70318914187300 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70318914187300
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: json
|
27
|
-
requirement: &
|
27
|
+
requirement: &70318914186880 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70318914186880
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: activesupport
|
38
|
-
requirement: &
|
38
|
+
requirement: &70318914186460 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70318914186460
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rspec
|
49
|
-
requirement: &
|
49
|
+
requirement: &70318914185960 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: 1.2.9
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70318914185960
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: webmock
|
60
|
-
requirement: &
|
60
|
+
requirement: &70318914185540 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,7 +65,7 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70318914185540
|
69
69
|
description: Shared Workforce is a service and simple API for human intelligence tasks
|
70
70
|
email:
|
71
71
|
- sam@samoliver.com
|