lib/git-trip/gitter/uri.rb in git-trip-0.0.4 vs lib/git-trip/gitter/uri.rb in git-trip-0.0.5

- old
+ new

@@ -19,21 +19,48 @@ def initialize(uri, options = {}) raise Errors::InvalidURI if invalid_uri?(uri) @uri = uri @options = DEFAULTS.merge(options) raise Errors::InvalidFormat if invalid_format?(@options[:format]) + @repo = nil + @data = {} + fetch_repo + setup_data_hash end private + # Fetches repository information from the <tt>@uri</tt>. + def fetch_repo + @repo = case @options[:format] + when 'json' + JSON.parse(open(@uri).read).symbolize_keys + end + @repo[:commits].each { |h| h.symbolize_keys! if h.is_a? Hash } + end + # Returns true if the given +format+ is invalid. def invalid_format?(format) return true unless FORMATS.include?(format) end # Returns true if the given +uri+ is invalid. def invalid_uri?(uri) uri.grep(/^(#{PROTOCOLS.join('|')}):\/\/\w/).empty? + end + + # Loads the <tt>@data</tt> hash with repository information. + def setup_data_hash + load_repo_commits + end + + # Loads a hash of commits into <tt>@data[:commits]</tt>. + def load_repo_commits + commits = [] + @repo[:commits].each do |commit| + commits << commit[:id] + end + @data[:commits] = commits end end # of URI end # of Gitter end