paintbalbot

strawpoll

Apr 10th, 2014
149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.38 KB | None | 0 0
  1. on *:text:!poll *:#:{
  2. var %regex = /(?:(.+?)\s*[:-]+\s*|())(.+?)$/iS
  3. if ($regex($strip($2-),%regex)) {
  4. var %title = $iif($regml(1),$v1,Poll)
  5. var %options = $regsubex($regml(2),/\s* $+ $chr(44) $+ \s*/g,$chr(44))
  6. }
  7. else return
  8.  
  9. noop $strawpoll.create(#,%title,%options)
  10. }
  11.  
  12. alias strawpoll.create {
  13. var %chan = $1, %title = $urlencode($2), %options
  14. var %multi = true, %permissive = false
  15.  
  16. var %i = 1, %n = $numtok($3,44)
  17. while (%i <= %n) {
  18. %options = %options $+ &options[]= $+ $urlencode($gettok($3,%i,44))
  19. inc %i
  20. }
  21.  
  22. var %sockname = strawpoll. $+ $ticks
  23. hfree -w %sockname | hmake %sockname
  24. hadd %sockname headerfile %sockname $+ .header.txt
  25. hadd %sockname datafile %sockname $+ .data.txt
  26.  
  27. hadd %sockname host strawpoll.me
  28. hadd %sockname request /ajax/new-poll
  29. hadd %sockname method POST
  30. hadd %sockname data $+(title=,%title,%options,&multi=,%multi,&permissive=,%permissive)
  31. hadd %sockname signal strawpoll.create
  32. hadd %sockname params %chan
  33.  
  34. sockopen %sockname $hget(%sockname,host) 80
  35. }
  36.  
  37. on *:signal:strawpoll.create:{
  38. var %err = $1, %sockname = $2, %header = $3, %data = $4, %chan = $5
  39.  
  40. if (* 200 OK iswm $read(%header,1)) && ($regex($read(%data,n,1),(\d+))) {
  41. msg %chan http://strawpoll.me/ $+ $regml(1)
  42. }
  43. else msg %chan Could not create poll.
  44.  
  45. hfree -w %sockname
  46. .remove %header | .remove %data
  47. }
  48.  
  49. on *:sockopen:strawpoll.*:{
  50. var %a = sockwrite -n $sockname
  51. %a $hget($sockname,method) $hget($sockname,request) HTTP/1.0
  52. %a Host: $hget($sockname,host)
  53. %a Connection: close
  54. if ($hget($sockname,data) != $null) {
  55. %a Content-Type: application/x-www-form-urlencoded
  56. %a Content-Length: $len($v1)
  57. }
  58. %a $+($crlf,$hget($sockname,data))
  59. }
  60.  
  61. on *:sockread:strawpoll.*:{
  62. var %header
  63. var %headerfile = $hget($sockname,headerfile)
  64. var %datafile = $hget($sockname,datafile)
  65.  
  66. if (!$hget($sockname,header.complete)) {
  67. sockread %header
  68. while (%header != $null) {
  69. write %headerfile %header
  70. sockread %header
  71. }
  72. if ($sockbr) hadd $sockname header.complete $true
  73. }
  74. if ($hget($sockname,header.complete)) {
  75. sockread &read
  76. while ($sockbr) {
  77. bwrite %datafile -1 -1 &read
  78. sockread &read
  79. }
  80. }
  81. }
  82.  
  83. on *:sockclose:strawpoll.*:{
  84. var %header = $hget($sockname,headerfile)
  85. var %data = $hget($sockname,datafile)
  86. var %signal = $hget($sockname,signal)
  87. var %params = $hget($sockname,params)
  88.  
  89. if (%signal) .signal %signal 0 $sockname %header %data %params
  90. else {
  91. hfree -w $sockname
  92. .remove %header | .remove %data
  93. }
  94. }
  95.  
  96. alias urlencode return $regsubex($1-,/([^A-Z0-9])/gi,$+(%,$base($asc(\1),10,16)))
  97. on *:text:!poll *:#:{
  98. if ($nick isop #) return
  99. var %regex = /(?:(.+?)\s*[:-]+\s*|())(.+?)$/iS
  100. if ($regex($strip($2-),%regex)) {
  101. var %title = $iif($regml(1),$v1,Poll)
  102. var %options = $regsubex($regml(2),/\s* $+ $chr(44) $+ \s*/g,$chr(44))
  103. }
  104. else return
  105.  
  106. noop $strawpoll.create(#,%title,%options)
  107. }
  108.  
  109. alias strawpoll.create {
  110. var %chan = $1, %title = $urlencode($2), %options
  111. var %multi = true, %permissive = false
  112.  
  113. var %i = 1, %n = $numtok($3,44)
  114. while (%i <= %n) {
  115. %options = %options $+ &options[]= $+ $urlencode($gettok($3,%i,44))
  116. inc %i
  117. }
  118.  
  119. var %sockname = strawpoll. $+ $ticks
  120. hfree -w %sockname | hmake %sockname
  121. hadd %sockname headerfile %sockname $+ .header.txt
  122. hadd %sockname datafile %sockname $+ .data.txt
  123.  
  124. hadd %sockname host strawpoll.me
  125. hadd %sockname request /ajax/new-poll
  126. hadd %sockname method POST
  127. hadd %sockname data $+(title=,%title,%options,&multi=,%multi,&permissive=,%permissive)
  128. hadd %sockname signal strawpoll.create
  129. hadd %sockname params %chan
  130.  
  131. sockopen %sockname $hget(%sockname,host) 80
  132. }
  133.  
  134. on *:signal:strawpoll.create:{
  135. var %err = $1, %sockname = $2, %header = $3, %data = $4, %chan = $5
  136.  
  137. if (* 200 OK iswm $read(%header,1)) && ($regex($read(%data,n,1),(\d+))) {
  138. msg %chan http://strawpoll.me/ $+ $regml(1)
  139. }
  140. else msg %chan Could not create poll.
  141.  
  142. hfree -w %sockname
  143. .remove %header | .remove %data
  144. }
  145.  
  146. on *:sockopen:strawpoll.*:{
  147. var %a = sockwrite -n $sockname
  148. %a $hget($sockname,method) $hget($sockname,request) HTTP/1.0
  149. %a Host: $hget($sockname,host)
  150. %a Connection: close
  151. if ($hget($sockname,data) != $null) {
  152. %a Content-Type: application/x-www-form-urlencoded
  153. %a Content-Length: $len($v1)
  154. }
  155. %a $+($crlf,$hget($sockname,data))
  156. }
  157.  
  158. on *:sockread:strawpoll.*:{
  159. var %header
  160. var %headerfile = $hget($sockname,headerfile)
  161. var %datafile = $hget($sockname,datafile)
  162.  
  163. if (!$hget($sockname,header.complete)) {
  164. sockread %header
  165. while (%header != $null) {
  166. write %headerfile %header
  167. sockread %header
  168. }
  169. if ($sockbr) hadd $sockname header.complete $true
  170. }
  171. if ($hget($sockname,header.complete)) {
  172. sockread &read
  173. while ($sockbr) {
  174. bwrite %datafile -1 -1 &read
  175. sockread &read
  176. }
  177. }
  178. }
  179.  
  180. on *:sockclose:strawpoll.*:{
  181. var %header = $hget($sockname,headerfile)
  182. var %data = $hget($sockname,datafile)
  183. var %signal = $hget($sockname,signal)
  184. var %params = $hget($sockname,params)
  185.  
  186. if (%signal) .signal %signal 0 $sockname %header %data %params
  187. else {
  188. hfree -w $sockname
  189. .remove %header | .remove %data
  190. }
  191. }
  192. alias urlencode return $regsubex($1-,/([^A-Z0-9])/gi,$+(%,$base($asc(\1),10,16)))
Advertisement
Add Comment
Please, Sign In to add comment