WebService::Simple

Simple Interface To Web Services APIs (Ruby)

Original perl version was created by Yusuke Wada.

Usage


require 'rubygems'
require 'web_service_simple'

# Simple use case
technorati = WebService::Simple.new(
  :base_url => 'http://api.technorati.com/',
  :param    => { :key => 'your_api_key', }
)

# send GET request to
# http://api.technorati.com/?language=ja&key=your_api_key&query=value
technorati.get :language => 'ja', :query => 'value'

# send GET request to
# http://api.technorati.com/extra/path?language=ja&key=your_api_key&query=value
technorati.get 'extra/path', :language => 'ja', :query => 'value'

Methods

  • new(arg)

technorati = WebService::Simple.new(
  :base_url => 'http://api.technorati.com/',
  :param    => { :key => 'your_api_key', },
  # :debug    => 1
)

Create and return a new WebService::Simple object. “new” Method requires a base_url of Web Service API. If debug is set, dump a request URL in get or post method.

  • get([extra_path,] arg)

response =
  technorati.get(:language => 'ja', :query => 'value')

Send GET request, and you can get the WebService::Simple::Response object. If you want to add a path to base URL, use an option parameter.


technorati = WebService::Simple.new(
  :base_url => 'http://api.technorati.com/',
  :param    => { :api_key => 'your_api_key', :language => 'ja' }
)
response = technorati.get('search', :limit => 50)
  • post([extra_path,] arg)

Send POST request.

  • base_url
  • base_url=
  • basic_params
  • basic_params=
  • logger
  • logger=
  • debug
  • debug=
  • response_parser
  • response_parser=

Subclassing

For better encapsulation, you can create subclass of WebService::Simple to customize the behavior


class WebService::Simple::Technorati < WebService::Simple
  @@config = {
    :base_url => 'http://api.technorati.jp',
    :response_parser => { :module => 'XML::Technorati' }
  }

  def key_info
    get '/keyinfo'
  end

  def search(keyword)
    get '/search', :query => keyword
  end
end

Parsers

Web services return their results in various different formats. Or perhaps you require more sophisticated results parsing than what WebService::Simple provides.

WebService::Simple by default uses WebService::Simple::Parser::XML::Nokogiri (based on Nokogiri gem), but you can easily override that by providing a parser object to the constructor:


service = WebService::Simple.new(
  :response_parsrer => AVeryComplexParser.new,
  ...
)
response = service.get( ... )
thing = response.parse_response

This allows great flexibility in handling different webservices

Install


sudo gem install milk1000cc-web_service_simple --source=http://gems.github.com

Author

milk1000cc <[email protected]>

Yusuke Wada