lib/youtube_g.rb in tmm1-youtube-g-0.5.0 vs lib/youtube_g.rb in tmm1-youtube-g-0.5.1

- old
+ new

@@ -1,29 +1,67 @@ require 'logger' require 'open-uri' require 'net/https' require 'digest/md5' require 'rexml/document' -require 'cgi' +require 'builder' -require File.dirname(__FILE__) + '/youtube_g/client' -require File.dirname(__FILE__) + '/youtube_g/record' -require File.dirname(__FILE__) + '/youtube_g/parser' -require File.dirname(__FILE__) + '/youtube_g/model/author' -require File.dirname(__FILE__) + '/youtube_g/model/category' -require File.dirname(__FILE__) + '/youtube_g/model/contact' -require File.dirname(__FILE__) + '/youtube_g/model/content' -require File.dirname(__FILE__) + '/youtube_g/model/playlist' -require File.dirname(__FILE__) + '/youtube_g/model/rating' -require File.dirname(__FILE__) + '/youtube_g/model/thumbnail' -require File.dirname(__FILE__) + '/youtube_g/model/user' -require File.dirname(__FILE__) + '/youtube_g/model/video' -require File.dirname(__FILE__) + '/youtube_g/request/base_search' -require File.dirname(__FILE__) + '/youtube_g/request/user_search' -require File.dirname(__FILE__) + '/youtube_g/request/standard_search' -require File.dirname(__FILE__) + '/youtube_g/request/video_upload' -require File.dirname(__FILE__) + '/youtube_g/request/video_search' -require File.dirname(__FILE__) + '/youtube_g/response/video_search' +class YouTubeG + + # Base error class for the extension + class Error < RuntimeError + end + + # URL-escape a string. Stolen from Camping (wonder how many Ruby libs in the wild can say the same) + def self.esc(s) #:nodoc: + s.to_s.gsub(/[^ \w.-]+/n){'%'+($&.unpack('H2'*$&.size)*'%').upcase}.tr(' ', '+') + end + + # Set the logger for the library + def self.logger=(any_logger) + @logger = any_logger + end -class YouTubeG #:nodoc: - VERSION = '0.5.0' + # Get the logger for the library (by default will log to STDOUT). TODO: this is where we grab the Rails logger too + def self.logger + @logger ||= create_default_logger + end + + # Gets mixed into the classes to provide the logger method + module Logging #:nodoc: + + # Return the base logger set for the library + def logger + YouTubeG.logger + end + end + + private + def self.create_default_logger + logger = Logger.new(STDOUT) + logger.level = Logger::DEBUG + logger + end end + +%w( + version + client + record + parser + model/author + model/category + model/contact + model/content + model/playlist + model/rating + model/thumbnail + model/user + model/video + request/base_search + request/user_search + request/standard_search + request/video_upload + request/video_search + response/video_search + chain_io +).each{|m| require File.dirname(__FILE__) + '/youtube_g/' + m } \ No newline at end of file