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.12.tar.gz (29.7 kB view details)

Uploaded Source

Built Distribution

pybacklogpy-0.12-py3-none-any.whl (42.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: pybacklogpy-0.12.tar.gz
  • Upload date:
  • Size: 29.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.7.1 requests/2.22.0 setuptools/45.2.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.8.10

File hashes

Hashes for pybacklogpy-0.12.tar.gz
Algorithm Hash digest
SHA256 b001dff0067caf1c4be3192f8d99525baa65a2a1261f04b5667acac8f22bdf97
MD5 1455a9644c2255f7b2abfe9a1a495e44
BLAKE2b-256 c8fd13f8e30f46c25f1ed112071eb7e9ab61c033376256a8ffadfe08dd3d2518

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pybacklogpy-0.12-py3-none-any.whl
  • Upload date:
  • Size: 42.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.7.1 requests/2.22.0 setuptools/45.2.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.8.10

File hashes

Hashes for pybacklogpy-0.12-py3-none-any.whl
Algorithm Hash digest
SHA256 1b1c02c696de60503fd516ae0c4d492d9a709cc98b7a1a5d7c5bc4e0df2a1271
MD5 13940f585609ec931b0bd52c611be4b0
BLAKE2b-256 7dfd64a99835bf8addadb729d341d5e749bbaa13d179dbbeb08f114c70e7ebc5

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