houdini-rails3 0.1.4 → 0.1.5

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/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.4
1
+ 0.1.5
@@ -3,7 +3,7 @@ class Houdini::PostbacksController < ApplicationController
3
3
  def create
4
4
  object_class = params[:object_class].classify.constantize
5
5
  object = object_class.find(params[:object_id])
6
- if object.process_postback(HashWithIndifferentAccess.new request.request_parameters)
6
+ if object.process_postback(params[:task_name], HashWithIndifferentAccess.new(request.request_parameters))
7
7
  render :json => {:success => true}
8
8
  else
9
9
  render :json => {:success => false}, :status => 422
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{houdini-rails3}
8
- s.version = "0.1.4"
8
+ s.version = "0.1.5"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Chris Conley"]
12
- s.date = %q{2010-10-25}
12
+ s.date = %q{2011-01-24}
13
13
  s.description = %q{Rails 3 Engine for using the Houdini Mechanical Turk API}
14
14
  s.email = %q{chris@chrisconley.me}
15
15
  s.extra_rdoc_files = [
@@ -1,39 +1,52 @@
1
1
  module Houdini
2
2
  module Model
3
- def self.included(base)
4
- base.extend ClassMethods
3
+ # def self.included(base)
4
+ # base.extend ClassMethods
5
+ # base.include Rails.application.routes.url_helpers
6
+ # end
7
+
8
+ extend ActiveSupport::Concern
9
+
10
+ included do
11
+ include Rails.application.routes.url_helpers
12
+ extend ClassMethods
5
13
  end
6
14
 
7
15
  module ClassMethods
8
16
  def houdini(name, options)
9
- include Rails.application.routes.url_helpers
10
- cattr_accessor :houdini_task
11
- self.houdini_task = Houdini::Task.new(name, options)
17
+ houdini_tasks[name.to_sym] = Houdini::Task.new(name.to_sym, options)
12
18
  end
19
+
20
+ def houdini_tasks
21
+ @houdini_task ||= {}
22
+ end
23
+
13
24
  end
14
25
 
15
26
  def send_to_houdini(task_name)
16
- # TODO: look up task when multiple tasks per model are implemented
27
+ houdini_task = self.class.houdini_tasks[task_name.to_sym]
17
28
  params = {
18
29
  :api_key => Houdini::KEY,
19
30
  :identifier => houdini_task.name,
20
31
  :price => houdini_task.price,
21
32
  :title => houdini_task.title,
22
33
  :form_html => generate_form_html(houdini_task.form_template),
23
- :postback_url => houdini_postbacks_url(self.class.name, self.id, self.houdini_task.name, :host => Houdini::RAILS_HOST)
34
+ :postback_url => houdini_postbacks_url(self.class.name, self.id, houdini_task.name, :host => Houdini::RAILS_HOST)
24
35
  }
25
36
  params[:matched_answers_size] = houdini_task.matched_answers_size if houdini_task.matched_answers_size
26
37
 
27
38
  result = Houdini::Base.request(houdini_task.api, params)
28
39
 
29
- call_after_submit
40
+ call_after_submit(task_name)
30
41
  end
31
42
 
32
- def process_postback(answer)
43
+ def process_postback(task_name, answer)
44
+ houdini_task = self.class.houdini_tasks[task_name.to_sym]
33
45
  self.send(houdini_task.on_task_completion, answer)
34
46
  end
35
47
 
36
- def call_after_submit
48
+ def call_after_submit(task_name)
49
+ houdini_task = self.class.houdini_tasks[task_name.to_sym]
37
50
  self.send(houdini_task.after_submit) if houdini_task.after_submit
38
51
  end
39
52
 
@@ -7,7 +7,7 @@ describe "Postbacks" do
7
7
 
8
8
  it "should receive postback" do
9
9
  p = Post.create(:image_url => 'http://google.com', :flagged => nil)
10
- post "houdini/post/#{p.id}/review_image/postbacks", :flagged => "yes"
10
+ post "houdini/post/#{p.id}/image_moderation/postbacks", :flagged => "yes"
11
11
 
12
12
  p.reload
13
13
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: houdini-rails3
3
3
  version: !ruby/object:Gem::Version
4
- hash: 19
4
+ hash: 17
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 4
10
- version: 0.1.4
9
+ - 5
10
+ version: 0.1.5
11
11
  platform: ruby
12
12
  authors:
13
13
  - Chris Conley
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-10-25 00:00:00 -04:00
18
+ date: 2011-01-24 00:00:00 -05:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency