xml-rpc で trac につないでみた
とりあえずはライブラリ・リファレンスにあるxmlrpclibを使ってみる。
必要な手順
設定したら、公開されているAPIの名前を取得する listMethods() というやつを呼んでみる。
import xmlrpclib server = xmlrpclib.ServerProxy( "http://ユーザー名:パスワード@サーバーのアドレス:tracのポート番号/trac/プロジェクト名/login/xmlrpc") apilist = server.system.listMethods() for item in apilist: print item
結果:「ProtocolError:
…なんだか認証がダメだと言っているようだ。
いろいろとごにょごにょしていると、どうもこの xmlrpclib は proxy 経由でのアクセスに対応できていないっぽい。さすがに自分では書けないなー。
一縷の望みを求めてグーグル先生におすがりしていると、まさにそのものズバリなコードを公開されている方が。
標準のxmlrpclibがシンプル過ぎて繋げないサーバーがあるので、 もう少しがんばって繋ぎに行くXML-RPCクライアントラッパーを作成しました。
…神だ。早速パクって参考にさせていただいて、やってみる。
import xml_rpc url = 'http://ユーザー名:パスワード@サーバーのアドレス:tracのポート番号/trac/プロジェクト名/login/xmlrpc' user, password = 'ユーザー名','パスワード' server = xml_rpc.XmlRpcServer(url, user, password) print server.system.listMethods()
['system.multicall', 'system.listMethods', 'system.methodHelp', 'system.methodSignature', 'system.getAPIVersion', 'ticket.query', 'ticket.getRecentChanges', 'ticket.getAvailableActions', 'ticket.get', 'ticket.create', 'ticket.update', 'ticket.delete', 'ticket.changeLog', 'ticket.listAttachments', 'ticket.getAttachment', 'ticket.putAttachment', 'ticket.deleteAttachment', 'ticket.getTicketFields', 'ticket.component.getAll', 'ticket.component.get', 'ticket.component.delete', 'ticket.component.create', 'ticket.component.update', 'ticket.version.getAll', 'ticket.version.get', 'ticket.version.delete', 'ticket.version.create', 'ticket.version.update', 'ticket.milestone.getAll', 'ticket.milestone.get', 'ticket.milestone.delete', 'ticket.milestone.create', 'ticket.milestone.update', 'ticket.type.getAll', 'ticket.type.get', 'ticket.type.delete', 'ticket.type.create', 'ticket.type.update', 'ticket.status.getAll', 'ticket.status.get', 'ticket.status.delete', 'ticket.status.create', 'ticket.status.update', 'ticket.resolution.getAll', 'ticket.resolution.get', 'ticket.resolution.delete', 'ticket.resolution.create', 'ticket.resolution.update', 'ticket.priority.getAll', 'ticket.priority.get', 'ticket.priority.delete', 'ticket.priority.create', 'ticket.priority.update', 'ticket.severity.getAll', 'ticket.severity.get', 'ticket.severity.delete', 'ticket.severity.create', 'ticket.severity.update', 'wiki.getRecentChanges', 'wiki.getRPCVersionSupported', 'wiki.getPage', 'wiki.getPageVersion', 'wiki.getPageHTML', 'wiki.getPageHTMLVersion', 'wiki.getAllPages', 'wiki.getPageInfo', 'wiki.getPageInfoVersion', 'wiki.putPage', 'wiki.listAttachments', 'wiki.getAttachment', 'wiki.putAttachment', 'wiki.putAttachmentEx', 'wiki.deletePage', 'wiki.deleteAttachment', 'wiki.listLinks', 'wiki.wikiToHtml', 'search.getSearchFilters', 'search.performSearch']
キタ━━━(゚∀゚)━( ゚∀)━( ゚)━( )━(゚ )━(∀゚ )━(゚∀゚)━━━!!!!!