The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

GitHub::RSS - collect data from Github.com for feeding into RSS

SYNOPSIS

    my $gh = GitHub::RSS->new(
        dbh => {
            dsn => "dbi:SQLite:dbname=$store",
        },
    );

    my $last_updated = $gh->last_check;
    $gh->fetch_and_store( $github_user => $github_repo, $last_updated );
    if( $verbose ) {
        print "Updated from $last_updated to " . $gh->last_check, "\n";
    };

DESCRIPTION

This module provides a cache database for GitHub issues and scripts to periodically update the database from GitHub.

This is mainly used for creating an RSS feed from the database, hence the name.

METHODS

->new

  my $gh = GitHub::RSS->new(
      dbh => {
          dsn => 'dbi:SQLite:dbname=db/issues.sqlite',
      },
  );

Constructs a new GitHub::RSS instance

  • gh - instance of Net::GitHub

  • token_file - name and path of the JSON-format token file containing the GitHub API token By default, that file is searched for under the name github.credentials in ., $ENV{XDG_DATA_HOME}, $ENV{USERPROFILE} and $ENV{HOME}.

  • token - GitHub API token. If this is missing, it will be attempted to read it from the token_file.

  • default_user - name of the GitHub user whose repos will be read

  • default_repo - name of the GitHub repo whose issues will be read

  • dbh - premade database handle or alternatively a hashref containing the DBI arguments

      dbh => $dbh,

    or alternatively

      dbh => {
          user     => 'scott',
          password => 'tiger',
          dsn      => 'dbi:SQLite:dbname=db/issues.sqlite',
      }
  • fetch_additional_pages - number of additional pages to fetch from GitHub. This is relevant when catching up a database for a repository with many issues.

->fetch_issue_comments

->fetch_and_store($user, $repo, $since)

  my $since = $gh->last_check;
  $gh->fetch_and_store($user, $repo, $since)

Fetches all issues and comments modified after the $since timestamp. If $since is missing or undef, all issues will be retrieved.

->last_check

  my $since = $gh->last_check;

Returns the timestamp of the last stored modification or undef if no issue or comment is stored.