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