rturk 2.8.0 → 2.9.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.
- data/CHANGELOG.markdown +9 -0
- data/lib/rturk/adapters/assignment.rb +4 -0
- data/lib/rturk/builders/qualification_builder.rb +5 -5
- data/lib/rturk/operations/approve_rejected_assignment.rb +16 -0
- data/lib/rturk/parsers/responses/get_hit_response.rb +7 -3
- data/lib/rturk/version.rb +1 -1
- data/spec/adapters/assignment_spec.rb +11 -2
- data/spec/builders/qualification_spec.rb +12 -6
- data/spec/fake_responses/approve_rejected_assignment.xml +6 -0
- data/spec/operations/approve_rejected_assignment_spec.rb +28 -0
- data/spec/operations/get_hit_spec.rb +3 -0
- metadata +4 -1
data/CHANGELOG.markdown
CHANGED
@@ -1,3 +1,12 @@
|
|
1
|
+
2.8.0
|
2
|
+
----
|
3
|
+
* Adding support for operation SearchQualificationTypes [hampei]
|
4
|
+
* Bumped to API version 2012-03-25
|
5
|
+
2.7.0
|
6
|
+
----
|
7
|
+
* Adding support for operation SearchQualificationTypes [denniskuczynski]
|
8
|
+
* Added ServiceUnavailable error type for detecting/handling HTTP
|
9
|
+
Service Unavailable errors [denniskuczynski]
|
1
10
|
2.6.0
|
2
11
|
-----
|
3
12
|
* Adding IntegerValue attribute to AssignQualification from Ross
|
@@ -16,6 +16,10 @@ module RTurk
|
|
16
16
|
RTurk::ApproveAssignment(:assignment_id => self.id, :feedback => feedback)
|
17
17
|
end
|
18
18
|
|
19
|
+
def approve_rejected!(feedback = nil)
|
20
|
+
RTurk::ApproveRejectedAssignment(:assignment_id => self.id, :feedback => feedback)
|
21
|
+
end
|
22
|
+
|
19
23
|
def reject!(reason)
|
20
24
|
RTurk::RejectAssignment(:assignment_id => self.id, :feedback => reason)
|
21
25
|
end
|
@@ -10,7 +10,7 @@ module RTurk
|
|
10
10
|
:lte => 'LessThanOrEqualTo', :eql => 'EqualTo', :not => 'NotEqualTo', :exists => 'Exists'}
|
11
11
|
|
12
12
|
TYPES = {:approval_rate => '000000000000000000L0', :submission_rate => '00000000000000000000',
|
13
|
-
:abandoned_rate => '
|
13
|
+
:abandoned_rate => '00000000000000000070', :return_rate => '000000000000000000E0',
|
14
14
|
:rejection_rate => '000000000000000000S0', :hits_approved => '00000000000000000040',
|
15
15
|
:adult => '00000000000000000060', :country => '00000000000000000071'}
|
16
16
|
|
@@ -20,9 +20,9 @@ module RTurk
|
|
20
20
|
# needs at the minimum
|
21
21
|
# type_id, :comparator => :value
|
22
22
|
# or
|
23
|
-
# type_id, true
|
23
|
+
# type_id, :exists => true
|
24
24
|
# or
|
25
|
-
# type_id,
|
25
|
+
# type_id, true
|
26
26
|
#
|
27
27
|
def initialize(type, opts)
|
28
28
|
# If the value is a string, we can assume it's the country since,
|
@@ -39,7 +39,7 @@ module RTurk
|
|
39
39
|
elsif opts == true || opts == false
|
40
40
|
qualifier[:IntegerValue] = opts == true ? 1 : 0
|
41
41
|
qualifier[:Comparator] = COMPARATORS[:eql]
|
42
|
-
|
42
|
+
end
|
43
43
|
qualifier
|
44
44
|
end
|
45
45
|
|
@@ -68,7 +68,7 @@ module RTurk
|
|
68
68
|
if v.to_s.match(/[A-Z]./)
|
69
69
|
qualifier[:Country] = v
|
70
70
|
else
|
71
|
-
qualifier[:IntegerValue] = v
|
71
|
+
qualifier[:IntegerValue] = v unless k == :exists
|
72
72
|
end
|
73
73
|
end
|
74
74
|
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module RTurk
|
2
|
+
class ApproveRejectedAssignment < Operation
|
3
|
+
|
4
|
+
attr_accessor :assignment_id, :feedback
|
5
|
+
require_params :assignment_id
|
6
|
+
|
7
|
+
def to_params
|
8
|
+
{'AssignmentId' => self.assignment_id,
|
9
|
+
'RequesterFeedback' => self.feedback}
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.ApproveRejectedAssignment(*args)
|
14
|
+
RTurk::ApproveRejectedAssignment.create(*args)
|
15
|
+
end
|
16
|
+
end
|
@@ -48,11 +48,12 @@ module RTurk
|
|
48
48
|
:expires_at, :assignments_duration, :reward_amount, :max_assignments,
|
49
49
|
:auto_approval_delay, :description, :reward, :lifetime, :annotation,
|
50
50
|
:similar_hits_count, :assignments_pending_count, :assignments_available_count,
|
51
|
-
:assignments_completed_count
|
51
|
+
:assignments_completed_count, :question_external_url, :qualification_requirement_comparator,
|
52
|
+
:qualification_requirement_value
|
52
53
|
|
53
54
|
def initialize(response)
|
54
55
|
@raw_xml = response.body
|
55
|
-
@xml = Nokogiri::XML(@raw_xml)
|
56
|
+
@xml = Nokogiri::XML(CGI.unescapeHTML(@raw_xml))
|
56
57
|
raise_errors
|
57
58
|
map_content(@xml.xpath('//HIT'),
|
58
59
|
:hit_id => 'HITId',
|
@@ -74,7 +75,10 @@ module RTurk
|
|
74
75
|
:similar_hits_count => 'NumberOfSimilarHITs',
|
75
76
|
:assignments_pending_count => 'NumberOfAssignmentsPending',
|
76
77
|
:assignments_available_count => 'NumberOfAssignmentsAvailable',
|
77
|
-
:assignments_completed_count => 'NumberOfAssignmentsCompleted'
|
78
|
+
:assignments_completed_count => 'NumberOfAssignmentsCompleted',
|
79
|
+
:question_external_url => 'Question/*/*[1]',
|
80
|
+
:qualification_requirement_comparator => 'QualificationRequirement/Comparator',
|
81
|
+
:qualification_requirement_value => 'QualificationRequirement/IntegerValue'
|
78
82
|
)
|
79
83
|
|
80
84
|
@keywords = @keywords.split(', ') if @keywords
|
data/lib/rturk/version.rb
CHANGED
@@ -4,10 +4,19 @@ describe RTurk::Assignment do
|
|
4
4
|
describe "#bonus_payments" do
|
5
5
|
it "should call GetBonusPayments with the assignment_id" do
|
6
6
|
result = mock('result', :payments => [1, 2, 3])
|
7
|
-
|
7
|
+
assignment = RTurk::Assignment.new(123456)
|
8
8
|
RTurk.should_receive(:GetBonusPayments).
|
9
9
|
with(:assignment_id => 123456).and_return(result)
|
10
|
-
|
10
|
+
assignment.bonus_payments.should == result.payments
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
describe "#approve_rejected!" do
|
15
|
+
it "should call ApproveRejectedAssignment with assignment_id and optional feedback" do
|
16
|
+
RTurk.should_receive(:ApproveRejectedAssignment).
|
17
|
+
with(:assignment_id => 123456, :feedback => "abcde")
|
18
|
+
assignment = RTurk::Assignment.new(123456)
|
19
|
+
assignment.approve_rejected!("abcde")
|
11
20
|
end
|
12
21
|
end
|
13
22
|
end
|
@@ -2,7 +2,7 @@ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helper'))
|
|
2
2
|
|
3
3
|
|
4
4
|
describe RTurk::Qualifications do
|
5
|
-
|
5
|
+
|
6
6
|
# Possible values coming back
|
7
7
|
# {"QualificationTypeId","Comparator", "IntegerValue", "LocaleValue.Country","RequiredToPreview"}
|
8
8
|
|
@@ -21,21 +21,27 @@ describe RTurk::Qualifications do
|
|
21
21
|
@qualification.to_params.should eql({"QualificationTypeId" => '000000000000000000L0',"Comparator" => 'GreaterThan',
|
22
22
|
"IntegerValue" => 90, "RequiredToPreview" => 'false'})
|
23
23
|
end
|
24
|
-
|
24
|
+
|
25
25
|
it "should build a qualification for boolean qualification" do
|
26
26
|
@qualification = RTurk::Qualification.new('00000000000000000060', true)
|
27
27
|
@qualification.to_params.should eql({"QualificationTypeId" => '00000000000000000060',"Comparator" => 'EqualTo',
|
28
28
|
"IntegerValue" => 1, "RequiredToPreview" => "true"})
|
29
29
|
end
|
30
|
-
|
30
|
+
|
31
31
|
it "should build a qualification for country qualification" do
|
32
32
|
@qualification = RTurk::Qualification.new('00000000000000000071', :eql => 'PH')
|
33
33
|
@qualification.to_params.should eql({"QualificationTypeId" => '00000000000000000071',"Comparator" => 'EqualTo',
|
34
34
|
"LocaleValue.Country" => 'PH', "RequiredToPreview" => "true"})
|
35
35
|
end
|
36
|
-
|
36
|
+
|
37
|
+
it "should build a qualification for existence qualification" do
|
38
|
+
@qualification = RTurk::Qualification.new('00000000000000000071', :exists => true)
|
39
|
+
@qualification.to_params.should eql({"QualificationTypeId" => '00000000000000000071',"Comparator" => 'Exists',
|
40
|
+
"RequiredToPreview" => "true"})
|
41
|
+
end
|
42
|
+
|
37
43
|
context 'passing in symbols representing a TypeID' do
|
38
|
-
|
44
|
+
|
39
45
|
it "should build a qualification for Approval rate" do
|
40
46
|
@qualification = RTurk::Qualification.new(:approval_rate, :gt => 90)
|
41
47
|
@qualification.to_params.should eql({"QualificationTypeId" => '000000000000000000L0',"Comparator" => 'GreaterThan',
|
@@ -53,7 +59,7 @@ describe RTurk::Qualifications do
|
|
53
59
|
@qualification.to_params.should eql({"QualificationTypeId" => '00000000000000000071',"Comparator" => 'EqualTo',
|
54
60
|
"LocaleValue.Country" => 'PH', "RequiredToPreview" => "true"})
|
55
61
|
end
|
56
|
-
|
62
|
+
|
57
63
|
end
|
58
64
|
|
59
65
|
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helper'))
|
2
|
+
|
3
|
+
describe RTurk::ApproveRejectedAssignment do
|
4
|
+
|
5
|
+
before(:all) do
|
6
|
+
aws = YAML.load(File.open(File.join(SPEC_ROOT, 'mturk.yml')))
|
7
|
+
RTurk.setup(aws['AWSAccessKeyId'], aws['AWSAccessKey'], :sandbox => true)
|
8
|
+
faker('approve_rejected_assignment', :operation => 'ApproveRejectedAssignment')
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should ensure required params" do
|
12
|
+
lambda{RTurk::ApproveRejectedAssignment()}.should raise_error RTurk::MissingParameters
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should successfully request the operation" do
|
16
|
+
RTurk::Requester.should_receive(:request).once.with(
|
17
|
+
hash_including('Operation' => 'ApproveRejectedAssignment'))
|
18
|
+
RTurk::ApproveRejectedAssignment(:assignment_id => "123456789") rescue RTurk::InvalidRequest
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should parse and return the result" do
|
22
|
+
RTurk::ApproveRejectedAssignment(:assignment_id => "123456789").elements.should eql(
|
23
|
+
{"ApproveRejectedAssignmentResult"=>{"Request"=>{"IsValid"=>"True"}}}
|
24
|
+
)
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
|
@@ -11,6 +11,9 @@ describe RTurk::GetHIT do
|
|
11
11
|
response.type_id.should eql('YGKZ2W5X6YFZ08ZRXXZZ')
|
12
12
|
response.auto_approval_delay.should eql(3600)
|
13
13
|
response.status.should eql('Reviewable')
|
14
|
+
response.question_external_url.should eql("http://s3.amazonaws.com/mpercival.com/newtweet.html?id=foo")
|
15
|
+
response.qualification_requirement_comparator.should eql("GreaterThan")
|
16
|
+
response.qualification_requirement_value.should eql(90)
|
14
17
|
end
|
15
18
|
|
16
19
|
it "should not specify the ResponseGroup by default" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rturk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.9.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -202,6 +202,7 @@ files:
|
|
202
202
|
- lib/rturk/macros.rb
|
203
203
|
- lib/rturk/operation.rb
|
204
204
|
- lib/rturk/operations/approve_assignment.rb
|
205
|
+
- lib/rturk/operations/approve_rejected_assignment.rb
|
205
206
|
- lib/rturk/operations/assign_qualification.rb
|
206
207
|
- lib/rturk/operations/block_worker.rb
|
207
208
|
- lib/rturk/operations/create_hit.rb
|
@@ -268,6 +269,7 @@ files:
|
|
268
269
|
- spec/builders/qualifications_spec.rb
|
269
270
|
- spec/builders/question_spec.rb
|
270
271
|
- spec/fake_responses/approve_assignment.xml
|
272
|
+
- spec/fake_responses/approve_rejected_assignment.xml
|
271
273
|
- spec/fake_responses/assign_qualification.xml
|
272
274
|
- spec/fake_responses/block_worker.xml
|
273
275
|
- spec/fake_responses/create_hit.xml
|
@@ -302,6 +304,7 @@ files:
|
|
302
304
|
- spec/fake_responses/update_qualification_type.xml
|
303
305
|
- spec/mturk.sample.yml
|
304
306
|
- spec/operations/approve_assignment_spec.rb
|
307
|
+
- spec/operations/approve_rejected_assignment_spec.rb
|
305
308
|
- spec/operations/assign_qualification_spec.rb
|
306
309
|
- spec/operations/block_worker_spec.rb
|
307
310
|
- spec/operations/create_hit_spec.rb
|