crowdflower 0.11.0 → 0.12.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/README.md +62 -40
- data/VERSION +1 -1
- data/config/account_info.sample.yml +5 -0
- data/crowdflower.gemspec +9 -7
- data/lib/crowdflower/job.rb +4 -0
- data/test/crowdshopping.csv +7 -0
- data/test/integration_tests.rb +249 -110
- metadata +14 -19
- data/test/sample.csv +0 -5
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 76063401ad10a5f00f6eef25ce35321d57b0ac62
|
4
|
+
data.tar.gz: 4e9b04672d27280fdfde741f63ec4217731dd7f0
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 82241d2fd4dfe9df428181d8ca11edb0d830dcdfe253c4eff9b2e989bfdd83f4379af59f414b08a02316823e0ada074c5867d5f34c6b80418a6348e53dc67df2
|
7
|
+
data.tar.gz: 93914eb90b7c1fa4f044e536e7bd027fef710bc6c9378801ab84bb16e92e9299b0326b9a2959d7f5d8da725f6306069a4f0c6fb143718e61407d197444a18cd4
|
data/README.md
CHANGED
@@ -40,7 +40,7 @@ CrowdFlower.connect!( 'CrowdFlower.yaml' )
|
|
40
40
|
```
|
41
41
|
|
42
42
|
## Usage and Examples
|
43
|
-
#####[
|
43
|
+
#####This [job](https://api.crowdflower.com/v1/jobs/418404/) is referenced throughout the following examples (must be signed in to view).
|
44
44
|
|
45
45
|
### Access Job Info
|
46
46
|
|
@@ -76,17 +76,17 @@ require 'crowdflower'
|
|
76
76
|
|
77
77
|
API_KEY = "YOUR_API_KEY"
|
78
78
|
DOMAIN_BASE = "https://api.crowdflower.com"
|
79
|
-
JOB_ID = 418404
|
80
79
|
|
81
80
|
CrowdFlower::Job.connect! API_KEY, DOMAIN_BASE
|
82
81
|
|
82
|
+
job_id = 418404
|
83
83
|
job_one = CrowdFlower::Job.new(job_id)
|
84
84
|
job_two = job_one.copy
|
85
85
|
```
|
86
86
|
|
87
87
|
### Available Features (Methods)
|
88
88
|
|
89
|
-
#####GET
|
89
|
+
#####GET: Example job's JSON, which the GET method has access to: https://crowdflower.com/jobs/418404.json
|
90
90
|
|
91
91
|
```ruby
|
92
92
|
job.get["css"]
|
@@ -141,22 +141,33 @@ job.get["custom_key"]
|
|
141
141
|
job.get["options"]
|
142
142
|
```
|
143
143
|
|
144
|
-
#####UPLOAD
|
144
|
+
#####UPLOAD: upload a file to create the data (or units) in your job.
|
145
145
|
|
146
146
|
```ruby
|
147
|
+
# opts can be used to force an upload
|
147
148
|
job.upload(filename, type, opts)
|
148
149
|
job.upload("crowdshopping.csv", "text/csv")
|
149
150
|
```
|
150
151
|
|
151
|
-
#####CHANNELS
|
152
|
+
#####CHANNELS: http://api.crowdflower.com/v1/jobs/418404/channels
|
152
153
|
|
153
154
|
```ruby
|
154
|
-
|
155
|
+
# view all enabled channels and available channels:
|
156
|
+
job.channels
|
157
|
+
|
158
|
+
# view only the enabled ones:
|
159
|
+
job.channels["enabled_channels"]
|
160
|
+
|
161
|
+
# turn on specific channels:
|
155
162
|
job.enable_channels(channels)
|
156
|
-
job.enable_channels("
|
163
|
+
job.enable_channels(["4x4bux_com", "abitback", "aceinnovations"])
|
164
|
+
|
165
|
+
# turn off a specific channel (does not take an array like enable_chanels):
|
166
|
+
job.disable_channel(channel_name)
|
167
|
+
job.disable_channel("4x4bux_com")
|
157
168
|
```
|
158
169
|
|
159
|
-
#####TAGS
|
170
|
+
#####TAGS: https://api.crowdflower.com/jobs/418404/tags
|
160
171
|
|
161
172
|
```ruby
|
162
173
|
tags = "shoes", "shopping", "fashion"
|
@@ -199,8 +210,13 @@ unit.judgments(444154130)
|
|
199
210
|
#####UNIT.CREATE: Create a new unit.
|
200
211
|
|
201
212
|
```ruby
|
213
|
+
unit.create(data, gold = false)
|
214
|
+
|
215
|
+
# normal unit
|
202
216
|
unit.create("glitter_color"=>"blue")
|
203
|
-
|
217
|
+
|
218
|
+
# test question (gold) unit
|
219
|
+
unit.create("glitter_color"=>"blue", true)
|
204
220
|
```
|
205
221
|
|
206
222
|
#####UNIT.COPY: Copy an existing unit.
|
@@ -213,7 +229,7 @@ unit.copy(444154130, 418404, "glitter_color"=>"blue")
|
|
213
229
|
#####UNIT.SPLIT: In cases where multiple values are stored in the cells of the same column, you can use the Split Column function to parse the data into two or more columns by specifying a delimiter (most typically a newline character).
|
214
230
|
|
215
231
|
```ruby
|
216
|
-
unit.split(on, with = " ")
|
232
|
+
unit.split(on, with = ", ")
|
217
233
|
```
|
218
234
|
|
219
235
|
#####UNIT.UPDATE: Update the value of a unit's key.
|
@@ -241,7 +257,7 @@ unit.cancel(unit_id)
|
|
241
257
|
unit.delete(unit_id)
|
242
258
|
```
|
243
259
|
|
244
|
-
#####UNIT.REQUEST_MORE_JUDGMENTS:
|
260
|
+
#####UNIT.REQUEST_MORE_JUDGMENTS: Pass in the unit id and the number of additional judgments needed.
|
245
261
|
|
246
262
|
```ruby
|
247
263
|
unit.request_more_judgments(unit_id, nb_judgments = 1)
|
@@ -253,29 +269,26 @@ unit.request_more_judgments(unit_id, nb_judgments = 1)
|
|
253
269
|
order = CrowdFlower::Order.new(job)
|
254
270
|
```
|
255
271
|
|
256
|
-
#####ORDER.DEBIT:
|
272
|
+
#####ORDER.DEBIT: This is the same as clicking launch from the job dashboard; your job must have at least 5 units and CML form elements for this to work.
|
257
273
|
|
258
274
|
```ruby
|
259
|
-
|
260
|
-
order.debit(units_count, channels = ["on_demand"])
|
261
|
-
|
262
|
-
# pass in specific channel name to launch job w/ that channel
|
275
|
+
order.debit(units_count, channels)
|
263
276
|
order.debit(6, "cf_internal")
|
264
277
|
```
|
265
278
|
|
266
|
-
#####PAUSE:
|
279
|
+
#####PAUSE: Can only be called on running jobs.
|
267
280
|
|
268
281
|
```ruby
|
269
282
|
job.pause
|
270
283
|
```
|
271
284
|
|
272
|
-
#####RESUME:
|
285
|
+
#####RESUME: Can only be called on paused or completed jobs.
|
273
286
|
|
274
287
|
```ruby
|
275
288
|
job.resume
|
276
289
|
```
|
277
290
|
|
278
|
-
#####CANCEL:
|
291
|
+
#####CANCEL: Can only be called on paused jobs.
|
279
292
|
|
280
293
|
```ruby
|
281
294
|
job.cancel
|
@@ -300,60 +313,64 @@ job.delete
|
|
300
313
|
worker = CrowdFlower::Worker.new(job)
|
301
314
|
```
|
302
315
|
|
303
|
-
#####WORKER.BONUS: Award a bonus in cents, 200 for $2.00 and
|
316
|
+
#####WORKER.BONUS: Award a bonus in cents, 200 for $2.00 and optionally, add a message.
|
304
317
|
|
305
318
|
```ruby
|
306
319
|
worker.bonus(worker_id, amount, reason=nil)
|
307
|
-
worker.bonus(
|
320
|
+
worker.bonus(99999999, 200, "You shoe shop like a pro! Here's a bonus for the awesome answers!")
|
308
321
|
```
|
309
322
|
|
310
|
-
#####WORKER.REJECT:
|
323
|
+
#####WORKER.REJECT: This method is only available to Pro and Enterprise users. Calling worker.reject stops a contributor from completing tasks and removes the contributor's judgments. It is best used when a job is still running as a completed job cannot collect new judgments to replace the rejected ones.
|
311
324
|
|
312
325
|
```ruby
|
313
326
|
worker.reject(worker_id)
|
314
|
-
worker.reject(
|
327
|
+
worker.reject(99999999)
|
315
328
|
```
|
316
329
|
|
317
|
-
#####WORKER.NOTIFY: Sends a
|
330
|
+
#####WORKER.NOTIFY: Sends a message to the specified contributor; appears in the contributor's dashboard notifications.
|
318
331
|
|
319
332
|
```ruby
|
320
|
-
worker.notify(worker_id,
|
321
|
-
worker.notify(
|
333
|
+
worker.notify(worker_id, message)
|
334
|
+
worker.notify(99999999, "Thanks for working on this task!")
|
322
335
|
```
|
323
336
|
|
324
|
-
#####WORKER.FLAG:
|
337
|
+
#####WORKER.FLAG: Prevents a contributor from completing a task; judgments remain in their current state and will not be thrown away.
|
325
338
|
|
326
339
|
```ruby
|
327
|
-
worker.flag(worker_id, reason=nil)
|
328
|
-
worker.flag(
|
340
|
+
worker.flag(worker_id, reason = nil, persist = false)
|
341
|
+
worker.flag(99999999, "Flagging worker from this job.")
|
342
|
+
|
343
|
+
# persist = true flags the contributor from all of your jobs
|
344
|
+
worker.flag(worker_id, reason = nil, persist = true)
|
345
|
+
worker.flag(99999999, "Flaging worker from all my jobs.")
|
329
346
|
```
|
330
347
|
|
331
|
-
#####WORKER.DEFLAG:
|
348
|
+
#####WORKER.DEFLAG: Removes flag and allows contributor to continue work.
|
332
349
|
```ruby
|
333
|
-
worker.deflag(worker_id)
|
334
|
-
worker.deflag(
|
350
|
+
worker.deflag(worker_id, reason)
|
351
|
+
worker.deflag(99999999, "Worker was mistakenly flagged.")
|
335
352
|
```
|
336
353
|
|
337
|
-
#####JUDGMENTS
|
354
|
+
#####JUDGMENTS: http://api.crowdflower.com/v1/jobs/418404/units/judgments
|
338
355
|
|
339
356
|
```ruby
|
340
357
|
judgment = CrowdFlower::Judgment.new(job)
|
341
358
|
judgment.all
|
342
359
|
judgment.get(judgment_id)
|
343
|
-
judgment.get(
|
360
|
+
judgment.get(9999999999)
|
344
361
|
|
345
362
|
# Return every judgment for the given unit
|
346
363
|
job.units.judgments(unit_id_number)
|
347
|
-
job.units.judgments(
|
364
|
+
job.units.judgments(9999999999)
|
348
365
|
```
|
349
366
|
|
350
|
-
#####LEGEND: Returns all
|
367
|
+
#####LEGEND: Returns all the job's CML - http://api.crowdflower.com/v1/jobs/418404/legend
|
351
368
|
|
352
369
|
```ruby
|
353
370
|
job.legend
|
354
371
|
```
|
355
372
|
|
356
|
-
#####STATUS:
|
373
|
+
#####STATUS: Returns a list of JSON unit and judgment attributes.
|
357
374
|
|
358
375
|
```ruby
|
359
376
|
job.status
|
@@ -368,11 +385,16 @@ job.status["completed_gold_estimate"]
|
|
368
385
|
job.status["ordered_units"]
|
369
386
|
```
|
370
387
|
|
371
|
-
#####DOWNLOAD_CSV:
|
388
|
+
#####DOWNLOAD_CSV: Download a zip file containing a CSV or JSON report, depending which one you specify. Below are examples of the available reports:
|
372
389
|
|
373
390
|
```ruby
|
374
|
-
job.download_csv(type, filename
|
375
|
-
job.download_csv(full,
|
391
|
+
job.download_csv(type, filename)
|
392
|
+
job.download_csv(:full, 'full_report.zip')
|
393
|
+
job.download_csv(:aggregated, 'aggregated_report.zip')
|
394
|
+
job.download_csv(:source, 'source_report.zip')
|
395
|
+
job.download_csv(:gold_report, 'gold_report.zip')
|
396
|
+
job.download_csv(:workset, 'workset_report.zip')
|
397
|
+
job.download_csv(:json, 'json_report.zip')
|
376
398
|
```
|
377
399
|
|
378
400
|
## Helpful Documentation Links
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.12.0
|
@@ -0,0 +1,5 @@
|
|
1
|
+
# This file can be used for running your job and for running the integration tests
|
2
|
+
# Rename this yaml template to "account_info.yml" or update the .gitignore file so it will not be pushed to github
|
3
|
+
|
4
|
+
API_KEY: add your api key here
|
5
|
+
PROJECT_NUM: add your project number here
|
data/crowdflower.gemspec
CHANGED
@@ -2,14 +2,16 @@
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
3
|
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
+
# stub: crowdflower 0.12.0 ruby lib
|
5
6
|
|
6
7
|
Gem::Specification.new do |s|
|
7
8
|
s.name = "crowdflower"
|
8
|
-
s.version = "0.
|
9
|
+
s.version = "0.12.0"
|
9
10
|
|
10
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
12
|
+
s.require_paths = ["lib"]
|
11
13
|
s.authors = ["Brian P O'Rourke", "Chris Van Pelt"]
|
12
|
-
s.date = "2014-05-
|
14
|
+
s.date = "2014-05-05"
|
13
15
|
s.description = "A toolkit for interacting with CrowdFlower via the REST API.\n\nThis is alpha software. Have fun!\n\n"
|
14
16
|
s.email = "brian@crowdflower.com"
|
15
17
|
s.extra_rdoc_files = [
|
@@ -26,6 +28,7 @@ Gem::Specification.new do |s|
|
|
26
28
|
"VERSION",
|
27
29
|
"bindev/cl_skel.rb",
|
28
30
|
"bindev/crowdflower.rb",
|
31
|
+
"config/account_info.sample.yml",
|
29
32
|
"crowdflower.gemspec",
|
30
33
|
"lib/crowdflower.rb",
|
31
34
|
"lib/crowdflower/base.rb",
|
@@ -34,16 +37,15 @@ Gem::Specification.new do |s|
|
|
34
37
|
"lib/crowdflower/order.rb",
|
35
38
|
"lib/crowdflower/unit.rb",
|
36
39
|
"lib/crowdflower/worker.rb",
|
37
|
-
"test/
|
38
|
-
"test/
|
40
|
+
"test/crowdshopping.csv",
|
41
|
+
"test/integration_tests.rb"
|
39
42
|
]
|
40
43
|
s.homepage = "http://github.com/dolores/ruby-crowdflower"
|
41
|
-
s.
|
42
|
-
s.rubygems_version = "1.8.23"
|
44
|
+
s.rubygems_version = "2.2.0"
|
43
45
|
s.summary = "a toolkit for the CrowdFlower API"
|
44
46
|
|
45
47
|
if s.respond_to? :specification_version then
|
46
|
-
s.specification_version =
|
48
|
+
s.specification_version = 4
|
47
49
|
|
48
50
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
49
51
|
s.add_runtime_dependency(%q<httparty>, [">= 0.7.4"])
|
data/lib/crowdflower/job.rb
CHANGED
@@ -127,6 +127,10 @@ module CrowdFlower
|
|
127
127
|
connection.post("#{resource_uri}/#{@id}/channels", {:body => { :channels => channels } } )
|
128
128
|
end
|
129
129
|
|
130
|
+
def disable_channel(channel_name)
|
131
|
+
connection.post("#{resource_uri}/#{@id}/disable_channel", {:body => { :channel_name => channel_name } } )
|
132
|
+
end
|
133
|
+
|
130
134
|
def tags
|
131
135
|
connection.get("#{resource_uri}/#{@id}/tags")
|
132
136
|
end
|
@@ -0,0 +1,7 @@
|
|
1
|
+
Brand Name,Shoe Style,Shoe Type,Glitter Color,Image,Retailer Name,Retailer URL
|
2
|
+
Jeffery Campbell,Lita,Booties,Red,"data:image/jpeg;base64,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",,
|
3
|
+
Jeffery Campbell,Lita,Booties,Gold,"data:image/jpeg;base64,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",,
|
4
|
+
Jeffery Campbell,Lita,Booties,Multi,https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcTocPVxYbL4Jeb6vQy-D3fPMXFHStsjYp43fMWb_ocHsgEMQQfGww,,
|
5
|
+
Jeffery Campbell,Lita,Booties,Silver,"data:image/jpeg;base64,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",,
|
6
|
+
Jeffery Campbell,Lita,Booties,Black,"data:image/jpeg;base64,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",,
|
7
|
+
Jeffery Campbell,Lita,Booties,Other,"data:image/jpeg;base64,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",,
|
data/test/integration_tests.rb
CHANGED
@@ -1,11 +1,12 @@
|
|
1
1
|
$: << File.dirname(__FILE__) + "/../lib"
|
2
2
|
|
3
|
-
require 'rubygems'
|
4
3
|
require 'crowdflower'
|
5
4
|
require 'json'
|
6
5
|
|
7
|
-
|
8
|
-
|
6
|
+
CONFIG = YAML::load(File.read("config/account_info.yml"))
|
7
|
+
API_KEY = CONFIG["API_KEY"]
|
8
|
+
PROJECT_NUM = CONFIG["PROJECT_NUM"]
|
9
|
+
DOMAIN_BASE = "https://api.crowdflower.com" || "https://api.localdev.crowdflower.com:8443"
|
9
10
|
|
10
11
|
CrowdFlower::Job.connect! API_KEY, DOMAIN_BASE
|
11
12
|
unless API_KEY && API_KEY.size > 3
|
@@ -23,14 +24,10 @@ EOF
|
|
23
24
|
exit 1
|
24
25
|
end
|
25
26
|
|
26
|
-
|
27
|
-
# account will be charged. This is inadvisable for anyone other than
|
28
|
-
# CrowdFlower employees.
|
29
|
-
I_AM_RICH = ENV["CF_LIVE_TRANSACTIONS"] == "true"
|
27
|
+
RUNNING_TESTS = ENV["CF_LIVE_TRANSACTIONS"] == "true"
|
30
28
|
|
31
|
-
if
|
32
|
-
puts "*** LIVE TRANSACTIONS ENABLED - THIS TEST RUN WILL BE CHARGED ***"
|
33
|
-
puts
|
29
|
+
if RUNNING_TESTS
|
30
|
+
puts "*** LIVE TRANSACTIONS ENABLED - THIS TEST RUN WILL BE CHARGED TO YOUR ACCOUNT ***"
|
34
31
|
end
|
35
32
|
|
36
33
|
def wait_until
|
@@ -62,111 +59,253 @@ def say(msg)
|
|
62
59
|
$stdout.puts msg
|
63
60
|
end
|
64
61
|
|
62
|
+
#################################################
|
63
|
+
# API CONNECTION
|
64
|
+
#################################################
|
65
|
+
say "Connecting to the API"
|
66
|
+
CrowdFlower.connect! API_KEY, DOMAIN_BASE
|
65
67
|
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
68
|
+
#################################################
|
69
|
+
# CREATE JOB
|
70
|
+
#################################################
|
71
|
+
say "Creating a blank job."
|
72
|
+
job_1 = CrowdFlower::Job.create("Job_1: Connection Check")
|
73
|
+
p "job_1 id: #{job_1.get["id"]}"
|
74
|
+
p "job_1 units_count: #{job_1.get["units_count"]}"
|
75
|
+
|
76
|
+
#################################################
|
77
|
+
# CHECK/ ENABLE CHANNELS
|
78
|
+
#################################################
|
79
|
+
say "Checking that job_1 does not have any enabled channels."
|
80
|
+
assert job_1.channels["enabled_channels"].empty?
|
81
|
+
|
82
|
+
say "Enabling the cf_internal channel."
|
83
|
+
job_1.enable_channels("cf_internal")
|
84
|
+
assert job_1.channels["enabled_channels"] == ["cf_internal"]
|
85
|
+
|
86
|
+
#################################################
|
87
|
+
# UPLOAD DATA/ CREATE NEW JOB
|
88
|
+
#################################################
|
89
|
+
say "Uploading CSV to create job_2."
|
90
|
+
job_2 = CrowdFlower::Job.upload(File.dirname(__FILE__) + "/crowdshopping.csv", "text/csv")
|
91
|
+
job_2_id = job_2.get["id"]
|
92
|
+
p "job_2 id: #{job_2_id}"
|
93
|
+
|
94
|
+
#################################################
|
95
|
+
# ADD UNITS
|
96
|
+
#################################################
|
97
|
+
say "-- Waiting for CrowdFlower to process the data."
|
98
|
+
wait_until { job_2.get["units_count"] == 6 }
|
99
|
+
|
100
|
+
say "Adding some more data."
|
101
|
+
job_2.upload(File.dirname(__FILE__) + "/crowdshopping.csv", "text/csv")
|
102
|
+
|
103
|
+
say "-- Waiting for CrowdFlower to process the data."
|
104
|
+
wait_until { job_2.get["units_count"] == 12 }
|
105
|
+
|
106
|
+
#################################################
|
107
|
+
# PING UNITS
|
108
|
+
#################################################
|
109
|
+
say "Pinging job_2 units."
|
110
|
+
assert job_2.units.ping['count'] == 12
|
111
|
+
assert job_2.units.ping['done'] == true
|
112
|
+
|
113
|
+
#################################################
|
114
|
+
# COUNT UNITS
|
115
|
+
#################################################
|
116
|
+
say "Checking for 12 units in job_2."
|
117
|
+
assert job_2.units.all.size == 12
|
118
|
+
|
119
|
+
#################################################
|
120
|
+
# UPDATE JOB_2
|
121
|
+
#################################################
|
122
|
+
say "Adding title, project number, instructions, CML"
|
123
|
+
job_2.update({:title => 'Job_2: CrowdShopping',
|
124
|
+
:project_number => PROJECT_NUM,
|
125
|
+
:instructions => '<p>There are six questions to this task. In this order, the questions ask if you were able to find a pair of Lita shoes for sale in red glitter, gold glitter, multi glitter, silver glitter, black glitter, or other color of glitter.</p><p>There is a photo of the shoe in correlating color as the question right below the question. It will give you a better idea of what to look for.</p>',
|
126
|
+
:cml => '<cml:radios label="Were you able to find an online retailer selling Jeffery Campbell Lita Booties in {{glitter_color}}?" validates="required" name="color_found" instructions="If you found the shoes we are looking for, click yes to fill in the website url."><p class="shoe-img">Example Photo: <img src="{{image}}" width="100" /></p><cml:radio label="Yes, I found an online retailer selling Lita shoes in {{glitter_color}}." value="yes"></cml:radio><cml:radio label="No, I could not find an online retailer selling Lita shoes in {{glitter_color}}." value="no"></cml:radio></cml:radios><br /><cml:text label="Please enter the name of the online retailer." default="Example: Karmaloop" validates="required" only-if="color_found:[yes]" name="please_enter_the_name_of_the_online_retailer"></cml:text><br /><cml:text label="Please enter the url to the shoes you found." default="Example: www.karmaloop.com/jeffery-campbell-litas-multiglitter" validates="required url" only-if="color_found:[yes]" name="please_enter_the_url_to_the_shoes_you_found"></cml:text>'})
|
127
|
+
|
128
|
+
#################################################
|
129
|
+
# ADD/ UPDATE/ REMOVE TAGS
|
130
|
+
#################################################
|
131
|
+
say "Checking if tags exist."
|
132
|
+
assert job_2.tags.empty?
|
133
|
+
|
134
|
+
say "Adding 'shoes' and 'glitter' to tags."
|
135
|
+
job_2.add_tags ["shoes", "glitter"]
|
136
|
+
assert job_2.tags.map{|t| t["name"]}.sort == ["glitter", "shoes"]
|
137
|
+
|
138
|
+
say "Removing 'shoes' tag."
|
139
|
+
job_2.remove_tags ["shoes"]
|
140
|
+
assert job_2.tags.map{|t| t["name"]} == ["glitter"]
|
141
|
+
|
142
|
+
say "Updating tags to 'fashion' 'fun' and 'glitter'."
|
143
|
+
job_2.update_tags ["fashion", "fun", "glitter"]
|
144
|
+
assert job_2.tags.map{|t| t["name"]} == ["fashion", "fun", "glitter"]
|
145
|
+
|
146
|
+
#################################################
|
147
|
+
# CHECK JOB_2 CHANNELS
|
148
|
+
#################################################
|
149
|
+
say "Checking that channels are turned on."
|
150
|
+
assert !job_2.channels["enabled_channels"].empty?
|
151
|
+
p "job_2 enabled_channels: #{job_2.channels["enabled_channels"]}"
|
152
|
+
|
153
|
+
#################################################
|
154
|
+
# ORDER JOB
|
155
|
+
#################################################
|
156
|
+
say "Ordering (launching) job_2 with 12 units."
|
157
|
+
order = CrowdFlower::Order.new(job_2)
|
158
|
+
order.debit(12, ["4x4bux_com", "bitcoinget", "cf_internal"])
|
159
|
+
wait_until { job_2.get["state"].casecmp('running') == 0}
|
160
|
+
# turning channels from on_demand work force adds "on_demand" to enabled_channels
|
161
|
+
assert job_2.channels["enabled_channels"] == ["4x4bux_com", "bitcoinget", "cf_internal", "on_demand"]
|
162
|
+
|
163
|
+
#################################################
|
164
|
+
# DISABLE A CHANNEL
|
165
|
+
#################################################
|
166
|
+
say "Disabling 'bitcoinget' channel."
|
167
|
+
job_2.disable_channel("bitcoinget")
|
168
|
+
assert job_2.channels["enabled_channels"] == ["4x4bux_com", "cf_internal", "on_demand"]
|
169
|
+
|
170
|
+
#################################################
|
171
|
+
# UNIT METHODS
|
172
|
+
#################################################
|
173
|
+
say "Setting up units."
|
174
|
+
unit_1 = job_2.units.all.to_a[0][0]
|
175
|
+
unit_2 = job_2.units.all.to_a[1][0]
|
176
|
+
|
177
|
+
unit = CrowdFlower::Unit.new(job_2)
|
178
|
+
wait_until { unit.get(unit_1)["state"] == "judgable" }
|
179
|
+
p "unit_1 id: #{unit_1}"
|
180
|
+
wait_until { unit.get(unit_1)["state"] == "judgable" }
|
181
|
+
p "unit_2 id: #{unit_2}"
|
182
|
+
|
183
|
+
say "Making unit_1 a test question (gold)."
|
184
|
+
unit.make_gold(unit_1)
|
185
|
+
assert unit.get(unit_1)["state"] == "golden"
|
186
|
+
|
187
|
+
say "Copying unit_2."
|
188
|
+
unit.copy(unit_2, job_2_id, "glitter_color"=>"blue")
|
189
|
+
assert job_2.get["units_count"] == 13
|
190
|
+
|
191
|
+
say "Creating a new test question unit."
|
192
|
+
unit.create({"glitter_color"=>"white"}, true)
|
193
|
+
assert job_2.get["units_count"] == 14
|
194
|
+
assert job_2.get["golds_count"] == 2
|
195
|
+
|
196
|
+
say "Canceling unit_2."
|
197
|
+
unit.cancel(unit_2)
|
198
|
+
assert unit.get(unit_2)["state"] == "canceled"
|
199
|
+
|
200
|
+
#################################################
|
201
|
+
# PAUSE/ RESUME/ CANCEL JOB
|
202
|
+
#################################################
|
203
|
+
say "Pausing job_2."
|
204
|
+
job_2.pause
|
205
|
+
assert job_2.get["state"] == "paused"
|
206
|
+
p "job_2 state: #{job_2.get["state"]}"
|
207
|
+
|
208
|
+
say "Resuming job_2."
|
209
|
+
job_2.resume
|
210
|
+
assert job_2.get["state"] == "running"
|
211
|
+
p "job_2 state: #{job_2.get["state"]}"
|
212
|
+
|
213
|
+
say "Canceling job_2."
|
214
|
+
job_2.cancel
|
215
|
+
assert job_2.get["state"] == "canceled"
|
216
|
+
p "job_2 state: #{job_2.get["state"]}"
|
217
|
+
|
218
|
+
say "Deleting job_1."
|
219
|
+
job_1.delete
|
220
|
+
assert job_1.get["state"] == "unordered"
|
221
|
+
|
222
|
+
#################################################
|
223
|
+
# JOB LEGEND
|
224
|
+
#################################################
|
225
|
+
say "Checking job_2 legend."
|
226
|
+
assert !job_2.legend.empty?
|
227
|
+
|
228
|
+
#################################################
|
229
|
+
# COPY JOB_2
|
230
|
+
#################################################
|
231
|
+
say "Copying job_2."
|
232
|
+
job_3 = job_2.copy(:all_units => true)
|
233
|
+
|
234
|
+
say "Updating job_3 title."
|
235
|
+
job_3.update(:title => 'Job_3: Copy of Job_2')
|
236
|
+
assert job_3.get["title"] == "Job_3: Copy of Job_2"
|
237
|
+
|
238
|
+
say "-- Waiting for CrowdFlower to process the data."
|
239
|
+
wait_until { job_3.get["units_count"] == 14 }
|
240
|
+
assert job_3.get["units_count"] == 14
|
241
|
+
|
242
|
+
#################################################
|
243
|
+
# WORKER METHODS
|
244
|
+
#################################################
|
245
|
+
# Worker tests run against an existing job with an internal CF worker_id number
|
246
|
+
say "Starting Worker tests for job #422830."
|
247
|
+
job = CrowdFlower::Job.new(422830)
|
248
|
+
worker = CrowdFlower::Worker.new(job)
|
249
|
+
worker_id = 23542619
|
250
|
+
|
251
|
+
say "Notifying worker."
|
252
|
+
worker.notify(worker_id, "Testing notify method.")
|
253
|
+
|
254
|
+
say "Bonusing a worker."
|
255
|
+
worker.bonus(worker_id, 1, "Here's a bonus for your awesome work!")
|
256
|
+
|
257
|
+
say "Flagging worker from one of my jobs."
|
258
|
+
worker.flag(worker_id, "Testing flag method.", :persist => false)
|
259
|
+
|
260
|
+
say "Flagging worker from all my jobs."
|
261
|
+
worker.flag(worker_id, "Testing flag method across all jobs.", :persist => true)
|
262
|
+
|
263
|
+
say "Deflagging worker."
|
264
|
+
worker.deflag(worker_id, "Testing deflag method.")
|
265
|
+
|
266
|
+
#################################################
|
267
|
+
# JUDGMENT METHODS
|
268
|
+
#################################################
|
269
|
+
# Judgment tests run against the same job as Worker tests
|
270
|
+
say "Starting Judgment tests for job #422830."
|
271
|
+
judgment = CrowdFlower::Judgment.new(job)
|
272
|
+
unit = CrowdFlower::Unit.new(job)
|
70
273
|
|
71
|
-
say "
|
72
|
-
|
73
|
-
assert_exception_raised(CrowdFlower::UsageError) {job_subclass_with_no_custom_key.create("job creation should fail")}
|
74
|
-
assert_exception_raised(CrowdFlower::APIError) {job_subclass_with_invalid_custom_key.create("job creation should fail")}
|
75
|
-
assert job_subclass_with_valid_custom_key.create("should be ok").units.ping['count']
|
274
|
+
say "Getting all judgments."
|
275
|
+
assert judgment.all.count == job.get["judgments_count"]
|
76
276
|
|
77
|
-
say "
|
78
|
-
|
79
|
-
assert_exception_raised(CrowdFlower::APIError) {CrowdFlower::Job.create("job creation should fail")}
|
80
|
-
assert_exception_raised(CrowdFlower::APIError) {job_subclass_with_no_custom_key.create("job creation should fail")}
|
81
|
-
assert_exception_raised(CrowdFlower::APIError) {job_subclass_with_invalid_custom_key.create("job creation should fail")}
|
82
|
-
assert job_subclass_with_valid_custom_key.create("should be ok").units.ping['count']
|
277
|
+
say "Checking the judgment number to test judgment.get method."
|
278
|
+
assert judgment.get(1243027889)["judgment"] == 1
|
83
279
|
|
84
|
-
say "
|
85
|
-
|
280
|
+
say "Checking the number of judgments for a unit to see if a unit's judgment info can be returned."
|
281
|
+
assert job.units.judgments(447664267).count == unit.get(447664267)["judgments_count"]
|
86
282
|
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
say "
|
95
|
-
job
|
96
|
-
|
97
|
-
say "
|
98
|
-
|
99
|
-
|
100
|
-
say "
|
101
|
-
|
102
|
-
|
103
|
-
say "
|
104
|
-
job.
|
105
|
-
|
106
|
-
say "
|
107
|
-
|
108
|
-
# server.
|
109
|
-
wait_until { job.get["units_count"] == 8 }
|
110
|
-
|
111
|
-
say "Checking ping."
|
112
|
-
assert job.units.ping['count'] == 8
|
113
|
-
assert job.units.ping['done'] == true
|
114
|
-
|
115
|
-
say "Getting the units for this job."
|
116
|
-
assert job.units.all.size == 8
|
117
|
-
|
118
|
-
say "Checking the status of the job."
|
119
|
-
assert job.status["tainted_judgments"] == 0
|
120
|
-
|
121
|
-
say "Adding title, instructions, and problem to the job."
|
122
|
-
job.update({:title => 'testtt',
|
123
|
-
:instructions => 'testttt fdsf sfds fsdfs fesfsdf',
|
124
|
-
:cml => '<cml:text label="Text" class="unmodified" validates="required"/>'})
|
125
|
-
|
126
|
-
say "Registering a webhook."
|
127
|
-
job.update :webhook_uri => "http://localhost:8080/crowdflower"
|
128
|
-
|
129
|
-
say "Tags"
|
130
|
-
assert job.tags.empty?
|
131
|
-
job.update_tags ["testing_123", "testing_456"]
|
132
|
-
assert job.tags.map{|t| t["name"]}.sort == ["testing_123", "testing_456"]
|
133
|
-
job.remove_tags ["testing_123"]
|
134
|
-
assert job.tags.map{|t| t["name"]} == ["testing_456"]
|
135
|
-
job.add_tags ["testing_789"]
|
136
|
-
assert job.tags.map{|t| t["name"]} == ["testing_456", "testing_789"]
|
137
|
-
|
138
|
-
say "Copying the existing job to a new one."
|
139
|
-
job2 = job.copy :all_units => true
|
140
|
-
|
141
|
-
say "-- Waiting for CrowdFlower to finish copying the job."
|
142
|
-
# You could also register a webhook to have CrowdFlower notify your
|
143
|
-
# server.
|
144
|
-
wait_until { job2.get["units_count"] == 8 }
|
145
|
-
|
146
|
-
say "Ordering the job."
|
147
|
-
order = CrowdFlower::Order.new(job)
|
148
|
-
unit_count = 8
|
149
|
-
order.debit(8)
|
150
|
-
wait_until { job.get["state"].casecmp('running') == 0}
|
151
|
-
|
152
|
-
say "Checking enabled_channels."
|
153
|
-
assert !job.channels["enabled_channels"].empty?
|
154
|
-
# To see exact list of enabled jobs:
|
155
|
-
# p job.channels["enabled_channels"]
|
156
|
-
|
157
|
-
say "Order job2 to check channels when specifying channel parameter."
|
158
|
-
order = CrowdFlower::Order.new(job2)
|
159
|
-
order.debit(8, "channel"=>"cf_internal")
|
160
|
-
assert job2.channels["enabled_channels"] == ["cf_internal"]
|
161
|
-
|
162
|
-
say "Canceling the unit."
|
163
|
-
unit_id = job.units.all.to_a[0][0]
|
164
|
-
unit = CrowdFlower::Unit.new(job)
|
165
|
-
wait_until { unit.get(unit_id)['state'] == 'judgable' }
|
166
|
-
puts unit.cancel(unit_id).inspect
|
167
|
-
assert unit.get(unit_id)['state'] == 'canceled'
|
283
|
+
#################################################
|
284
|
+
# DOWNLOAD REPORTS - missing assetions
|
285
|
+
#################################################
|
286
|
+
# These run against the completed job from readme examples; they print status codes as they go
|
287
|
+
say "Startiing report tests for job #418404."
|
288
|
+
job = CrowdFlower::Job.new(418404)
|
289
|
+
|
290
|
+
say "Downloading Full CSV"
|
291
|
+
job.download_csv(:full, "full_report.zip")
|
292
|
+
|
293
|
+
say "Downloading Aggregated CSV"
|
294
|
+
job.download_csv(:aggregated, "agg_report.zip")
|
295
|
+
|
296
|
+
say "Downloading Source CSV"
|
297
|
+
job.download_csv(:source, "source_report.zip")
|
298
|
+
|
299
|
+
say "Downloading Test Questions CSV"
|
300
|
+
job.download_csv(:gold_report, "gold_report.zip")
|
301
|
+
|
302
|
+
say "Downloading Worker CSV"
|
303
|
+
job.download_csv(:workset, "workset_report.zip")
|
168
304
|
|
169
|
-
say "
|
170
|
-
|
305
|
+
say "Downloading JSON"
|
306
|
+
job.download_csv(:json, "json_report.zip")
|
171
307
|
|
308
|
+
#################################################
|
309
|
+
# END OF TESTS
|
310
|
+
#################################################
|
172
311
|
say ">-< Tests complete. >-<"
|
metadata
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: crowdflower
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.12.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Brian P O'Rourke
|
@@ -10,31 +9,27 @@ authors:
|
|
10
9
|
autorequire:
|
11
10
|
bindir: bin
|
12
11
|
cert_chain: []
|
13
|
-
date: 2014-05-
|
12
|
+
date: 2014-05-05 00:00:00.000000000 Z
|
14
13
|
dependencies:
|
15
14
|
- !ruby/object:Gem::Dependency
|
16
15
|
name: httparty
|
17
16
|
requirement: !ruby/object:Gem::Requirement
|
18
|
-
none: false
|
19
17
|
requirements:
|
20
|
-
- -
|
18
|
+
- - ">="
|
21
19
|
- !ruby/object:Gem::Version
|
22
20
|
version: 0.7.4
|
23
21
|
type: :runtime
|
24
22
|
prerelease: false
|
25
23
|
version_requirements: !ruby/object:Gem::Requirement
|
26
|
-
none: false
|
27
24
|
requirements:
|
28
|
-
- -
|
25
|
+
- - ">="
|
29
26
|
- !ruby/object:Gem::Version
|
30
27
|
version: 0.7.4
|
31
|
-
description:
|
32
|
-
|
28
|
+
description: |+
|
29
|
+
A toolkit for interacting with CrowdFlower via the REST API.
|
33
30
|
|
34
31
|
This is alpha software. Have fun!
|
35
32
|
|
36
|
-
|
37
|
-
'
|
38
33
|
email: brian@crowdflower.com
|
39
34
|
executables: []
|
40
35
|
extensions: []
|
@@ -42,7 +37,7 @@ extra_rdoc_files:
|
|
42
37
|
- LICENSE
|
43
38
|
- README.md
|
44
39
|
files:
|
45
|
-
- .document
|
40
|
+
- ".document"
|
46
41
|
- CONTRIBUTORS
|
47
42
|
- HISTORY.md
|
48
43
|
- LICENSE
|
@@ -51,6 +46,7 @@ files:
|
|
51
46
|
- VERSION
|
52
47
|
- bindev/cl_skel.rb
|
53
48
|
- bindev/crowdflower.rb
|
49
|
+
- config/account_info.sample.yml
|
54
50
|
- crowdflower.gemspec
|
55
51
|
- lib/crowdflower.rb
|
56
52
|
- lib/crowdflower/base.rb
|
@@ -59,30 +55,29 @@ files:
|
|
59
55
|
- lib/crowdflower/order.rb
|
60
56
|
- lib/crowdflower/unit.rb
|
61
57
|
- lib/crowdflower/worker.rb
|
58
|
+
- test/crowdshopping.csv
|
62
59
|
- test/integration_tests.rb
|
63
|
-
- test/sample.csv
|
64
60
|
homepage: http://github.com/dolores/ruby-crowdflower
|
65
61
|
licenses: []
|
62
|
+
metadata: {}
|
66
63
|
post_install_message:
|
67
64
|
rdoc_options: []
|
68
65
|
require_paths:
|
69
66
|
- lib
|
70
67
|
required_ruby_version: !ruby/object:Gem::Requirement
|
71
|
-
none: false
|
72
68
|
requirements:
|
73
|
-
- -
|
69
|
+
- - ">="
|
74
70
|
- !ruby/object:Gem::Version
|
75
71
|
version: '0'
|
76
72
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
77
|
-
none: false
|
78
73
|
requirements:
|
79
|
-
- -
|
74
|
+
- - ">="
|
80
75
|
- !ruby/object:Gem::Version
|
81
76
|
version: '0'
|
82
77
|
requirements: []
|
83
78
|
rubyforge_project:
|
84
|
-
rubygems_version:
|
79
|
+
rubygems_version: 2.2.0
|
85
80
|
signing_key:
|
86
|
-
specification_version:
|
81
|
+
specification_version: 4
|
87
82
|
summary: a toolkit for the CrowdFlower API
|
88
83
|
test_files: []
|
data/test/sample.csv
DELETED
@@ -1,5 +0,0 @@
|
|
1
|
-
"created_at","from_user","text"
|
2
|
-
"Sat, 10 Oct 2009 01:00:07 +0000","sogowave","CrowdFlower easily connects you with thousands of people online, around the clock. http://ow.ly/rpaT"
|
3
|
-
"Sat, 10 Oct 2009 01:00:05 +0000","SogoPR","CrowdFlower easily connects you with thousands of people online, around the clock. http://ow.ly/rpaS"
|
4
|
-
"Fri, 09 Oct 2009 15:00:07 +0000","SIIA_Software","...and don't forget: @CloudTrigger @businessobjects @longjump @CrowdFlower http://bit.ly/397y72"
|
5
|
-
"Fri, 02 Oct 2009 19:49:50 +0000","julzie","RT @rev2 CrowdFlower - Labor as a Service in a New Concept | Rev2.org http://retwt.me/v80H - GO LaaS!!"
|