Skip to main content

A library for backlog api

Project description

PyBacklogPy

CircleCI

これは何?

BacklogAPI を Python から簡単に呼べるようにラップしたものです。

必須環境

  • Python 3.5 以上
    • typing モジュールを使用しているため
    • 開発およびテスト環境は Python 3.7.3 を使用

使い方

詳細な仕様についてはドキュメントを参照してください

インストール

pip からインストールします。

pip install pybacklogpy

ドメインおよびシークレットキーの登録

ドメイン及びシークレットキーを登録するには以下の2種類の方法があります。

  1. プログラム上で指定する
  2. 設定ファイルを置く

なお、どちらも設定していた場合、 プログラム上で指定する の方が優先されます。

プログラム上で設定する場合

Backlogのドメイン別に以下3種類のクラスを用意しています。

  • BacklogComConfigure (backlog.com)
  • BacklogJpConfigure (backlog.jp)
  • BacklogToolConfigure (backlogtool.com)

このクラスのコンストラクタ引数として、スペースID と API のキーを渡すことで設定を行えます。

例えば、下記のような場合

  • Backlogドメイン: kitadakyou.backlog.com
  • API キー: qwertyuiopasdfghjklzxcvbnmqazwsxedcrfvtgbyhnujmikolp

コードは次のようになります。

from pybacklogpy.BacklogConfigure import BacklogComConfigure
from pybacklogpy.Issue import Issue

# Configure クラスのインスタンスを生成
config = BacklogComConfigure(space_key='kitadakyou',
                             api_key='qwertyuiopasdfghjklzxcvbnmqazwsxedcrfvtgbyhnujmikolp')


issue_api = Issue(config)  # API を呼ぶクラスのコンストラクタ引数として Configure クラスのインスタンスは使用可能 
response = issue_api.get_issue_list()

設定ファイルで指定する場合

使用するプロジェクトの直下に secrets というファイルを作り、以下のように値を入れておいてください。 なお、当プロジェクト直下にある secrets_sample をコピーすると楽です。

なお、このファイルは誤ってリポジトリにあげないよう、 .gitignore に追加しておくことを推奨します

[backlog]
Host = kitadakyou.backlog.com
ApiKey = qwertyuiopasdfghjklzxcvbnmqazwsxedcrfvtgbyhnujmikolp

secrets を指定した場合、先ほどの例で使用した configure クラスは省略して、以下のように書くことが出来ます

from pybacklogpy.Issue import Issue


issue_api_2 = Issue()  # Configure クラスを渡さなかった場合は、設定ファイルの情報を読みに行く
response_2 = issue_api_2.get_issue_list()

なお、 configure クラスを渡さず、 secrets も設置していない場合は実行エラーとなります。

モジュールを読み込み、インスタンス生成

使用するモジュールをロードします。 それぞれはクラスになっているので、そのインスタンスを生成します。

例として、Wiki の API を呼びたいと考えます。

from pybacklogpy.Wiki import Wiki


wiki_api = Wiki()

API を呼ぶ

どのような API があるかは PyBacklogPy のドキュメント、もしくは BacklogAPI のドキュメントを参照してください。 また、プロジェクトID や Wiki ID 等の調べ方は…ググればすぐに出てきます

Wiki を追加するサンプル

from pybacklogpy.Wiki import Wiki


wiki_api = Wiki()


response = wiki_api.add_wiki_page(
    project_id=1000,
    name='SampleWikiName',
    content='サンプル Wiki 本文',
    mail_notify=False,
)

Wiki を更新するサンプル

from pybacklogpy.Wiki import Wiki


wiki_api = Wiki()


response = wiki_api.update_wiki_page(
    wiki_id=12345,
    name='TestWikiName',
    content='テスト 本文',
    mail_notify=False,
)

返り値を見る

全ての関数は requestレスポンスオブジェクト を返します。

リクエストが成功しているかを確認するには、 response.ok を見るのが1番早いです。

