1-
1+ require 'net/http'
2+ require 'json'
23
34class CleantalkResponse {
45
@@ -62,12 +63,12 @@ class CleantalkResponse {
6263 #
6364 @js_disabled = nil
6465
65- #
66+ #
6667 #Stop queue message, 1|0
6768 #@var int
6869 #
6970 @stop_queue = nil
70-
71+
7172 #
7273 #Account shuld by deactivated after registration, 1|0
7374 #@var int
@@ -87,12 +88,12 @@ class CleantalkResponse {
8788 #
8889 def initialize ( response = nil , obl = nil )
8990 if ( response . length > 0 )
90- response . each_index { |elem |@elem = response . at ( elem ) }
91+ response . each_index { |elem |@elem = response . at ( elem ) }
9192 else
9293 @errno = obj . errno
9394 @errstr = obj . errstr
9495
95- @errstr = @errstr . gsub ( /.+(\* \* \* .+\* \* \* ).+/ , \1, @errstr )
96+ @errstr = @errstr . gsub ( /.+(\* \* \* .+\* \* \* ).+/ , \1, @errstr )
9697
9798 obj . stop_words . empty ? @stop_words = obj . stop_words : @stop_words = nil
9899 obj . comment . empty ? @comment = obj . comment : @comment = nil
@@ -107,7 +108,264 @@ def initialize(response = nil, obl = nil)
107108 obj . account_status . empty ? @account_status = obj . account_status : @account_status = -1
108109
109110 if ( @errno !== 0 && @errstr !== nil && @comment === nil )
110- @comment = '*** ' + @errstr + ' Antispam service cleantalk.org * **'
111+ @comment = '*** ' + @errstr + ' Antispam service cleantalk.org # **'
111112 end
112113 end
114+ end
115+
116+ #
117+ # Request class
118+ #
119+ class CleantalkRequest {
120+
121+ #
122+ # All http request headers
123+ # @var string
124+ #
125+ @all_headers = nil;
126+
127+ #
128+ # Last error number
129+ # @var integer
130+ #
131+ @last_error_no = nil;
132+
133+ #
134+ # Last error time
135+ # @var integer
136+ #
137+ @last_error_time = nil ;
138+
139+ #
140+ # Last error text
141+ # @var string
142+ #
143+ @last_error_text = nil ;
144+
145+ #
146+ # User message
147+ # @var string
148+ #
149+ @message = nil ;
150+
151+ #
152+ # Post example with last comments
153+ # @var string
154+ #
155+ @example = nil ;
156+
157+ #
158+ # Auth key
159+ # @var string
160+ #
161+ @auth_key = nil ;
162+
163+ #
164+ # Engine
165+ # @var string
166+ #
167+ @agent = nil ;
168+
169+ #
170+ # Is check for stoplist,
171+ # valid are 0|1
172+ # @var int
173+ #
174+ @stoplist_check = nil ;
175+
176+ #
177+ # Language server response,
178+ # valid are 'en' or 'ru'
179+ # @var string
180+ #
181+ @response_lang = nil ;
182+
183+ #
184+ # User IP
185+ # @var strings
186+ #
187+ @sender_ip = nil ;
188+
189+ #
190+ # User email
191+ # @var strings
192+ #
193+ @sender_email = nil ;
194+
195+ #
196+ # User nickname
197+ # @var string
198+ #
199+ @sender_nickname = nil ;
200+
201+ #
202+ # Sender info JSON string
203+ # @var string
204+ #
205+ @sender_info = nil ;
206+
207+ #
208+ # Post info JSON string
209+ # @var string
210+ #
211+ @post_info = nil ;
212+
213+ #
214+ # Is allow links, email and icq,
215+ # valid are 1|0
216+ # @var int
217+ #
218+ @allow_links = nil ;
219+
220+ #
221+ # Time form filling
222+ # @var int
223+ #
224+ @submit_time = nil ;
225+
226+ #
227+ # Is enable Java Script,
228+ # valid are 0|1|2
229+ # Status:
230+ # nil - JS html code not inserted into phpBB templates
231+ # 0 - JS disabled at the client browser
232+ # 1 - JS enabled at the client broswer
233+ # @var int
234+ #
235+ @js_on = nil ;
236+
237+ #
238+ # user time zone
239+ # @var string
240+ #
241+ @tz = nil ;
242+
243+ #
244+ # Feedback string,
245+ # valid are 'requset_id:(1|0)'
246+ # @var string
247+ #
248+ @feedback = nil ;
249+
250+ #
251+ # Phone number
252+ # @var type
253+ #
254+ @phone = nil ;
255+
256+ #
257+ # Fill params with constructor
258+ # @param type $params
259+ #
260+ def initialize ( params = nil )
261+ if ( params . length >0 )
262+ params . each_index { |elem |@elem = params . at ( elem ) }
263+ end
264+ end
265+ end
266+
267+ #
268+ # Cleantalk class create request
269+ #
270+ class Cleantalk {
271+
272+ #
273+ # Debug level
274+ # @var int
275+ #
276+ @debug = 0 ;
277+
278+ #
279+ # Server connection timeout in seconds
280+ # @var int
281+ #
282+ @server_timeout = 3 ;
283+
284+ #
285+ # Cleantalk server url
286+ # @var string
287+ #
288+ @server_url = null ;
289+
290+ #
291+ # Last work url
292+ # @var string
293+ #
294+ @work_url = null ;
295+
296+ #
297+ # WOrk url ttl
298+ # @var int
299+ #
300+ @server_ttl = null ;
301+
302+ #
303+ # Time wotk_url changer
304+ # @var int
305+ #
306+ @server_changed = null ;
307+
308+ #
309+ # Flag is change server url
310+ # @var bool
311+ #
312+ @server_change = false ;
313+
314+ #
315+ # Codepage of the data
316+ # @var bool
317+ #
318+ @data_codepage = null ;
319+
320+ #
321+ # API version to use
322+ # @var string
323+ #
324+ @api_version = '/api2.0' ;
325+
326+ #
327+ # Use https connection to servers
328+ # @var bool
329+ #
330+ @ssl_on = false ;
331+
332+ #
333+ # Minimal server response in miliseconds to catch the server
334+ #
335+ #
336+ @min_server_timeout = 50 ;
337+
338+ #
339+ # Function checks whether it is possible to publish the message
340+ # @param CleantalkRequest $request
341+ # @return type
342+ #
343+ def isAllowMessage ( request )
344+ uri = URI 'https://moderate.cleantalk.org/api2.0'
345+ connection = Net ::HTTP . new uri . host , uri . port
346+ http_request = Net ::HTTP ::Post . new uri
347+ form_data = Array . new
348+ request . each_index { |elem |form_data . elem = params . at ( elem ) }
349+ form_data { :method_name => 'check_message' }
350+ http_request . set_form form_data , 'multipart/form-data'
351+ response = connection . request http_request
352+ return JSON . parse ( response . entity )
353+ end
354+
355+ #
356+ # Function checks whether it is possible to publish the message
357+ # @param CleantalkRequest $request
358+ # @return type
359+ #
360+ def isAllowUser ( request )
361+ uri = URI 'https://moderate.cleantalk.org/api2.0'
362+ connection = Net ::HTTP . new uri . host , uri . port
363+ http_request = Net ::HTTP ::Post . new uri
364+ form_data = Array . new
365+ request . each_index { |elem |form_data . elem = params . at ( elem ) }
366+ form_data { :method_name => 'check_newuser' }
367+ http_request . set_form form_data , 'multipart/form-data'
368+ response = connection . request http_request
369+ return JSON . parse ( response . entity )
370+ end
113371end
0 commit comments