stop_forum_spam 0.0.1
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/lib/stop_forum_spam.rb +10 -0
- data/lib/stop_forum_spam/spammer.rb +38 -0
- data/spec/spec_helper.rb +4 -0
- data/spec/stop_forum_spam_spec.rb +78 -0
- metadata +58 -0
@@ -0,0 +1,38 @@
|
|
1
|
+
module StopForumSpam
|
2
|
+
class Spammer
|
3
|
+
include HTTParty
|
4
|
+
format :xml
|
5
|
+
base_uri("http://stopforumspam.com:80")
|
6
|
+
|
7
|
+
attr_reader :type, :id, :frequency, :last_seen
|
8
|
+
|
9
|
+
def initialize(id)
|
10
|
+
@id = id
|
11
|
+
|
12
|
+
if @id.match(/\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b/)
|
13
|
+
@type = 'ip'
|
14
|
+
elsif @id.match(/.*@.*/)
|
15
|
+
@type = 'email'
|
16
|
+
else
|
17
|
+
@type = 'username'
|
18
|
+
end
|
19
|
+
|
20
|
+
@frequency = response['response']["frequency"]
|
21
|
+
@last_seen = response['response']["lastseen"]
|
22
|
+
@appears = response['response']['appears'] == 'yes' ? true : false
|
23
|
+
end
|
24
|
+
|
25
|
+
def appears?
|
26
|
+
@appears
|
27
|
+
end
|
28
|
+
|
29
|
+
def self.is_spammer?(id)
|
30
|
+
StopForumSpam::Spammer.new(id).appears?
|
31
|
+
end
|
32
|
+
|
33
|
+
private
|
34
|
+
def response
|
35
|
+
@response ||= self.class.get('/api', :query => {@type.to_sym => @id})
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,78 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe StopForumSpam::Spammer do
|
4
|
+
|
5
|
+
it "should initialize a spammer by ip" do
|
6
|
+
FakeWeb.register_uri(:get, "http://stopforumspam.com/api?username=127.0.0.1",
|
7
|
+
:string => "<response success='true'><type>ip</type><appears>yes</appears><frequency>10</frequency></response>")
|
8
|
+
spammer = StopForumSpam::Spammer.new('127.0.0.1')
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'should initialize a spammer by email' do
|
12
|
+
FakeWeb.register_uri(:get, "http://stopforumspam.com/api?username=test@tester.com",
|
13
|
+
:string => "<response success='true'><type>email</type><appears>yes</appears><frequency>10</frequency></response>")
|
14
|
+
spammer = StopForumSpam::Spammer.new('test@tester.com')
|
15
|
+
spammer.type.should == 'email'
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'should initialize a spammer by username' do
|
19
|
+
FakeWeb.register_uri(:get, "http://stopforumspam.com/api?username=testuser",
|
20
|
+
:string => "<response success='true'><type>username</type><appears>yes</appears><frequency>10</frequency></response>")
|
21
|
+
spammer = StopForumSpam::Spammer.new('testuser')
|
22
|
+
spammer.type.should == 'username'
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'should have attributes from the response' do
|
26
|
+
FakeWeb.register_uri(:get, "http://stopforumspam.com/api?ip=127.0.0.1",
|
27
|
+
:string => "<response success='true'><type>ip</type><appears>yes</appears><lastseen>2009-04-16 23:11:19</lastseen><frequency>41</frequency></response>")
|
28
|
+
spammer = StopForumSpam::Spammer.new('127.0.0.1')
|
29
|
+
spammer.type.should == "ip"
|
30
|
+
spammer.appears?.should be_true
|
31
|
+
spammer.last_seen.should == "2009-04-16 23:11:19"
|
32
|
+
spammer.frequency == '41'
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'should have an id' do
|
36
|
+
FakeWeb.register_uri(:get, "http://stopforumspam.com/api?ip=127.0.0.1",
|
37
|
+
:string => "<response success='true'><type>ip</type><appears>yes</appears><lastseen>2009-04-16 23:11:19</lastseen><frequency>41</frequency></response>")
|
38
|
+
spammer = StopForumSpam::Spammer.new('127.0.0.1')
|
39
|
+
spammer.id.should == '127.0.0.1'
|
40
|
+
end
|
41
|
+
|
42
|
+
it "should find a spammer by ip" do
|
43
|
+
FakeWeb.allow_net_connect = false
|
44
|
+
FakeWeb.register_uri(:get, "http://stopforumspam.com/api?ip=127.0.0.1",
|
45
|
+
:string => "<response success='true'><type>ip</type><appears>yes</appears><lastseen>2009-04-16 23:11:19</lastseen><frequency>41</frequency></response>")
|
46
|
+
StopForumSpam::Spammer.is_spammer?("127.0.0.1").should be_true
|
47
|
+
end
|
48
|
+
|
49
|
+
it "should return false when the spammer is not found by ip" do
|
50
|
+
FakeWeb.register_uri(:get, "http://stopforumspam.com/api?ip=127.0.0.1",
|
51
|
+
:string => "<response success='true'><type>ip</type><appears>no</appears><frequency>0</frequency></response>")
|
52
|
+
StopForumSpam::Spammer.is_spammer?('127.0.0.1').should be_false
|
53
|
+
end
|
54
|
+
|
55
|
+
it "should find a spammer by email" do
|
56
|
+
FakeWeb.register_uri(:get, "http://stopforumspam.com/api?email=test%40tester.com",
|
57
|
+
:string => "<response success='true'><type>email</type><appears>yes</appears><lastseen>2009-06-25 00:24:29</lastseen><frequency>2</frequency></response>")
|
58
|
+
StopForumSpam::Spammer.is_spammer?("test@tester.com").should be_true
|
59
|
+
end
|
60
|
+
|
61
|
+
it "should return false when a spammer is not found by email" do
|
62
|
+
FakeWeb.register_uri(:get, "http://stopforumspam.com/api?email=test%40tester.com",
|
63
|
+
:string => "<response success='true'><type>email</type><appears>no</appears><frequency>0</frequency></response>")
|
64
|
+
StopForumSpam::Spammer.is_spammer?('test@tester.com').should be_false
|
65
|
+
end
|
66
|
+
|
67
|
+
it "should find a spammer by username" do
|
68
|
+
FakeWeb.register_uri(:get, "http://stopforumspam.com/api?username=testuser",
|
69
|
+
:string => "<response success='true'><type>username</type><appears>yes</appears><frequency>10</frequency></response>")
|
70
|
+
StopForumSpam::Spammer.is_spammer?('testuser')
|
71
|
+
end
|
72
|
+
|
73
|
+
it "should return false when a spammer is not found by username" do
|
74
|
+
FakeWeb.register_uri(:get, "http://stopforumspam.com/api?username=testuser",
|
75
|
+
:string => "<response success='true'><type>username</type><appears>no</appears><frequency>0</frequency></response>")
|
76
|
+
StopForumSpam::Spammer.is_spammer?('testuser')
|
77
|
+
end
|
78
|
+
end
|
metadata
ADDED
@@ -0,0 +1,58 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: stop_forum_spam
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Lake Denman
|
8
|
+
autorequire: httparty
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2009-11-07 00:00:00 -05:00
|
13
|
+
default_executable:
|
14
|
+
dependencies: []
|
15
|
+
|
16
|
+
description: Small api wrapper for querying a spammer based on ip, email, or username information stored on http://stopforumspam.com
|
17
|
+
email: lake@lakedenman.com
|
18
|
+
executables: []
|
19
|
+
|
20
|
+
extensions: []
|
21
|
+
|
22
|
+
extra_rdoc_files: []
|
23
|
+
|
24
|
+
files:
|
25
|
+
- lib/stop_forum_spam/spammer.rb
|
26
|
+
- lib/stop_forum_spam.rb
|
27
|
+
- spec/spec_helper.rb
|
28
|
+
- spec/stop_forum_spam_spec.rb
|
29
|
+
has_rdoc: true
|
30
|
+
homepage: http://lakedenman.com
|
31
|
+
licenses: []
|
32
|
+
|
33
|
+
post_install_message:
|
34
|
+
rdoc_options: []
|
35
|
+
|
36
|
+
require_paths:
|
37
|
+
- lib
|
38
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
39
|
+
requirements:
|
40
|
+
- - ">="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: "0"
|
43
|
+
version:
|
44
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - ">="
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: "0"
|
49
|
+
version:
|
50
|
+
requirements: []
|
51
|
+
|
52
|
+
rubyforge_project:
|
53
|
+
rubygems_version: 1.3.5
|
54
|
+
signing_key:
|
55
|
+
specification_version: 3
|
56
|
+
summary: API Wrapper for http://stopforumspam.com
|
57
|
+
test_files: []
|
58
|
+
|