houdini-rails3 0.1.4 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
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