Module field_reports.bridge
Expand source code
# -*- coding: utf-8 -*-
import sys
import os
from field_reports.http_proxy import HttpProxy
from field_reports.exec_proxy import ExecProxy
"""
Field Reportsと連携するためのProxyオブジェクトを生成します。
"""
class Bridge:
@staticmethod
def create_proxy(uri = None):
"""URIに応じたField Reports Proxyオブジェクトを返却します。
Example:
>>> # コマンド連携時
>>> from field_reports import Bridge
>>> reports = Bridge.create_proxy("exec:/usr/local/bin/reports?cwd=/usr/share&logleve=3");
Example:
>>> # HTTP連携時
>>> from field_reports import Bridge
>>> reports = Bridge.create_proxy("http://localhost:50080/");
Args:
uri (str, optional): Field Reportsとの接続方法を示すURI.
省略した場合,環境変数'REPORTS_PROXY'よりURIを取得します.
環境変数'REPORTS_PROXY'も未設定の場合の既定値は"exec:reports"です。
コマンド連携時:
"exec:{exePath}?cwd={cwd}&loglevel={logLevel}"
- cwd, loglevelは省略可能です。
- loglevelが0より大きい場合,標準エラー出力にログを出力します。
HTTP連携時:
"http://{hostName}:{portNumber}/"
Returns:
Proxy: Field Reports Proxyオブジェクト
"""
from six.moves.urllib import parse
uri = os.environ.get('REPORTS_PROXY', "exec:reports") if not uri else uri
u = parse.urlparse(uri);
if u.scheme == 'exec':
q = parse.parse_qs(u.query)
exe_path = u.path
cwd = q['cwd'] if 'cwd' in q else "."
loglevel = int(q['loglevel']) if 'loglevel' in q else 0
return Bridge.create_exec_proxy(exe_path, cwd, loglevel, sys.stderr)
else:
return Bridge.create_http_proxy(uri)
@staticmethod
def create_exec_proxy(
exe_path="reports", cwd=".",
loglevel=0, logout=sys.stderr):
"""コマンド呼び出しによりField Reportsと連携するProxyオブジェクトを生成します。
Args:
exe_path (str, optional): Field Reportsコマンドのパス
cwd (str, optional): Field Reportsプロセス実行時のカレントディレクトリ
loglevel (int, optional): ログ出力レベル
logout (TextIO, optional): ログ出力先Stream
Returns:
Proxy: Field Reports Proxyオブジェクト
"""
return ExecProxy(exe_path, cwd, loglevel, logout)
@staticmethod
def create_http_proxy(base_address="http://localhost:50080/"):
"""HTTP通信によりField Reportsと連携するProxyオブジェクトを生成します。
Args:
base_address (str, optional): ベースURI
Returns:
Proxy: Field Reports Proxyオブジェクト
Note:
reportsコマンドがサーバーモードで起動していることが前提となります。
$ reports server -l3
"""
return HttpProxy(base_address)
Classes
class Bridge
-
Expand source code
class Bridge: @staticmethod def create_proxy(uri = None): """URIに応じたField Reports Proxyオブジェクトを返却します。 Example: >>> # コマンド連携時 >>> from field_reports import Bridge >>> reports = Bridge.create_proxy("exec:/usr/local/bin/reports?cwd=/usr/share&logleve=3"); Example: >>> # HTTP連携時 >>> from field_reports import Bridge >>> reports = Bridge.create_proxy("http://localhost:50080/"); Args: uri (str, optional): Field Reportsとの接続方法を示すURI. 省略した場合,環境変数'REPORTS_PROXY'よりURIを取得します. 環境変数'REPORTS_PROXY'も未設定の場合の既定値は"exec:reports"です。 コマンド連携時: "exec:{exePath}?cwd={cwd}&loglevel={logLevel}" - cwd, loglevelは省略可能です。 - loglevelが0より大きい場合,標準エラー出力にログを出力します。 HTTP連携時: "http://{hostName}:{portNumber}/" Returns: Proxy: Field Reports Proxyオブジェクト """ from six.moves.urllib import parse uri = os.environ.get('REPORTS_PROXY', "exec:reports") if not uri else uri u = parse.urlparse(uri); if u.scheme == 'exec': q = parse.parse_qs(u.query) exe_path = u.path cwd = q['cwd'] if 'cwd' in q else "." loglevel = int(q['loglevel']) if 'loglevel' in q else 0 return Bridge.create_exec_proxy(exe_path, cwd, loglevel, sys.stderr) else: return Bridge.create_http_proxy(uri) @staticmethod def create_exec_proxy( exe_path="reports", cwd=".", loglevel=0, logout=sys.stderr): """コマンド呼び出しによりField Reportsと連携するProxyオブジェクトを生成します。 Args: exe_path (str, optional): Field Reportsコマンドのパス cwd (str, optional): Field Reportsプロセス実行時のカレントディレクトリ loglevel (int, optional): ログ出力レベル logout (TextIO, optional): ログ出力先Stream Returns: Proxy: Field Reports Proxyオブジェクト """ return ExecProxy(exe_path, cwd, loglevel, logout) @staticmethod def create_http_proxy(base_address="http://localhost:50080/"): """HTTP通信によりField Reportsと連携するProxyオブジェクトを生成します。 Args: base_address (str, optional): ベースURI Returns: Proxy: Field Reports Proxyオブジェクト Note: reportsコマンドがサーバーモードで起動していることが前提となります。 $ reports server -l3 """ return HttpProxy(base_address)
Static methods
def create_exec_proxy(exe_path='reports', cwd='.', loglevel=0, logout=sys.stderr)
-
コマンド呼び出しによりField Reportsと連携するProxyオブジェクトを生成します。
Args
exe_path
:str
, optional- Field Reportsコマンドのパス
cwd
:str
, optional- Field Reportsプロセス実行時のカレントディレクトリ
loglevel
:int
, optional- ログ出力レベル
logout
:TextIO
, optional- ログ出力先Stream
Returns
Proxy
- Field Reports Proxyオブジェクト
Expand source code
@staticmethod def create_exec_proxy( exe_path="reports", cwd=".", loglevel=0, logout=sys.stderr): """コマンド呼び出しによりField Reportsと連携するProxyオブジェクトを生成します。 Args: exe_path (str, optional): Field Reportsコマンドのパス cwd (str, optional): Field Reportsプロセス実行時のカレントディレクトリ loglevel (int, optional): ログ出力レベル logout (TextIO, optional): ログ出力先Stream Returns: Proxy: Field Reports Proxyオブジェクト """ return ExecProxy(exe_path, cwd, loglevel, logout)
def create_http_proxy(base_address='http://localhost:50080/')
-
HTTP通信によりField Reportsと連携するProxyオブジェクトを生成します。
Args
base_address
:str
, optional- ベースURI
Returns
Proxy
- Field Reports Proxyオブジェクト
Note
reportsコマンドがサーバーモードで起動していることが前提となります。
$ reports server -l3
Expand source code
@staticmethod def create_http_proxy(base_address="http://localhost:50080/"): """HTTP通信によりField Reportsと連携するProxyオブジェクトを生成します。 Args: base_address (str, optional): ベースURI Returns: Proxy: Field Reports Proxyオブジェクト Note: reportsコマンドがサーバーモードで起動していることが前提となります。 $ reports server -l3 """ return HttpProxy(base_address)
def create_proxy(uri=None)
-
URIに応じたField Reports Proxyオブジェクトを返却します。
Example
>>> # コマンド連携時 >>> from field_reports import Bridge >>> reports = Bridge.create_proxy("exec:/usr/local/bin/reports?cwd=/usr/share&logleve=3");
Example
>>> # HTTP連携時 >>> from field_reports import Bridge >>> reports = Bridge.create_proxy("http://localhost:50080/");
Args
uri
:str
, optional- Field Reportsとの接続方法を示すURI.
省略した場合,環境変数'REPORTS_PROXY'よりURIを取得します.
環境変数'REPORTS_PROXY'も未設定の場合の既定値は"exec:reports"です。コマンド連携時:
"exec:{exePath}?cwd={cwd}&loglevel={logLevel}"
- cwd, loglevelは省略可能です。
- loglevelが0より大きい場合,標準エラー出力にログを出力します。
HTTP連携時:
"http://{hostName}:{portNumber}/"
Returns
Proxy
- Field Reports Proxyオブジェクト
Expand source code
@staticmethod def create_proxy(uri = None): """URIに応じたField Reports Proxyオブジェクトを返却します。 Example: >>> # コマンド連携時 >>> from field_reports import Bridge >>> reports = Bridge.create_proxy("exec:/usr/local/bin/reports?cwd=/usr/share&logleve=3"); Example: >>> # HTTP連携時 >>> from field_reports import Bridge >>> reports = Bridge.create_proxy("http://localhost:50080/"); Args: uri (str, optional): Field Reportsとの接続方法を示すURI. 省略した場合,環境変数'REPORTS_PROXY'よりURIを取得します. 環境変数'REPORTS_PROXY'も未設定の場合の既定値は"exec:reports"です。 コマンド連携時: "exec:{exePath}?cwd={cwd}&loglevel={logLevel}" - cwd, loglevelは省略可能です。 - loglevelが0より大きい場合,標準エラー出力にログを出力します。 HTTP連携時: "http://{hostName}:{portNumber}/" Returns: Proxy: Field Reports Proxyオブジェクト """ from six.moves.urllib import parse uri = os.environ.get('REPORTS_PROXY', "exec:reports") if not uri else uri u = parse.urlparse(uri); if u.scheme == 'exec': q = parse.parse_qs(u.query) exe_path = u.path cwd = q['cwd'] if 'cwd' in q else "." loglevel = int(q['loglevel']) if 'loglevel' in q else 0 return Bridge.create_exec_proxy(exe_path, cwd, loglevel, sys.stderr) else: return Bridge.create_http_proxy(uri)