fix recaptcha, move to furnace.recaptcha

Doug Coleman 2009-09-17 09:13:33 -07:00
parent 225d0097fc
commit bc895f84b4
6 changed files with 26 additions and 17 deletions

View File

@ -1,8 +1,8 @@
! Copyright (C) 2009 Doug Coleman. ! Copyright (C) 2009 Doug Coleman.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: help.markup help.syntax http.server.filters kernel USING: help.markup help.syntax http.server.filters kernel
multiline furnace.actions ; multiline furnace.actions furnace.alloy ;
IN: furnace.chloe-tags.recaptcha IN: furnace.recaptcha
HELP: <recaptcha> HELP: <recaptcha>
{ $values { $values
@ -30,20 +30,27 @@ ARTICLE: "recaptcha-example" "Recaptcha example"
"An example follows:" "An example follows:"
{ $code { $code
HEREDOC: RECAPTCHA-TUTORIAL HEREDOC: RECAPTCHA-TUTORIAL
USING: db.sqlite kernel http.server.dispatchers db.sqlite
furnace.actions furnace.recaptcha furnace.conversations
furnace.redirection xml.syntax html.templates.chloe.compiler
io.streams.string http.server.responses furnace.alloy http.server ;
TUPLE: recaptcha-app < dispatcher recaptcha ; TUPLE: recaptcha-app < dispatcher recaptcha ;
: recaptcha-db ( -- obj )
"recaptcha-example" <sqlite-db> ;
: <recaptcha-challenge> ( -- obj ) : <recaptcha-challenge> ( -- obj )
<action> <action>
[ [
begin-conversation
validate-recaptcha validate-recaptcha
recaptcha-valid? get "?good" "?bad" ? <redirect> recaptcha-valid? cget "?good" "?bad" ? >url <continue-conversation>
] >>submit ] >>submit
[ [
<response> <XML <t:chloe xmlns:t="http://factorcode.org/chloe/1.0">
{" <?xml version='1.0' ?> <html><body><form submit="" method="post"><t:recaptcha/></form></body></html>
<t:chloe xmlns:t="http://factorcode.org/chloe/1.0"> </t:chloe> XML>
<html><body><t:recaptcha/></body></html> compile-template [ call( -- ) ] with-string-writer "text/html" <content>
</t:chloe>"} >>body
] >>display ; ] >>display ;
: <recaptcha-app> ( -- obj ) : <recaptcha-app> ( -- obj )
@ -51,8 +58,9 @@ TUPLE: recaptcha-app < dispatcher recaptcha ;
<recaptcha-challenge> "" add-responder <recaptcha-challenge> "" add-responder
<recaptcha> <recaptcha>
"concatenative.org" >>domain "concatenative.org" >>domain
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" >>public-key "6LeJWQgAAAAAAFlYV7SuBClE9uSpGtV_ZS-qVON7" >>public-key
"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb" >>private-key ; "6LeJWQgAAAAAALh-XJgSSQ6xKygRgJ8-029Ip2Xv" >>private-key
recaptcha-db <alloy> ;
<recaptcha-app> main-responder set-global <recaptcha-app> main-responder set-global
RECAPTCHA-TUTORIAL RECAPTCHA-TUTORIAL
@ -60,7 +68,7 @@ RECAPTCHA-TUTORIAL
; ;
ARTICLE: "furnace.chloe-tags.recaptcha" "Recaptcha chloe tag" ARTICLE: "furnace.recaptcha" "Recaptcha"
"The " { $vocab-link "furnace.chloe-tags.recaptcha" } " vocabulary implements support for the Recaptcha. Recaptcha is a web service that provides the user with a captcha, a test that is easy to solve by visual inspection, but hard to solve by writing a computer program. Use a captcha to protect forms from abusive users." $nl "The " { $vocab-link "furnace.chloe-tags.recaptcha" } " vocabulary implements support for the Recaptcha. Recaptcha is a web service that provides the user with a captcha, a test that is easy to solve by visual inspection, but hard to solve by writing a computer program. Use a captcha to protect forms from abusive users." $nl
"The recaptcha responder is a " { $link filter-responder } " that wraps another responder. Set the " { $slot "domain" } ", " { $slot "public-key" } ", and " { $slot "private-key" } " slots of this responder to your Recaptcha account information." $nl "The recaptcha responder is a " { $link filter-responder } " that wraps another responder. Set the " { $slot "domain" } ", " { $slot "public-key" } ", and " { $slot "private-key" } " slots of this responder to your Recaptcha account information." $nl
@ -74,4 +82,4 @@ ARTICLE: "furnace.chloe-tags.recaptcha" "Recaptcha chloe tag"
{ $subsection recaptcha-error } { $subsection recaptcha-error }
{ $subsection "recaptcha-example" } ; { $subsection "recaptcha-example" } ;
ABOUT: "furnace.chloe-tags.recaptcha" ABOUT: "furnace.recaptcha"

View File

@ -4,8 +4,8 @@ USING: accessors furnace.actions furnace.redirection html.forms
html.templates.chloe.compiler html.templates.chloe.syntax html.templates.chloe.compiler html.templates.chloe.syntax
http.client http.server http.server.filters io.sockets kernel http.client http.server http.server.filters io.sockets kernel
locals namespaces sequences splitting urls validators locals namespaces sequences splitting urls validators
xml.syntax ; xml.syntax furnace.conversations ;
IN: furnace.chloe-tags.recaptcha IN: furnace.recaptcha
TUPLE: recaptcha < filter-responder domain public-key private-key ; TUPLE: recaptcha < filter-responder domain public-key private-key ;
@ -38,8 +38,9 @@ M: recaptcha call-responder*
XML] ; XML] ;
: recaptcha-url ( secure? -- ? ) : recaptcha-url ( secure? -- ? )
[ "https://api.recaptcha.net/challenge" >url ] [ "https://api.recaptcha.net/challenge" ]
[ "http://api.recaptcha.net/challenge" >url ] if ; [ "http://api.recaptcha.net/challenge" ] if
recaptcha-error cget [ "?error=" glue ] when* >url ;
: render-recaptcha ( -- xml ) : render-recaptcha ( -- xml )
secure-connection? recaptcha-url secure-connection? recaptcha-url
@ -72,4 +73,4 @@ PRIVATE>
"recaptcha_challenge_field" value "recaptcha_challenge_field" value
"recaptcha_response_field" value "recaptcha_response_field" value
\ recaptcha get (validate-recaptcha) \ recaptcha get (validate-recaptcha)
[ recaptcha-valid? set ] [ recaptcha-error set ] bi* ; [ recaptcha-valid? cset ] [ recaptcha-error cset ] bi* ;