---
name: "Pithub::Repos::Contents"
section: "3pm"
platform: "linux"
package: "libpithub-perl"
version: "0.01043-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Pithub::Repos::Contents"
---

# Pithub::Repos::Contents(3pm)

Github v3 Repo Contents API

## NAME

Pithub::Repos::Contents - Github v3 Repo Contents API

## VERSION

version 0.01043

## METHODS

### archive

- •

  This method will return a `302` to a URL to download a tarball or zipball archive for a repository.

  Note: For private repositories, these links are temporary and expire quickly.

  ```
      GET /repos/:user/:repo/:archive_format/:ref
  ```

  The `"ref"` parameter is optional and will default to `"master"`.

  Examples:

  ```
      use Path::Tiny;
      my $c = Pithub::Repos::Contents->new(
          repo => 'Pithub',
          user => 'plu'
      );
      my $result = $c->archive( archive_format => 'tarball' );
      if ( $result->success ) {
          path('Pithub-master.tgz')->spew($result->raw_content);
      }
      $result = $c->archive( archive_format => 'tarball', ref => 'other_branch' );
      if ( $result->success ) {
          path('Pithub-other_branch.tgz')->spew($result->raw_content);
      }
  ```

### get

- •

  This method returns the contents of any file or directory in a repository.

  ```
      GET /repos/:user/:repo/contents/:path
  ```

  Optional Parameters:

  - •

    **ref**: Optional string - The String name of the Commit/Branch/Tag. Defaults to `"master"`.

  Examples:

  ```
      my $c = Pithub::Repos::Contents->new(
          repo => 'Pithub',
          user => 'plu'
      );
      # List all files/directories in the repo root
      my $result = $c->get;
      if ( $result->success ) {
          say $_->{name} for @{ $result->content };
      }
      # Get the Pithub.pm file
      $result = $c->get( path => 'lib/Pithub.pm' );
      print Dumper $result->content if $result->success;
  ```

### readme

- •

  This method returns the preferred README for a repository.

  ```
      GET /repos/:user/:repo/readme
  ```

  Optional Parameters:

  - •

    **ref**: Optional string - The String name of the Commit/Branch/Tag. Defaults to `"master"`.

  Examples:

  ```
      my $c = Pithub::Repos::Contents->new(
          repo => 'dotfiles',
          user => 'plu'
      );
      my $result = $c->readme;
      if ( $result->success ) {
          print Dumper $result->content;
      }
      # Get the readme of branch 'other_branch'
      $result = $c->readme( params => { ref => 'other_branch' } );
      print Dumper $result->content if $result->success;
  ```

## AUTHOR

Johannes Plunien \<plu@cpan.org\>

## COPYRIGHT AND LICENSE

This software is copyright (c) 2011 by Johannes Plunien.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
