packagecloud-ruby
Ruby library for communicating with the packagecloud.io API.
Implemented API Endpoints
* [Get Package Contents](https://packagecloud.io/docs/api#resource_packages_method_contents)
* [Upload Package](https://packagecloud.io/docs/api#resource_packages_method_create)
* [List Distributions](https://packagecloud.io/docs/api#resource_distributions_method_index)
* [View Repository](https://packagecloud.io/docs/api#resource_repositories_method_show)
* [View Repositories](https://packagecloud.io/docs/api#resource_repositories_method_index)
* [Create Repository](https://packagecloud.io/docs/api#resource_repositories_method_create)
Installation
```
gem install packagecloud-ruby
```
Getting your API token
Login to packagecloud.io and go to your Account Settings to see your API token.
Creating a Client
Note that you should not use the email address associated with your
[packagecloud.io](https://packagecloud.io) account when accessing the API.
Please use your username on the site.
```ruby
require 'packagecloud'
# Create a client using your username and API token
credentials = Packagecloud::Credentials.new("joedamato", "my_api_token")
@client = Packagecloud::Client.new(credentials)
```
Result objects
Every client API method call returns a ```Result``` object, which is simply:
```ruby
module Packagecloud
class Result
attr_accessor :response
attr_accessor :succeeded
end
end
```
If ```.succeeded``` is ```true``` then, ```.response``` is the parsed JSON response
of that endpoint, otherwise ```.response``` is the error text explaining what went wrong.
Usage
Distributions
This is the list of currently [supported distributions](https://packagecloud.io/docs#os_distro_version).
```ruby
# Get all distributions
distros = @client.distributions
# Looking up a distribution id by name
id = @client.find_distribution_id("el/6") # returns 27
```
Repositories
```ruby
# Looking up all repositories available for a client
repos = @client.repositories
# Lookup info on a single repo
repo = @client.repository("my_repo")
# Creating a repository
@client.create_repository("my_repo")
```
When your repository name, you should use just the name and not
the fully qualified name (fqname).
For example:
```ruby
# INCORRECT: this should just be "my_repo"
repo = @client.repository("user/my_repo")
```
Packages
```ruby
# Create RPM Packages (can take File, IO, or path argument)
rpm_package = Packagecloud::Package.new(:file => "libcurl-0.1.2.rpm")
# Creating gem Packages using IO (needs :filename passed in)
gem_package = Packagecloud::Package.new(:file => io_object, :filename => "rails-4.0.0.gem")
# Creating source Packages
source_files = { "jake_1.0.orig.tar.bz2" => open("/path/jake_1.0.orig.tar.bz2"),
"jake_1.0-7.debian.tar.gz" => open("/path/jake_1.0-7.debian.tar.gz") }
dsc_package = Packagecloud::Package.new(:file => "jake_1.0-7.dsc", :source_files => source_files)
# Upload Packages
@client.put_package("test_repo", gem_package)
@client.put_package("test_repo", rpm_package, "el/6")
@client.put_package("test_repo", dsc_package, "ubuntu/trusty")
@client.put_package("test_repo", node_package, "node")
```
Copyright
Copyright (c) 2014-2018 Computology, LLC
See LICENSE.txt for details.