Commit ecc9032af5ecf609e7d7c4be14ec4d0d8cb70de3
1 parent
e6c893a2
Exists in
master
and in
11 other branches
rails4: removed unused rakismet from vendor
It is only used by anti_spam plugin and it is specified on its Gemfile
Showing
21 changed files
with
0 additions
and
921 deletions
Show diff stats
vendor/plugins/rakismet/CHANGELOG
| ... | ... | @@ -1,35 +0,0 @@ |
| 1 | -* Clean up gemspec and load paths [Steven Harman] | |
| 2 | -* Add Akismet is_test param [Steven Harman] | |
| 3 | -* Add Akismet user_role attribute [Steven Harman] | |
| 4 | -= 1.2.1 | |
| 5 | -* Fix deprecated usage of HTTPResponse for Ruby 1.9.3 [Leonid Shevtsov] | |
| 6 | -= 1.2.0 | |
| 7 | -* Rakismet attribute mappings are now inheritable | |
| 8 | -= 1.1.2 | |
| 9 | -* Explicitly load version | |
| 10 | -= 1.1.1 | |
| 11 | -* Fix SafeBuffer error under Rails 3.0.8 and 3.0.9 [Brandon Ferguson] | |
| 12 | -* Readme cleanup [Zeke Sikelianos] | |
| 13 | -* Drop Jeweler in favor of Bundler's gem tasks | |
| 14 | -= 1.1.0 | |
| 15 | -* Add HTTP Proxy support [Francisco Trindade] | |
| 16 | -= 1.0.1 | |
| 17 | -* Fix hash access for Ruby 1.9 [Alex Crichton] | |
| 18 | -= 1.0.0 | |
| 19 | -* Update for Rails 3 | |
| 20 | -* Remove filters and replace with middleware | |
| 21 | -* Remove initializers and replace with Railtie | |
| 22 | -= 0.4.0 | |
| 23 | -* Rakismet is no longer injected into ActiveRecord or ActionController | |
| 24 | -* API changes to support newly decoupled modules | |
| 25 | -* Use Jeweler to manage gemspec | |
| 26 | -= 0.3.6 | |
| 27 | -* Allow attributes to fall through to methods or AR attributes | |
| 28 | -= 0.3.5 | |
| 29 | -* Added gemspec and rails/init.rb so rakismet can work as a gem [Michael Air] | |
| 30 | -* Added generator template and manifest [Michael Air] | |
| 31 | -= 0.3.0 | |
| 32 | -* Abstract out Rakismet version string | |
| 33 | -* Set default Akismet Host | |
| 34 | -* Abstract out the Akismet host [Mike Burns] | |
| 35 | -* Started keeping a changelog :P |
vendor/plugins/rakismet/Gemfile
vendor/plugins/rakismet/MIT-LICENSE
| ... | ... | @@ -1,20 +0,0 @@ |
| 1 | -Copyright (c) 2008 Josh French | |
| 2 | - | |
| 3 | -Permission is hereby granted, free of charge, to any person obtaining | |
| 4 | -a copy of this software and associated documentation files (the | |
| 5 | -"Software"), to deal in the Software without restriction, including | |
| 6 | -without limitation the rights to use, copy, modify, merge, publish, | |
| 7 | -distribute, sublicense, and/or sell copies of the Software, and to | |
| 8 | -permit persons to whom the Software is furnished to do so, subject to | |
| 9 | -the following conditions: | |
| 10 | - | |
| 11 | -The above copyright notice and this permission notice shall be | |
| 12 | -included in all copies or substantial portions of the Software. | |
| 13 | - | |
| 14 | -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | |
| 15 | -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | |
| 16 | -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | |
| 17 | -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE | |
| 18 | -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION | |
| 19 | -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION | |
| 20 | -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
vendor/plugins/rakismet/README.md
| ... | ... | @@ -1,229 +0,0 @@ |
| 1 | -Rakismet | |
| 2 | -======== | |
| 3 | - | |
| 4 | -**Akismet** (<http://akismet.com/>) is a collaborative spam filtering service. | |
| 5 | -**Rakismet** is easy Akismet integration with Rails and rack apps. TypePad's | |
| 6 | -AntiSpam service and generic Akismet endpoints are supported. | |
| 7 | - | |
| 8 | -Compatibility | |
| 9 | -============= | |
| 10 | - | |
| 11 | -**Rakismet >= 1.0.0** work with Rails 3 and other Rack-based frameworks. | |
| 12 | - | |
| 13 | -**Rakismet <= 0.4.2** is compatible with Rails 2. | |
| 14 | - | |
| 15 | -Getting Started | |
| 16 | -=============== | |
| 17 | - | |
| 18 | -Once you've installed the Rakismet gem and added it to your application's Gemfile, | |
| 19 | -you'll need an API key. Head on over to http://akismet.com/signup/ and sign up | |
| 20 | -for a new username. | |
| 21 | - | |
| 22 | -Configure the Rakismet key and the URL of your application by setting the following | |
| 23 | -in application.rb: | |
| 24 | - | |
| 25 | -```ruby | |
| 26 | -config.rakismet.key = 'your wordpress key' | |
| 27 | -config.rakismet.url = 'http://yourdomain.com/' | |
| 28 | -``` | |
| 29 | - | |
| 30 | -or an initializer, for example `config/initializers/rakismet.rb`: | |
| 31 | - | |
| 32 | -```ruby | |
| 33 | -YourApp::Application.config.rakismet.key = 'your wordpress key' | |
| 34 | -YourApp::Application.config.rakismet.url = 'http://yourdomain.com/' | |
| 35 | -``` | |
| 36 | - | |
| 37 | -If you wish to use another Akismet-compatible API provider such as TypePad's | |
| 38 | -antispam service, you'll also need to set `config.rakismet.host` to your service | |
| 39 | -provider's endpoint. | |
| 40 | - | |
| 41 | -If you want to use a proxy to access akismet (i.e. your application is behind a | |
| 42 | -firewall), set the proxy_host and proxy_port option. | |
| 43 | - | |
| 44 | -```ruby | |
| 45 | -config.rakismet.proxy_host = 'http://yourdomain.com/' | |
| 46 | -config.rakismet.proxy_port = '8080' | |
| 47 | -``` | |
| 48 | - | |
| 49 | -Checking For Spam | |
| 50 | ------------------ | |
| 51 | - | |
| 52 | -First, introduce Rakismet to your model: | |
| 53 | - | |
| 54 | -```ruby | |
| 55 | -class Comment | |
| 56 | - include Rakismet::Model | |
| 57 | -end | |
| 58 | -``` | |
| 59 | - | |
| 60 | -With Rakismet mixed in to your model, you'll get three instance methods for interacting with | |
| 61 | -Akismet: | |
| 62 | - | |
| 63 | - * `spam?` submits the comment to Akismet and returns true if Akismet thinks the comment is spam, false if not. | |
| 64 | - * `ham!` resubmits a valid comment that Akismet erroneously marked as spam (marks it as a false positive.) | |
| 65 | - * `spam!` resubmits a spammy comment that Akismet missed (marks it as a false negative.) | |
| 66 | - | |
| 67 | -The `ham!` and `spam!` methods will change the value of `spam?` but their | |
| 68 | -primary purpose is to send feedback to Akismet. The service works best when you | |
| 69 | -help correct the rare mistake; please consider using these methods if you're | |
| 70 | -moderating comments or otherwise reviewing the Akismet responses. | |
| 71 | - | |
| 72 | -Configuring Your Model | |
| 73 | ----------------------- | |
| 74 | - | |
| 75 | -Rakismet sends the following information to the spam-hungry robots at Akismet: | |
| 76 | - | |
| 77 | - author : name submitted with the comment | |
| 78 | - author_url : URL submitted with the comment | |
| 79 | - author_email : email submitted with the comment | |
| 80 | - comment_type : Defaults to comment but you can set it to trackback, pingback, or something more appropriate | |
| 81 | - content : the content submitted | |
| 82 | - permalink : the permanent URL for the entry the comment belongs to | |
| 83 | - user_ip : IP address used to submit this comment | |
| 84 | - user_agent : user agent string | |
| 85 | - referrer : referring URL (note the spelling) | |
| 86 | - | |
| 87 | -By default, Rakismet just looks for attributes or methods on your class that | |
| 88 | -match these names. You don't have to have accessors that match these exactly, | |
| 89 | -however. If yours differ, just tell Rakismet what to call them: | |
| 90 | - | |
| 91 | -```ruby | |
| 92 | -class Comment | |
| 93 | - include Rakismet::Model | |
| 94 | - attr_accessor :commenter_name, :commenter_email | |
| 95 | - rakismet_attrs :author => :commenter_name, :author_email => :commenter_email | |
| 96 | -end | |
| 97 | -``` | |
| 98 | - | |
| 99 | -Or you can pass in a proc, to access associations: | |
| 100 | - | |
| 101 | -```ruby | |
| 102 | -class Comment < ActiveRecord::Base | |
| 103 | - include Rakismet::Model | |
| 104 | - belongs_to :author | |
| 105 | - rakismet_attrs :author => proc { author.name }, | |
| 106 | - :author_email => proc { author.email } | |
| 107 | -end | |
| 108 | -``` | |
| 109 | - | |
| 110 | -You can even hard-code specific fields: | |
| 111 | - | |
| 112 | -```ruby | |
| 113 | -class Trackback | |
| 114 | - include Rakismet::Model | |
| 115 | - rakismet_attrs :comment_type => "trackback" | |
| 116 | -end | |
| 117 | -``` | |
| 118 | - | |
| 119 | -Optional Request Variables | |
| 120 | --------------------------- | |
| 121 | - | |
| 122 | -Akismet wants certain information about the request environment: remote IP, the | |
| 123 | -user agent string, and the HTTP referer when available. Normally, Rakismet | |
| 124 | -asks your model for these. Storing this information on your model allows you to | |
| 125 | -call the `spam?` method at a later time. For instance, maybe you're storing your | |
| 126 | -comments in an administrative queue or processing them with a background job. | |
| 127 | - | |
| 128 | -You don't need to have these three attributes on your model, however. If you | |
| 129 | -choose to omit them, Rakismet will instead look at the current request (if one | |
| 130 | -exists) and take the values from the request object instead. | |
| 131 | - | |
| 132 | -This means that if you are **not storing the request variables**, you must call | |
| 133 | -`spam?` from within the controller action that handles comment submissions. That | |
| 134 | -way the IP, user agent, and referer will belong to the person submitting the | |
| 135 | -comment. If you're not storing the request variables and you call `spam?` at a | |
| 136 | -later time, the request information will be missing or invalid and Akismet won't | |
| 137 | -be able to do its job properly. | |
| 138 | - | |
| 139 | -If you've decided to handle the request variables yourself, you can disable the | |
| 140 | -middleware responsible for tracking the request information by adding this to | |
| 141 | -your app initialization: | |
| 142 | - | |
| 143 | -```ruby | |
| 144 | -config.rakismet.use_middleware = false | |
| 145 | -``` | |
| 146 | - | |
| 147 | -Testing | |
| 148 | -------- | |
| 149 | - | |
| 150 | -Rakismet can be configued to tell Akismet that it should operate in test mode - | |
| 151 | -so Akismet will not change its behavior based on any test API calls, meaning | |
| 152 | -they will have no training effect. That means your tests can be somewhat | |
| 153 | -repeatable in the sense that one test won't influence subsequent calls. | |
| 154 | - | |
| 155 | -You can configure Rakismet for test mode via application.rb: | |
| 156 | - | |
| 157 | -```ruby | |
| 158 | -config.rakismet.test = false # <- default | |
| 159 | -config.rakismet.test = true | |
| 160 | -``` | |
| 161 | - | |
| 162 | -Or via an initializer: | |
| 163 | - | |
| 164 | -```ruby | |
| 165 | -YourApp::Application.config.rakismet.test = false # <- default | |
| 166 | -YourApp::Application.config.rakismet.test = true | |
| 167 | -``` | |
| 168 | - | |
| 169 | -**NOTE**: When running in Rails, Rakismet will run in test mode when your Rails | |
| 170 | -environment is `test` or `development`, unless explictly configured otherwise. | |
| 171 | -Outside of Rails Rakismet defaults to test mode turned **off**. | |
| 172 | - | |
| 173 | - | |
| 174 | -Verifying Responses | |
| 175 | -------------------- | |
| 176 | - | |
| 177 | -If you want to see what's happening behind the scenes, after you call one of | |
| 178 | -`@comment.spam?`, `@comment.spam!` or `@comment.ham!` you can check | |
| 179 | -`@comment.akismet_response`. | |
| 180 | - | |
| 181 | -This will contain the last response from the Akismet server. In the case of | |
| 182 | -`spam?` it should be `true` or `false.` For `spam!` and `ham!` it should be | |
| 183 | -`Feedback received.` If Akismet returned an error instead (e.g. if you left out | |
| 184 | -some required information) this will contain the error message. | |
| 185 | - | |
| 186 | -FAQ | |
| 187 | -=== | |
| 188 | - | |
| 189 | -Why does Akismet think all of my test data is spam? | |
| 190 | ---------------------------------------------------- | |
| 191 | - | |
| 192 | -Akismet needs enough information to decide if your test data is spam or not. | |
| 193 | -Try to supply as much as possible, especially the author name and request | |
| 194 | -variables. | |
| 195 | - | |
| 196 | -How can I simulate a spam submission? | |
| 197 | -------------------------------------- | |
| 198 | - | |
| 199 | -Most people have the opposite problem, where Akismet doesn't think anything is | |
| 200 | -spam. The only guaranteed way to trigger a positive spam response is to set the | |
| 201 | -comment author to "viagra-test-123". | |
| 202 | - | |
| 203 | -If you've done this and `spam?` is still returning false, you're probably | |
| 204 | -missing the user IP or one of the key/url config variables. One way to check is | |
| 205 | -to call `@comment.akismet_response`. If you are missing a required field or | |
| 206 | -there was another error, this will hold the Akismet error message. If your comment | |
| 207 | -was processed normally, this value will simply be `true` or `false`. | |
| 208 | - | |
| 209 | -Can I use Rakismet with a different ORM or framework? | |
| 210 | ------------------------------------------------------ | |
| 211 | - | |
| 212 | -Sure. Rakismet doesn't care what your persistence layer is. It will work with | |
| 213 | -Datamapper, a NoSQL store, or whatever next month's DB flavor is. | |
| 214 | - | |
| 215 | -Rakismet also has no dependencies on Rails or any of its components, and only | |
| 216 | -uses a small Rack middleware object to do some of its magic. Depending on your | |
| 217 | -framework, you may have to modify this slightly and/or manually place it in your | |
| 218 | -stack. | |
| 219 | - | |
| 220 | -You'll also need to set a few config variables by hand. Instead of | |
| 221 | -`config.rakismet.key`, `config.rakismet.url`, and `config.rakismet.host`, set | |
| 222 | -these values directly with `Rakismet.key`, `Rakismet.url`, and `Rakismet.host`. | |
| 223 | - | |
| 224 | ---------------------------------------------------------------------------- | |
| 225 | - | |
| 226 | -If you have any implementation or usage questions, don't hesitate to get in | |
| 227 | -touch: josh@vitamin-j.com. | |
| 228 | - | |
| 229 | -Copyright (c) 2008 Josh French, released under the MIT license |
vendor/plugins/rakismet/Rakefile
vendor/plugins/rakismet/lib/rakismet.rb
| ... | ... | @@ -1,92 +0,0 @@ |
| 1 | -require 'net/http' | |
| 2 | -require 'uri' | |
| 3 | -require 'cgi' | |
| 4 | -require 'yaml' | |
| 5 | - | |
| 6 | -require 'rakismet/model' | |
| 7 | -require 'rakismet/middleware' | |
| 8 | -require 'rakismet/version' | |
| 9 | - | |
| 10 | -if defined?(Rails) && Rails::VERSION::STRING > '3.2.0' | |
| 11 | - require 'rakismet/railtie.rb' | |
| 12 | - $stderr.puts "W: on Rails 3, this vendored version of rakismet should be replaced by a proper dependency" | |
| 13 | -end | |
| 14 | - | |
| 15 | -module Rakismet | |
| 16 | - Request = Struct.new(:user_ip, :user_agent, :referrer) | |
| 17 | - Undefined = Class.new(NameError) | |
| 18 | - | |
| 19 | - class << self | |
| 20 | - attr_accessor :key, :url, :host, :proxy_host, :proxy_port, :test | |
| 21 | - | |
| 22 | - def request | |
| 23 | - @request ||= Request.new | |
| 24 | - end | |
| 25 | - | |
| 26 | - def set_request_vars(env) | |
| 27 | - request.user_ip, request.user_agent, request.referrer = | |
| 28 | - env['REMOTE_ADDR'], env['HTTP_USER_AGENT'], env['HTTP_REFERER'] | |
| 29 | - end | |
| 30 | - | |
| 31 | - def clear_request | |
| 32 | - @request = Request.new | |
| 33 | - end | |
| 34 | - | |
| 35 | - def headers | |
| 36 | - @headers ||= begin | |
| 37 | - user_agent = "Rakismet/#{Rakismet::VERSION}" | |
| 38 | - user_agent = "Rails/#{Rails.version} | " + user_agent if defined?(Rails) | |
| 39 | - { 'User-Agent' => user_agent, 'Content-Type' => 'application/x-www-form-urlencoded' } | |
| 40 | - end | |
| 41 | - end | |
| 42 | - | |
| 43 | - def validate_key | |
| 44 | - validate_config | |
| 45 | - akismet = URI.parse(verify_url) | |
| 46 | - response = Net::HTTP::Proxy(proxy_host, proxy_port).start(akismet.host) do |http| | |
| 47 | - data = "key=#{Rakismet.key}&blog=#{Rakismet.url}" | |
| 48 | - http.post(akismet.path, data, Rakismet.headers) | |
| 49 | - end | |
| 50 | - @valid_key = (response.body == 'valid') | |
| 51 | - end | |
| 52 | - | |
| 53 | - def valid_key? | |
| 54 | - @valid_key == true | |
| 55 | - end | |
| 56 | - | |
| 57 | - def akismet_call(function, args={}) | |
| 58 | - validate_config | |
| 59 | - args.merge!(:blog => Rakismet.url, :is_test => Rakismet.test_mode) | |
| 60 | - akismet = URI.parse(call_url(function)) | |
| 61 | - response = Net::HTTP::Proxy(proxy_host, proxy_port).start(akismet.host) do |http| | |
| 62 | - params = args.map do |k,v| | |
| 63 | - param = v.class < String ? v.to_str : v.to_s # for ActiveSupport::SafeBuffer and Nil, respectively | |
| 64 | - "#{k}=#{CGI.escape(param)}" | |
| 65 | - end | |
| 66 | - http.post(akismet.path, params.join('&'), Rakismet.headers) | |
| 67 | - end | |
| 68 | - response.body | |
| 69 | - end | |
| 70 | - | |
| 71 | - protected | |
| 72 | - | |
| 73 | - def verify_url | |
| 74 | - "http://#{Rakismet.host}/1.1/verify-key" | |
| 75 | - end | |
| 76 | - | |
| 77 | - def call_url(function) | |
| 78 | - "http://#{Rakismet.key}.#{Rakismet.host}/1.1/#{function}" | |
| 79 | - end | |
| 80 | - | |
| 81 | - def validate_config | |
| 82 | - raise Undefined, "Rakismet.key is not defined" if Rakismet.key.nil? || Rakismet.key.empty? | |
| 83 | - raise Undefined, "Rakismet.url is not defined" if Rakismet.url.nil? || Rakismet.url.empty? | |
| 84 | - raise Undefined, "Rakismet.host is not defined" if Rakismet.host.nil? || Rakismet.host.empty? | |
| 85 | - end | |
| 86 | - | |
| 87 | - def test_mode | |
| 88 | - test ? 1 : 0 | |
| 89 | - end | |
| 90 | - end | |
| 91 | - | |
| 92 | -end |
vendor/plugins/rakismet/lib/rakismet/middleware.rb
vendor/plugins/rakismet/lib/rakismet/model.rb
| ... | ... | @@ -1,86 +0,0 @@ |
| 1 | -module Rakismet | |
| 2 | - module Model | |
| 3 | - | |
| 4 | - def self.included(base) | |
| 5 | - base.class_eval do | |
| 6 | - attr_accessor :akismet_response | |
| 7 | - class << self; attr_accessor :akismet_attrs; end | |
| 8 | - extend ClassMethods | |
| 9 | - include InstanceMethods | |
| 10 | - self.rakismet_attrs | |
| 11 | - end | |
| 12 | - end | |
| 13 | - | |
| 14 | - module ClassMethods | |
| 15 | - def rakismet_attrs(args={}) | |
| 16 | - self.akismet_attrs ||= {} | |
| 17 | - [:comment_type, :author, :author_url, :author_email, :content, :user_role].each do |field| | |
| 18 | - # clunky, but throwing around +type+ will break your heart | |
| 19 | - fieldname = field.to_s =~ %r(^comment_) ? field : "comment_#{field}".intern | |
| 20 | - self.akismet_attrs[fieldname] = args.delete(field) || field | |
| 21 | - end | |
| 22 | - [:user_ip, :user_agent, :referrer].each do |field| | |
| 23 | - self.akismet_attrs[field] = args.delete(field) || field | |
| 24 | - end | |
| 25 | - args.each_pair do |f,v| | |
| 26 | - self.akismet_attrs[f] = v | |
| 27 | - end | |
| 28 | - end | |
| 29 | - | |
| 30 | - def inherited(subclass) | |
| 31 | - super | |
| 32 | - subclass.rakismet_attrs akismet_attrs.dup | |
| 33 | - end | |
| 34 | - end | |
| 35 | - | |
| 36 | - module InstanceMethods | |
| 37 | - def spam? | |
| 38 | - if instance_variable_defined? :@_spam | |
| 39 | - @_spam | |
| 40 | - else | |
| 41 | - data = akismet_data | |
| 42 | - self.akismet_response = Rakismet.akismet_call('comment-check', data) | |
| 43 | - @_spam = self.akismet_response == 'true' | |
| 44 | - end | |
| 45 | - end | |
| 46 | - | |
| 47 | - def spam! | |
| 48 | - Rakismet.akismet_call('submit-spam', akismet_data) | |
| 49 | - @_spam = true | |
| 50 | - end | |
| 51 | - | |
| 52 | - def ham! | |
| 53 | - Rakismet.akismet_call('submit-ham', akismet_data) | |
| 54 | - @_spam = false | |
| 55 | - end | |
| 56 | - | |
| 57 | - private | |
| 58 | - | |
| 59 | - def akismet_data | |
| 60 | - akismet = self.class.akismet_attrs.keys.inject({}) do |data,attr| | |
| 61 | - mapped_field = self.class.akismet_attrs[attr] | |
| 62 | - data.merge attr => if mapped_field.is_a?(Proc) | |
| 63 | - instance_eval(&mapped_field) | |
| 64 | - elsif !mapped_field.nil? && respond_to?(mapped_field) | |
| 65 | - send(mapped_field) | |
| 66 | - elsif not [:comment_type, :author, :author_email, | |
| 67 | - :author_url, :content, :user_role, | |
| 68 | - :user_ip, :referrer, | |
| 69 | - :user_agent].include?(mapped_field) | |
| 70 | - # we've excluded any fields that appear to | |
| 71 | - # have their default unmapped values | |
| 72 | - mapped_field | |
| 73 | - elsif respond_to?(attr) | |
| 74 | - send(attr) | |
| 75 | - elsif Rakismet.request.respond_to?(attr) | |
| 76 | - Rakismet.request.send(attr) | |
| 77 | - end | |
| 78 | - end | |
| 79 | - akismet.delete_if { |k,v| v.nil? || v.empty? } | |
| 80 | - akismet[:comment_type] ||= 'comment' | |
| 81 | - akismet | |
| 82 | - end | |
| 83 | - end | |
| 84 | - | |
| 85 | - end | |
| 86 | -end |
vendor/plugins/rakismet/lib/rakismet/railtie.rb
| ... | ... | @@ -1,22 +0,0 @@ |
| 1 | -require 'rails' | |
| 2 | -require 'rakismet' | |
| 3 | - | |
| 4 | -module Rakismet | |
| 5 | - class Railtie < Rails::Railtie | |
| 6 | - | |
| 7 | - config.rakismet = ActiveSupport::OrderedOptions.new | |
| 8 | - config.rakismet.host = 'rest.akismet.com' | |
| 9 | - config.rakismet.use_middleware = true | |
| 10 | - | |
| 11 | - initializer 'rakismet.setup', :after => :load_config_initializers do |app| | |
| 12 | - Rakismet.key = app.config.rakismet[:key] | |
| 13 | - Rakismet.url = app.config.rakismet[:url] | |
| 14 | - Rakismet.host = app.config.rakismet[:host] | |
| 15 | - Rakismet.proxy_host = app.config.rakismet[:proxy_host] | |
| 16 | - Rakismet.proxy_port = app.config.rakismet[:proxy_port] | |
| 17 | - Rakismet.test = app.config.rakismet.fetch(:test) { Rails.env.test? || Rails.env.development? } | |
| 18 | - app.middleware.use Rakismet::Middleware if app.config.rakismet.use_middleware | |
| 19 | - end | |
| 20 | - | |
| 21 | - end | |
| 22 | -end |
vendor/plugins/rakismet/lib/rakismet/version.rb
vendor/plugins/rakismet/rakismet.gemspec
| ... | ... | @@ -1,25 +0,0 @@ |
| 1 | -# -*- encoding: utf-8 -*- | |
| 2 | -require File.expand_path('../lib/rakismet/version', __FILE__) | |
| 3 | - | |
| 4 | -Gem::Specification.new do |s| | |
| 5 | - s.name = "rakismet" | |
| 6 | - s.version = Rakismet::VERSION | |
| 7 | - s.platform = Gem::Platform::RUBY | |
| 8 | - s.authors = ["Josh French"] | |
| 9 | - s.email = "josh@vitamin-j.com" | |
| 10 | - s.homepage = "http://github.com/joshfrench/rakismet" | |
| 11 | - s.summary = "Akismet and TypePad AntiSpam integration for Rails." | |
| 12 | - s.description = "Rakismet is the easiest way to integrate Akismet or TypePad's AntiSpam into your Rails app." | |
| 13 | - s.date = "2012-04-22" | |
| 14 | - | |
| 15 | - s.rubyforge_project = "rakismet" | |
| 16 | - s.add_development_dependency "rake" | |
| 17 | - s.add_development_dependency "rspec", "~> 2.11" | |
| 18 | - | |
| 19 | - s.files = `git ls-files`.split("\n") | |
| 20 | - s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n") | |
| 21 | - s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) } | |
| 22 | - s.require_paths = ["lib"] | |
| 23 | - s.extra_rdoc_files = ["README.md"] | |
| 24 | -end | |
| 25 | - |
vendor/plugins/rakismet/spec/.rspec
| ... | ... | @@ -1 +0,0 @@ |
| 1 | ---color |
vendor/plugins/rakismet/spec/models/block_params_spec.rb
| ... | ... | @@ -1,25 +0,0 @@ |
| 1 | -require 'spec_helper' | |
| 2 | - | |
| 3 | -PROC = proc { author.reverse } | |
| 4 | - | |
| 5 | -class BlockAkismetModel | |
| 6 | - include Rakismet::Model | |
| 7 | - rakismet_attrs :author => PROC | |
| 8 | -end | |
| 9 | - | |
| 10 | -describe BlockAkismetModel do | |
| 11 | - | |
| 12 | - before do | |
| 13 | - @block = BlockAkismetModel.new | |
| 14 | - comment_attrs.each_pair { |k,v| @block.stub!(k).and_return(v) } | |
| 15 | - end | |
| 16 | - | |
| 17 | - it "should accept a block" do | |
| 18 | - BlockAkismetModel.akismet_attrs[:comment_author].should eql(PROC) | |
| 19 | - end | |
| 20 | - | |
| 21 | - it "should eval block with self = instance" do | |
| 22 | - data = @block.send(:akismet_data) | |
| 23 | - data[:comment_author].should eql(comment_attrs[:author].reverse) | |
| 24 | - end | |
| 25 | -end |
vendor/plugins/rakismet/spec/models/custom_params_spec.rb
| ... | ... | @@ -1,20 +0,0 @@ |
| 1 | -require 'spec_helper' | |
| 2 | - | |
| 3 | -MAPPED_PARAMS = { :comment_type => :type2, :author => :author2, :content => :content2, | |
| 4 | - :author_email => :author_email2, :author_url => :author_url2, | |
| 5 | - :user_role => :user_role2 } | |
| 6 | - | |
| 7 | -class CustomAkismetModel | |
| 8 | - include Rakismet::Model | |
| 9 | - rakismet_attrs MAPPED_PARAMS.dup | |
| 10 | -end | |
| 11 | - | |
| 12 | - | |
| 13 | -describe CustomAkismetModel do | |
| 14 | - it "should override default mappings" do | |
| 15 | - [:comment_type, :author, :author_url, :author_email, :content, :user_role].each do |field| | |
| 16 | - fieldname = field.to_s =~ %r(^comment_) ? field : "comment_#{field}".intern | |
| 17 | - CustomAkismetModel.akismet_attrs[fieldname].should eql(MAPPED_PARAMS[field]) | |
| 18 | - end | |
| 19 | - end | |
| 20 | -end |
vendor/plugins/rakismet/spec/models/extended_params_spec.rb
| ... | ... | @@ -1,16 +0,0 @@ |
| 1 | -require 'spec_helper' | |
| 2 | - | |
| 3 | -EXTRA = { :extra => :extra, :another => lambda { } } | |
| 4 | - | |
| 5 | -class ExtendedAkismetModel | |
| 6 | - include Rakismet::Model | |
| 7 | - rakismet_attrs EXTRA.dup | |
| 8 | -end | |
| 9 | - | |
| 10 | -describe ExtendedAkismetModel do | |
| 11 | - it "should include additional attributes" do | |
| 12 | - [:extra, :another].each do |field| | |
| 13 | - ExtendedAkismetModel.akismet_attrs[field].should eql(EXTRA[field]) | |
| 14 | - end | |
| 15 | - end | |
| 16 | -end |
vendor/plugins/rakismet/spec/models/rakismet_model_spec.rb
| ... | ... | @@ -1,98 +0,0 @@ |
| 1 | -require 'spec_helper' | |
| 2 | - | |
| 3 | -describe AkismetModel do | |
| 4 | - | |
| 5 | - before do | |
| 6 | - @model = AkismetModel.new | |
| 7 | - comment_attrs.each_pair { |k,v| @model.stub!(k).and_return(v) } | |
| 8 | - end | |
| 9 | - | |
| 10 | - it "should have default mappings" do | |
| 11 | - [:comment_type, :author, :author_email, :author_url, :content, :user_role].each do |field| | |
| 12 | - fieldname = field.to_s =~ %r(^comment_) ? field : "comment_#{field}".intern | |
| 13 | - AkismetModel.akismet_attrs[fieldname].should eql(field) | |
| 14 | - end | |
| 15 | - end | |
| 16 | - | |
| 17 | - it "should have request mappings" do | |
| 18 | - [:user_ip, :user_agent, :referrer].each do |field| | |
| 19 | - AkismetModel.akismet_attrs[field].should eql(field) | |
| 20 | - end | |
| 21 | - end | |
| 22 | - | |
| 23 | - it "should populate comment type" do | |
| 24 | - @model.send(:akismet_data)[:comment_type].should == comment_attrs[:comment_type] | |
| 25 | - end | |
| 26 | - | |
| 27 | - describe ".spam?" do | |
| 28 | - | |
| 29 | - it "should use request variables from Rakismet.request if absent in model" do | |
| 30 | - [:user_ip, :user_agent, :referrer].each do |field| | |
| 31 | - @model.should_not respond_to(:field) | |
| 32 | - end | |
| 33 | - Rakismet.stub!(:request).and_return(request) | |
| 34 | - Rakismet.should_receive(:akismet_call). | |
| 35 | - with('comment-check', akismet_attrs.merge(:user_ip => '127.0.0.1', | |
| 36 | - :user_agent => 'RSpec', | |
| 37 | - :referrer => 'http://test.host/referrer')) | |
| 38 | - @model.spam? | |
| 39 | - end | |
| 40 | - | |
| 41 | - it "should cache result of #spam?" do | |
| 42 | - Rakismet.should_receive(:akismet_call).once | |
| 43 | - @model.spam? | |
| 44 | - @model.spam? | |
| 45 | - end | |
| 46 | - | |
| 47 | - it "should be true if comment is spam" do | |
| 48 | - Rakismet.stub!(:akismet_call).and_return('true') | |
| 49 | - @model.should be_spam | |
| 50 | - end | |
| 51 | - | |
| 52 | - it "should be false if comment is not spam" do | |
| 53 | - Rakismet.stub!(:akismet_call).and_return('false') | |
| 54 | - @model.should_not be_spam | |
| 55 | - end | |
| 56 | - | |
| 57 | - it "should set akismet_response" do | |
| 58 | - Rakismet.stub!(:akismet_call).and_return('response') | |
| 59 | - @model.spam? | |
| 60 | - @model.akismet_response.should eql('response') | |
| 61 | - end | |
| 62 | - | |
| 63 | - it "should not throw an error if request vars are missing" do | |
| 64 | - Rakismet.stub!(:request).and_return(empty_request) | |
| 65 | - lambda { @model.spam? }.should_not raise_error(NoMethodError) | |
| 66 | - end | |
| 67 | - end | |
| 68 | - | |
| 69 | - | |
| 70 | - describe ".spam!" do | |
| 71 | - it "should call Base.akismet_call with submit-spam" do | |
| 72 | - Rakismet.should_receive(:akismet_call).with('submit-spam', akismet_attrs) | |
| 73 | - @model.spam! | |
| 74 | - end | |
| 75 | - | |
| 76 | - it "should mutate #spam?" do | |
| 77 | - Rakismet.stub!(:akismet_call) | |
| 78 | - @model.instance_variable_set(:@_spam, false) | |
| 79 | - @model.spam! | |
| 80 | - @model.should be_spam | |
| 81 | - end | |
| 82 | - end | |
| 83 | - | |
| 84 | - describe ".ham!" do | |
| 85 | - it "should call Base.akismet_call with submit-ham" do | |
| 86 | - Rakismet.should_receive(:akismet_call).with('submit-ham', akismet_attrs) | |
| 87 | - @model.ham! | |
| 88 | - end | |
| 89 | - | |
| 90 | - it "should mutate #spam?" do | |
| 91 | - Rakismet.stub!(:akismet_call) | |
| 92 | - @model.instance_variable_set(:@_spam, true) | |
| 93 | - @model.ham! | |
| 94 | - @model.should_not be_spam | |
| 95 | - end | |
| 96 | - end | |
| 97 | - | |
| 98 | -end |
vendor/plugins/rakismet/spec/models/request_params_spec.rb
| ... | ... | @@ -1,23 +0,0 @@ |
| 1 | -require 'spec_helper' | |
| 2 | - | |
| 3 | -class RequestParams | |
| 4 | - include Rakismet::Model | |
| 5 | - attr_accessor :user_ip, :user_agent, :referrer | |
| 6 | -end | |
| 7 | - | |
| 8 | -describe RequestParams do | |
| 9 | - before do | |
| 10 | - @model = RequestParams.new | |
| 11 | - attrs = comment_attrs(:user_ip => '192.168.0.1', :user_agent => 'Rakismet', :referrer => 'http://localhost/referrer') | |
| 12 | - attrs.each_pair { |k,v| @model.stub!(k).and_return(v) } | |
| 13 | - end | |
| 14 | - | |
| 15 | - it "should use local values even if Rakismet.request is populated" do | |
| 16 | - Rakismet.stub(:request).and_return(request) | |
| 17 | - Rakismet.should_receive(:akismet_call). | |
| 18 | - with('comment-check', akismet_attrs.merge(:user_ip => '192.168.0.1', | |
| 19 | - :user_agent => 'Rakismet', | |
| 20 | - :referrer => 'http://localhost/referrer')) | |
| 21 | - @model.spam? | |
| 22 | - end | |
| 23 | -end |
vendor/plugins/rakismet/spec/models/subclass_spec.rb
| ... | ... | @@ -1,14 +0,0 @@ |
| 1 | -require 'spec_helper' | |
| 2 | - | |
| 3 | -class Subclass < AkismetModel | |
| 4 | -end | |
| 5 | - | |
| 6 | -describe Subclass do | |
| 7 | - it "should inherit parent's rakismet attrs" do | |
| 8 | - Subclass.akismet_attrs.should eql AkismetModel.akismet_attrs # key/value equality | |
| 9 | - end | |
| 10 | - | |
| 11 | - it "should get a new copy of parent's rakismet attrs" do | |
| 12 | - Subclass.akismet_attrs.should_not equal AkismetModel.akismet_attrs # object equality | |
| 13 | - end | |
| 14 | -end |
vendor/plugins/rakismet/spec/rakismet_middleware_spec.rb
| ... | ... | @@ -1,27 +0,0 @@ |
| 1 | -require 'spec_helper' | |
| 2 | - | |
| 3 | -describe Rakismet::Middleware do | |
| 4 | - | |
| 5 | - let(:env) { { 'REMOTE_ADDR' => '127.0.0.1', 'HTTP_USER_AGENT' => 'RSpec', 'HTTP_REFERER' => 'http://test.host/referrer' } } | |
| 6 | - let(:app) { double(:app, :call => nil) } | |
| 7 | - let(:request) { double(:request).as_null_object } | |
| 8 | - | |
| 9 | - before do | |
| 10 | - @middleware = Rakismet::Middleware.new(app) | |
| 11 | - end | |
| 12 | - | |
| 13 | - it "should set set Rakismet.request variables" do | |
| 14 | - Rakismet.stub(:request).and_return(request) | |
| 15 | - request.should_receive(:user_ip=).with('127.0.0.1') | |
| 16 | - request.should_receive(:user_agent=).with('RSpec') | |
| 17 | - request.should_receive(:referrer=).with('http://test.host/referrer') | |
| 18 | - @middleware.call(env) | |
| 19 | - end | |
| 20 | - | |
| 21 | - it "should clear Rakismet.request after request is complete" do | |
| 22 | - @middleware.call(env) | |
| 23 | - Rakismet.request.user_ip.should be_nil | |
| 24 | - Rakismet.request.user_agent.should be_nil | |
| 25 | - Rakismet.request.referrer.should be_nil | |
| 26 | - end | |
| 27 | -end |
vendor/plugins/rakismet/spec/rakismet_spec.rb
| ... | ... | @@ -1,123 +0,0 @@ |
| 1 | -require 'spec_helper' | |
| 2 | - | |
| 3 | -describe Rakismet do | |
| 4 | - | |
| 5 | - def mock_response(body) | |
| 6 | - double(:response, :body => body) | |
| 7 | - end | |
| 8 | - let(:http) { double(:http, :post => mock_response('akismet response')) } | |
| 9 | - | |
| 10 | - before do | |
| 11 | - Rakismet.key = 'dummy-key' | |
| 12 | - Rakismet.url = 'test.localhost' | |
| 13 | - Rakismet.host = 'endpoint.localhost' | |
| 14 | - end | |
| 15 | - | |
| 16 | - describe "proxy host" do | |
| 17 | - it "should have proxy host and port as nil by default" do | |
| 18 | - Rakismet.proxy_host.should be_nil | |
| 19 | - Rakismet.proxy_port.should be_nil | |
| 20 | - end | |
| 21 | - end | |
| 22 | - | |
| 23 | - describe ".validate_config" do | |
| 24 | - it "should raise an error if key is not found" do | |
| 25 | - Rakismet.key = '' | |
| 26 | - lambda { Rakismet.send(:validate_config) }.should raise_error(Rakismet::Undefined) | |
| 27 | - end | |
| 28 | - | |
| 29 | - it "should raise an error if url is not found" do | |
| 30 | - Rakismet.url = '' | |
| 31 | - lambda { Rakismet.send(:validate_config) }.should raise_error(Rakismet::Undefined) | |
| 32 | - end | |
| 33 | - | |
| 34 | - it "should raise an error if host is not found" do | |
| 35 | - Rakismet.host = '' | |
| 36 | - lambda { Rakismet.send(:validate_config) }.should raise_error(Rakismet::Undefined) | |
| 37 | - end | |
| 38 | - end | |
| 39 | - | |
| 40 | - describe ".validate_key" do | |
| 41 | - before (:each) do | |
| 42 | - @proxy = mock(Net::HTTP) | |
| 43 | - Net::HTTP.stub!(:Proxy).and_return(@proxy) | |
| 44 | - end | |
| 45 | - | |
| 46 | - it "should use proxy host and port" do | |
| 47 | - Rakismet.proxy_host = 'proxy_host' | |
| 48 | - Rakismet.proxy_port = 'proxy_port' | |
| 49 | - @proxy.stub!(:start).and_return(mock_response('valid')) | |
| 50 | - Net::HTTP.should_receive(:Proxy).with('proxy_host', 'proxy_port').and_return(@proxy) | |
| 51 | - Rakismet.validate_key | |
| 52 | - end | |
| 53 | - | |
| 54 | - it "should set @@valid_key = true if key is valid" do | |
| 55 | - @proxy.stub!(:start).and_return(mock_response('valid')) | |
| 56 | - Rakismet.validate_key | |
| 57 | - Rakismet.valid_key?.should be_true | |
| 58 | - end | |
| 59 | - | |
| 60 | - it "should set @@valid_key = false if key is invalid" do | |
| 61 | - @proxy.stub!(:start).and_return(mock_response('invalid')) | |
| 62 | - Rakismet.validate_key | |
| 63 | - Rakismet.valid_key?.should be_false | |
| 64 | - end | |
| 65 | - | |
| 66 | - it "should build url with host" do | |
| 67 | - host = "api.antispam.typepad.com" | |
| 68 | - Rakismet.host = host | |
| 69 | - @proxy.should_receive(:start).with(host).and_yield(http) | |
| 70 | - Rakismet.validate_key | |
| 71 | - end | |
| 72 | - end | |
| 73 | - | |
| 74 | - describe ".akismet_call" do | |
| 75 | - before do | |
| 76 | - @proxy = mock(Net::HTTP) | |
| 77 | - Net::HTTP.stub!(:Proxy).and_return(@proxy) | |
| 78 | - @proxy.stub(:start).and_yield(http) | |
| 79 | - end | |
| 80 | - | |
| 81 | - it "should use proxy host and port" do | |
| 82 | - Rakismet.proxy_host = 'proxy_host' | |
| 83 | - Rakismet.proxy_port = 'proxy_port' | |
| 84 | - @proxy.stub!(:start).and_return(mock_response('valid')) | |
| 85 | - Net::HTTP.should_receive(:Proxy).with('proxy_host', 'proxy_port').and_return(@proxy) | |
| 86 | - Rakismet.send(:akismet_call, 'bogus-function') | |
| 87 | - end | |
| 88 | - | |
| 89 | - it "should build url with API key for the correct host" do | |
| 90 | - host = 'api.antispam.typepad.com' | |
| 91 | - Rakismet.host = host | |
| 92 | - @proxy.should_receive(:start).with("#{Rakismet.key}.#{host}") | |
| 93 | - Rakismet.send(:akismet_call, 'bogus-function') | |
| 94 | - end | |
| 95 | - | |
| 96 | - it "should post data to named function" do | |
| 97 | - http.should_receive(:post).with('/1.1/bogus-function', %r(foo=#{CGI.escape 'escape//this'}), Rakismet.headers) | |
| 98 | - Rakismet.send(:akismet_call, 'bogus-function', { :foo => 'escape//this' }) | |
| 99 | - end | |
| 100 | - | |
| 101 | - it "should default to not being in test mode" do | |
| 102 | - http.should_receive(:post).with(anything, %r(is_test=0), anything) | |
| 103 | - Rakismet.send(:akismet_call, 'bogus-function') | |
| 104 | - end | |
| 105 | - | |
| 106 | - it "should be in test mode when configured" do | |
| 107 | - Rakismet.test = true | |
| 108 | - http.should_receive(:post).with(anything, %r(is_test=1), anything) | |
| 109 | - Rakismet.send(:akismet_call, 'bogus-function') | |
| 110 | - end | |
| 111 | - | |
| 112 | - it "should return response.body" do | |
| 113 | - Rakismet.send(:akismet_call, 'bogus-function').should eql('akismet response') | |
| 114 | - end | |
| 115 | - | |
| 116 | - it "should build query string when params are nil" do | |
| 117 | - lambda { | |
| 118 | - Rakismet.send(:akismet_call, 'bogus-function', { :nil_param => nil }) | |
| 119 | - }.should_not raise_error(NoMethodError) | |
| 120 | - end | |
| 121 | - end | |
| 122 | - | |
| 123 | -end |
vendor/plugins/rakismet/spec/spec_helper.rb
| ... | ... | @@ -1,34 +0,0 @@ |
| 1 | -require File.expand_path "lib/rakismet" | |
| 2 | -require 'ostruct' | |
| 3 | - | |
| 4 | -RSpec.configure do |config| | |
| 5 | - config.mock_with :rspec | |
| 6 | -end | |
| 7 | - | |
| 8 | -class AkismetModel | |
| 9 | - include Rakismet::Model | |
| 10 | -end | |
| 11 | - | |
| 12 | -def comment_attrs(attrs={}) | |
| 13 | - { :comment_type => 'test', :author => 'Rails test', | |
| 14 | - :author_email => 'test@test.host', :author_url => 'test.host', | |
| 15 | - :content => 'comment content', :blog => Rakismet.url }.merge(attrs) | |
| 16 | -end | |
| 17 | - | |
| 18 | -def akismet_attrs(attrs={}) | |
| 19 | - { :comment_type => 'test', :comment_author_email => 'test@test.host', | |
| 20 | - :comment_author => 'Rails test', :comment_author_url => 'test.host', | |
| 21 | - :comment_content => 'comment content' }.merge(attrs) | |
| 22 | -end | |
| 23 | - | |
| 24 | -def request | |
| 25 | - OpenStruct.new(:user_ip => '127.0.0.1', | |
| 26 | - :user_agent => 'RSpec', | |
| 27 | - :referrer => 'http://test.host/referrer') | |
| 28 | -end | |
| 29 | - | |
| 30 | -def empty_request | |
| 31 | - OpenStruct.new(:user_ip => nil, | |
| 32 | - :user_agent => nil, | |
| 33 | - :referrer => nil) | |
| 34 | -end | |
| 35 | 0 | \ No newline at end of file |