Dependency Status Code Climate

Yandex::Webmaster

Wrapper for Yandex.Webmaster API.

About Yandex.Webmaster

API Documentation

Installation

[sudo] gem install yandex-webmaster

Usage

Authentication

Yandex's API uses OAuth for authentication. Luckily, the Yandex::Webmaster gem hides most of the details from you.

If you have never used Webmaster API or you want to change your authentication credentials or your authorization token expired, then you should create new one:

require 'rubygems'
require 'yandex-webmaster'

# Get your API credentials at https://oauth.yandex.ru/
webmaster = Yandex::Webmaster.new(:app_id => 'your_app_id', :app_password => 'your_app_password')
  => #<Yandex::Webmaster::Client>

# Follow the authorization url, you will be redirected to the callback url, specified in your application settings.
webmaster.authorize_url
  => "https://oauth.yandex.ru/authorize?response_type=code&client_id=your_app_id"

# Use authorization code from params to get authorization token
webmaster.authenticate(params[:code])
  => #<Yandex::Webmaster::Client>

# If no error is raised then you are free to use any API method
# Too see what token is now used call for client configuration
token = webmaster.configuration.oauth_token 
  => "82af4af2a42e4019bd59a325da0f31d8"

If you want to restore previously used token, it can be easily done too:

require 'rubygems'
require 'yandex-webmaster'

# get your API credentials at https://oauth.yandex.ru/
webmaster = Yandex::Webmaster.new(:oauth_token => 'token')
  => #<Yandex::Webmaster::Client>

To check whether you client is authenticated or not, use authenticated? method.

# We have already initialized client before.
webmaster.authenticated?
  => true

Operations with the list of sites

Get list of sites

Most of Yandex::Webmaster loading methods are lazy, data will be actually loaded only when you really will need it.

webmaster.hosts
  => #<Yandex::Webmaster::ApiFactory>  
webmaster.hosts.all  
  => #<Array[Yandex::Webmaster::Host]>
# this does not really makes a query to API, list if hosts is cached.
webmaster.hosts.first  
  => #<Yandex::Webmaster::Host>

To reload list of hosts, call #host method with explicitly passed reload parameter.

# makes call to API and caches list of hosts
webmaster.hosts(true).all  
  => #<Array[Yandex::Webmaster::Host]>
# clears cache and makes call to API again.
webmaster.hosts(true).first  
  => #<Yandex::Webmaster::Host>

Create site

webmaster.hosts.create('hostname')
  => #<Yandex::Webmaster::Host>

Operations with a site

Getting site resources

You can easily find out what API methods are available for selected host.

h = webmaster.hosts.last
  => #<Yandex::Webmaster::Host>

h.resources
  => {:host_information => "https://webmaster.yandex.ru/api/v2/hosts/<host_id>/stats", :verify_host => "https://webmaster.yandex.ru/api/v2/hosts/<host_id>/verify" ... :excluded_urls_history => "https://webmaster.yandex.ru/api/v2/hosts/<host_id>/history/excluded-urls"}      

Deleting a site

h = webmaster.hosts.last
  => #<Yandex::Webmaster::Host>

h.delete
  => #<Yandex::Webmaster::Host>

h.deleted?
  => true   

Operations with site statistics

Request refreshes following fields in Host:

  • #name
  • #verification
  • #crawling
  • #virused
  • #last_access
  • #tic
  • #url_count
  • #index_count

Also request populates the following fields:

  • #url_errors
  • #internal_links_count
  • #links_count
h = webmaster.hosts.last
  => #<Yandex::Webmaster::Host>

# Populates host instance with statistics information
h.load_stats
  => #<Yandex::Webmaster::Host>

h.url_errors
  => 379843
h.internal_links_count
  => 52367    
h.links_count
  => 943

Operations with Sitemap files

Getting a list of Sitemap files

# makes call to API and caches list of sitemaps for the host
webmaster.hosts.first.sitemaps
  => #<Array[Yandex::Webmaster::Hosts::Sitemap]>

To reload list of sitemaps for the host, call #host method with explicitly passed reload parameter.

webmaster.hosts.first.sitemaps(true)
  => #<Array[Yandex::Webmaster::Hosts::Sitemap]>  

Getting information about a site's Sitemap file

To load detailed information about Sitemap file use #load_details method.

sitemap = webmaster.hosts.first.sitemaps.first
  => #<Yandex::Webmaster::Hosts::Sitemap>
sitemap.load_details
  => #<Yandex::Webmaster::Hosts::Sitemap>  

When details are loaded you can see Sitemap info.

sitemap.latest_info
  => #<Yandex::Webmaster::Hosts::SitemapInfo>
sitemap.in_search_info
  => #<Yandex::Webmaster::Hosts::SitemapInfo>

Removing a Sitemap

sitemap = webmaster.hosts.first.sitemaps.first
  => #<Yandex::Webmaster::Hosts::Sitemap>
sitemap.delete
  => #<Yandex::Webmaster::Host>
sitemap.deleted?
  => true   

Operations with site verification

Basic verification information is loaded with Host load.

For verified sites:

h = webmaster.hosts.last
  => #<Yandex::Webmaster::Host>
h.verification
  #<Yandex::Webmaster::Hosts::Verification state: "verified">   

And for not verified sites:

h = webmaster.hosts.create('http://www.tver.ru')
h.verification
 => #<Yandex::Webmaster::Hosts::Verification state: "never_verified">

Note on Patches / Pull Requests

  • Fork the project.
  • Make your feature addition or bug fix.
  • Add tests for it. This is important so I don't break it in a future version unintentionally.
  • Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
  • Send me a pull request. Bonus points for topic branches.

Credits

JetRockets

Webmaster is maintained by JetRockets.

Contributors:

License

It is free software, and may be redistributed under the terms specified in the LICENSE file.