Wiki の更新が成功しているか確認するサンプル

from pybacklogpy.Wiki import Wiki


wiki_api = Wiki()


response = wiki_api.update_wiki_page(
    wiki_id=12345,
    name='TestWikiName',
    content='テスト 本文',
    mail_notify=False,
)
if not response.ok:
    raise ValueError('Wiki の更新に失敗')

また、レスポンス本文は response.text の中身に生(=テキストの)の JSON が入っています。標準ライブラリ json を使って parse してあげれば、簡単に使えます。

Wiki の内容を取得するサンプル

import json


from pybacklogpy.Wiki import Wiki


wiki_api = Wiki()


response = wiki_api.get_wiki_page(
    wiki_id=12345,
)

if not response.ok:
    raise ValueError('Wiki ページ情報の取得に失敗')

wiki_data = json.loads(response.text)
wiki_name = wiki_data['name']
wiki_content = wiki_data['content']

ファイルの取得

ファイル取得については、特殊な返り値のため、別途こちらで説明します。

ファイルを取得する関数を使用する場合は、まずディレクトリを作成する必要があります。 デフォルトではプロジェクト直下の /tmp ディレクトリにファイルがダウンロードされます。(今の所、変更不可💦)

ファイルを取得する関数は「1番目がファイルのPATH」、「2番目がレスポンスオブジェクト」のタプルを返します。 そのため、一度に受け取るには、以下のように返り値を受け取る変数を2つ用意する必要があります。

from pybacklogpy.Wiki import Wiki


wiki_api = Wiki()


downloaded_file_path, response = self.wiki_attachment.get_wiki_page_attachment(
    wiki_id=12345,
    attachment_id=987654,
)
print(downloaded_file_path)

バグを見つけたら

自由にブランチを切って、 PullRequest を出してください。Issue を上げるだけでも大丈夫です。 一週間に一回くらいは見るようにするので、対応出来たら対応します。(全て対応するとは言っていない)

もし、PR出しても全くリアクションがない場合は Twitter の kitadakyou 、若しくは作者のメール宛にご連絡ください。

おまけ: なんでこんな名前なの?

PyBacklogBacklogPy も既に存在したので、苦肉の策で Py で挟みました。 もし、PyBacklogPy も存在したら、 PyBacklogXPyBacklog という HUNTER×HUNTER 方式で行こうと考えていました。

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pybacklogpy-0.11.tar.gz (25.4 kB view details)

Uploaded Source

Built Distribution

pybacklogpy-0.11-py3-none-any.whl (42.7 kB view details)

Uploaded Python 3

File details

Details for the file pybacklogpy-0.11.tar.gz.

File metadata

  • Download URL: pybacklogpy-0.11.tar.gz
  • Upload date:
  • Size: 25.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.7.3

File hashes

Hashes for pybacklogpy-0.11.tar.gz
Algorithm Hash digest
SHA256 7d4ab55594ec541a57b8058bf36233fa687d3cbc45ccbe559a02defc9dbe17fc
MD5 7323872335dcb0e7b313a6e6ae74baf4
BLAKE2b-256 10a7c6e89c3d5fc1638270ec0b4f1366549ffb56570063ecda5747d1c1b4987b

See more details on using hashes here.

File details

Details for the file pybacklogpy-0.11-py3-none-any.whl.

File metadata

  • Download URL: pybacklogpy-0.11-py3-none-any.whl
  • Upload date:
  • Size: 42.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.7.3

File hashes

Hashes for pybacklogpy-0.11-py3-none-any.whl
Algorithm Hash digest
SHA256 c8668acd834753f534558769bca5bafd70a82db395b754e719bdaf6c60c8a4a6
MD5 5b13126de13368ac97fde19cf47b4a7d
BLAKE2b-256 063e0cd5ba70880629f9294ac142ff1e4114bb0e48ba83757b364fbaebf8f8c5

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page