Bitbucket as a Platform - Atlassian Summit 2012

Post on 14-Jan-2017

1.402 views 0 download

Transcript of Bitbucket as a Platform - Atlassian Summit 2012

Wednesday, June 13, 12

Confluence Developer, AtlassianSam Tardif

Building cool shit with Bitbucket’s REST API

Bitbucket as a Platform

Wednesday, June 13, 12

Wednesday, June 13, 12

Wednesday, June 13, 12

Wednesday, June 13, 12

Pic: Not enough time

Wednesday, June 13, 12

Pic: ramp up time

Wednesday, June 13, 12

Wednesday, June 13, 12

REST

Wednesday, June 13, 12

Wednesday, June 13, 12

Bitbucket’s Issue Tracker

Wednesday, June 13, 12

Wednesday, June 13, 12

Wednesday, June 13, 12

Wednesday, June 13, 12

Wednesday, June 13, 12

Wednesday, June 13, 12

Wednesday, June 13, 12

Wednesday, June 13, 12

Wednesday, June 13, 12

Pic: Card wall

Wednesday, June 13, 12

Bitbucket Cards

Wednesday, June 13, 12

Wednesday, June 13, 12

Wednesday, June 13, 12

/api/1.0/oauth/request_token

/api/1.0/oauth/authenticate

/api/1.0/oauth/access_token

User clicks login

Authenticate this person for me plz

Thanks, access tokens plz

Authenticated REST calls /api/1.0/*

Wednesday, June 13, 12

Wednesday, June 13, 12

Wednesday, June 13, 12

Wednesday, June 13, 12

Edit column

Wednesday, June 13, 12

Drag columns

Wednesday, June 13, 12

Wednesday, June 13, 12

Wednesday, June 13, 12

Wednesday, June 13, 12

Wednesday, June 13, 12

Wednesday, June 13, 12

Versions

Wednesday, June 13, 12

Create a version

Wednesday, June 13, 12

Wednesday, June 13, 12

Wednesday, June 13, 12

Release a version

Wednesday, June 13, 12

Building It

Wednesday, June 13, 12

http://heroku.com

Wednesday, June 13, 12

Bootstraphttp://twitter.github.com/bootstrap/

Wednesday, June 13, 12

http://jquery.com/

Wednesday, June 13, 12

http://bitbucketjs.bitbucket.org/

Wednesday, June 13, 12

1 var bitbucket_cards = bitbucket.repository( 2 'samtardif', 'bitbucket-cards'); 3 4 bitbucket_cards.issues({ 5 search: 'version=1.0' 6 }, 7 8 function (issues) { 9 $.each(issues, function () {10 // render it11 });12 }13 );

Wednesday, June 13, 12

1 var bitbucket_cards = bitbucket.repository(2 'samtardif', 'bitbucket-cards');3 4 bitbucket_cards.issues(search, callback);5 bitbucket_cards.details(callback);6 bitbucket_cards.branches(callback);7 bitbucket_cards.changesets(callback);8 bitbucket_cards.file('abc123', 'path', callback);9 bitbucket_cards.followers(callback);

Wednesday, June 13, 12

http://flask.pocoo.org/

Wednesday, June 13, 12

1 @app.route('/proxy/<path:url>', methods=[...])2 def proxy(url):3 client = requests.session(...)4 5 if request.method == 'GET':6 query = '?...'7 response = client.get(API_BASE + url + query)8 9 return response.content

Wednesday, June 13, 12

Sinatra

Wednesday, June 13, 12

Why REST Rocks

Wednesday, June 13, 12

Wednesday, June 13, 12

Wednesday, June 13, 12

Wednesday, June 13, 12

Wednesday, June 13, 12

Wednesday, June 13, 12

Pic: See how BB behaves as a platform

Wednesday, June 13, 12

Wednesday, June 13, 12

Wednesday, June 13, 12

The Future

Wednesday, June 13, 12

Wednesday, June 13, 12

1 <app xmlns="http://bitbucket.org/app-1.0.xsd"> 2 <slug>bbcards</slug> 3 <name>Bitbucket Cards</name> 4 <description>Card wall.</description> 5 <developer>Atlassian</developer> 6 <website>http://www.atlassian.com</website> 7 <repo> 8 <tab key="cwtab" label="Card Wall" 9 url="http://bitbucketcards.com/"/>10 </repo>11 </app>

Wednesday, June 13, 12

Bitbucket Header

Remote App in an iframe

Wednesday, June 13, 12

Wednesday, June 13, 12

Wednesday, June 13, 12

Excitement!

Wednesday, June 13, 12

$45,00046 Days

Wednesday, June 13, 12

Wednesday, June 13, 12

Wednesday, June 13, 12

Wednesday, June 13, 12

Thank you!

Wednesday, June 13, 12