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.
@@ -0,0 +1,10 @@
1
+ $:.unshift(File.dirname(__FILE__)) unless
2
+ $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
3
+
4
+ require 'httparty'
5
+ require 'stop_forum_spam/spammer'
6
+
7
+
8
+ module StopForumSpam
9
+ VERSION = '0.0.1'
10
+ end
@@ -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
@@ -0,0 +1,4 @@
1
+ require 'spec'
2
+ require 'fakeweb'
3
+
4
+ require File.join(File.dirname(__FILE__), '..', 'lib', 'stop_forum_spam')
@@ -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
+