# AdsenseCrawlerForPrivate
Easy way to enable adsense crawler to login and see private or custom pages. Basically one custom login filter.
[
](http://travis-ci.org/holli/adsense_crawler_for_private)
## Usage
**Initialize:** In RAILS_ROOT/config/initializers/adsense_crawler_for_private.rb
```
# Configure adsense_crawler_for_private
AdsenseCrawlerForPrivate.cookie_name = "adsense_crawler"
AdsenseCrawlerForPrivate.cookie_domain = :all
AdsenseCrawlerForPrivate.crawler_name = "test_name"
AdsenseCrawlerForPrivate.crawler_password = "test_password"
# If you are paranoid you can specify ip addresses that are ok to the crawlers to access
# AdsenseCrawlerForPrivate.ip_ranges = [IPAddr.new("127.0.0.1"), IPAddr.new("192.168.0.1/20")]
```
**Routes:**
```
# Give url "http://domain.dom/adsense_crawler_for_private/login" for crawlers to log in
# or directly "http://domain.dom/adsense_crawler_for_private/login?name=test_name&password=test_password"
mount AdsenseCrawlerForPrivate::Engine => "/adsense_crawler_for_private"
```
**Rendering etc usage:** in controller define what to render for crawlers
```
def SomeController << ApplicationController
before_filter :adsense_crawler_private_specific_page # normal authentication filters after this one
def adsense_crawler_private_specific_page
if AdsenseCrawlerForPrivate.login_check(cookies, request)
# here info how to render page for crawler
# e.g render 'crawler_ad_page'
# or creating a dummy login info
return false # so that normal authentication filters etc are not effective
end
end
# Here would be rest of the controller
end
```
Or if you want only to check alongside other authentication you can call in your
own authentication filters AdsenseCrawlerForPrivate.login_check(request)-method
directly.
### Testing your own stuff
You can test your filters by setting cookie in the same way as in AdsenseCrawlerLoginController#login .
If you have enabled ip_ranges option you have to make sure that the ip that tests use is enabled for crawlers.
```
test "here would be a test for logged crawler in functional tests"
# Dummy login for crawler, These should be configured in initializers
crawler_name="adsense_crawler"; crawler_password = "adsense_pass";
@request.remote_addr = ip = "127.0.0.1"
# In some frameworks cookies.signed would be enough. Some will need you to sign the cookie by yourself.
# If you have a better way, let me know
# same as cookies.signed[AdsenseCrawlerForPrivate.cookie_name] = AdsenseCrawlerForPrivate.cookie_hash(crawler_name, ip)
@request.cookies[AdsenseCrawlerForPrivate.cookie_name] =
ActiveSupport::MessageVerifier.new(Dummy::Application.config.secret_token).generate(
AdsenseCrawlerForPrivate.cookie_str(crawler_name, crawler_password, 2.days.from_now, ip))
#Normal test in here
get :index
assert_response :success
assert response.body.include?("Hi normal crawler")
end
test "here would be a test for non-logged crawler"
get :index
assert_response :success
assert response.body.include?("Hi normal user")
end
```
### robots.txt
Remember to update robots.txt if you have previously forbidden adsense to crawl certain pages.
## Requirements
Gem has been tested with ruby 1.8.7, 1.9.2 and Rails 3.1.
[
](http://travis-ci.org/holli/adsense_crawler_for_private)
http://travis-ci.org/#!/holli/adsense_crawler_for_private
## Support
Submit suggestions or feature requests as a GitHub Issue or Pull Request. Remember to update tests. Tests are quite extensive.
## License
Released under the MIT license (http://www.opensource.org/licenses/mit-license.php)