A Ruby wrapper for the BitBucket REST API.
Install the gem by issuing
geminstallbitbucket_rest_apior put it in your Gemfile and run bundle install
gem"bitbucket_rest_api"Create a new client instance
bitbucket=BitBucket.newAt this stage you can also supply various configuration parameters, such as :user,:repo, :oauth_token, :oauth_secret, :basic_auth which are used throughout the API. These can be passed directly as hash options:
bitbucket=BitBucket.newoauth_token: 'request_token',oauth_secret: 'request_secret'Alternatively, you can configure the BitBucket settings by passing a block, for instance, with custom enteprise endpoint like
bitbucket=BitBucket.newdo |config|
config.oauth_token='request_token'config.oauth_secret='request_secret'config.client_id='consumer_key'config.client_secret='consumer_secret'config.adapter=:net_httpendYou can authenticate either using OAuth authentication or through basic authentication by passing your login and password credentials
bitbucket=BitBucket.newlogin:'vongrippen',password:'...'or use convenience method:
bitbucket=BitBucket.newbasic_auth: 'login:password'You can interact with BitBucket interface, for example repositories, by issuing following calls that correspond directly to the BitBucket API hierarchy
bitbucket.repos.changesets.all'user-name','repo-name'bitbucket.repos.keys.list'user-name','repo-name'The response is of type [Hashie::Mash] and allows to traverse all the json response attributes like method calls.
Some API methods apart from required parameters such as username or repository name allow you to switch the way the data is returned to you, for instance by passing a block you can iterate over the list of repositories
bitbucket.repos.listdo |repo|
putsrepo.slugendThe bitbucket_rest_api gem will use the default middleware stack which is exposed by calling stack on client instance. However, this stack can be freely modified with methods such as insert, insert_after, delete and swap. For instance to add your CustomMiddleware do
bitbucket=BitBucket.newdo |config|
config.stack.insert_afterBitBucket::Response::Helpers,CustomMiddlewareendFurthermore, you can build your entire custom stack and specify other connection options such as adapter
bitbucket=BitBucket.newdo |config|
config.adapter:exconconfig.stackdo |builder|
builder.useBitBucket::Response::Helpersbuilder.useBitBucket::Response::JsonizeendendMain API methods are grouped into the following classes that can be instantiated on their own
BitBucket - fullAPIaccessBitBucket::ReposBitBucket::IssuesSome parts of BitBucket API require you to be authenticated, for instance the following are examples of APIs only for the authenticated user
BitBucket::Issues::CreateYou can find out supported methods by calling actions on a class instance in your irb:
>> BitBucket::Repos.actions >> bitbucket.issues.actions
--- ---
|-->all |-->all
|-->branches |-->comments
|-->collaborators |-->create
|-->commits |-->edit
|-->contribs |-->events
|-->contributors |-->find
|-->create |-->get
|-->downloads |-->labels
|-->edit |-->list
|-->find |-->list_repo
|-->forks |-->list_repository
|-->get |-->milestones
|-->hooks ...
...Certain methods require authentication. To get your BitBucket OAuth credentials, register an app with BitBucket.
BitBucket.configuredo |config|
config.oauth_token=YOUR_OAUTH_REQUEST_TOKEN# Different for each userconfig.oauth_secret=YOUR_OAUTH_REQUEST_TOKEN_SECRET# Differenct for each userconfig.client_id=YOUR_OAUTH_CONSUMER_TOKENconfig.client_secret=YOUR_OAUTH_CONSUMER_TOKEN_SECRETconfig.basic_auth='login:password'endorBitBucket.new(:oauth_token=>YOUR_OAUTH_REQUEST_TOKEN,:oauth_secret=>YOUR_OAUTH_REQUEST_TOKEN_SECRET)BitBucket.new(:basic_auth=>'login:password')Questions or problems? Please post them on the issue tracker. You can contribute changes by forking the project and submitting a pull request. You can ensure the tests are passing by running bundle and rake.
Copyright (c) 2012 James M Cochran. Original github_api gem Copyright (c) 2011-2012 Piotr Murach. See LICENSE.txt for further details.