require 'singleton'
class MovieServiceClient
  include Singleton

  def initialize
    # stae ENDPOINT_URL i TIMEOUT_SECONDS zdefiniowane s w pliku
    # consfig/initializers/movies_service_client_config.rb
    @client = ActionWebService::Client::XmlRpc.new(
      MoviesApi, ENDPOINT_URL, 
      {:handler_name => 'movies', :timeout => TIMEOUT_SECONDS}
    )
  end

  def method_missing(method, *args)
    # tutaj jest okazja do ewentualnej modyfikacji parametru *args, 
    # np. wskutek zalogowania uytkownika
    
    result = @client.send(method, *args)
    
    # tutaj jest okazja do ewentualnej modyfikacji zwrconego wyniku,
    # kryjcego si pod zmienn result
  end

  # dziki poniszej metodzie uytkownik uwolniony zostaje od niewygodnego 
  # formuowania da w postaci klasa.instance.metoda
  def self.method_missing(method, *args)
    self.instance.send(method, *args)
  end
end
