github_metadata 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +1,3 @@
1
1
  class GithubMetadata
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
@@ -5,6 +5,8 @@ require 'nokogiri'
5
5
  # A simple scraper that fetches data from github repos that is not
6
6
  # available via the API. See README for an introduction and overview.
7
7
  class GithubMetadata
8
+ class RepoNotFound < StandardError; end;
9
+
8
10
  attr_reader :user, :repo
9
11
 
10
12
  # Object representation of a github contributor
@@ -19,6 +21,21 @@ class GithubMetadata
19
21
  @user, @repo = user, repo
20
22
  end
21
23
 
24
+ # Similar to initialization with GithubMetadata.new, but it will immediately try
25
+ # to fetch the repo document and importantly will swallow GithubMetadata::RepoNotFound
26
+ # errors, returning nil instead so you can easily do something like this:
27
+ #
28
+ # if metdata = GithubMetadata.fetch('rails', 'rails')
29
+ # ...
30
+ # end
31
+ def self.fetch(user, repo)
32
+ instance = new(user, repo)
33
+ instance.issues
34
+ instance
35
+ rescue GithubMetadata::RepoNotFound => err
36
+ nil
37
+ end
38
+
22
39
  # Returns an array of GithubMetadata::Contributor instances, one for each
23
40
  # contributor listed on the contributors page of github
24
41
  def contributors
@@ -78,6 +95,8 @@ class GithubMetadata
78
95
 
79
96
  def document
80
97
  @document ||= Nokogiri::HTML(open(contributors_url))
98
+ rescue OpenURI::HTTPError => err
99
+ raise GithubMetadata::RepoNotFound, err.to_s
81
100
  end
82
101
 
83
102
  def contributors_url
@@ -166,4 +166,21 @@ describe GithubMetadata do
166
166
  end
167
167
  end
168
168
 
169
+ context "initialized with an invalid repo path" do
170
+ before(:all) do
171
+ @metadata = GithubMetadata.new('colszowka', 'somefunkyrepo')
172
+ end
173
+ subject { @metadata }
174
+
175
+ it "should raise GithubMetadata::RepoNotFound" do
176
+ lambda { subject.issues }.should raise_error(GithubMetadata::RepoNotFound)
177
+ end
178
+ end
179
+
180
+ describe "fetch with invalid repo path" do
181
+ it "should return nil and swallow the 404" do
182
+ GithubMetadata.fetch('colszowka', 'anotherfunkyrepo').should be nil
183
+ end
184
+ end
185
+
169
186
  end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 1
8
- - 0
9
- version: 0.1.0
8
+ - 1
9
+ version: 0.1.1
10
10
  platform: ruby
11
11
  authors:
12
12
  - Christoph Olszowka