TARFILE_WRITE_MODE = 'w' ZIP_COMPRESSION_METHOD = zipfile.ZIP_STORED else: del zlib ZLIB_SUPPORT = True TARFILE_WRITE_MODE = 'w:gz' ZIP_COMPRESSION_METHOD = zipfile.ZIP_DEFLATED ZIP_EXTENSION = '.zip' TAR_EXTENSION = '.tar' TGZ_EXTENSION = '.tar.gz' EPOCH_START = datetime(1970, 1, 1) archives = Blueprint('archives', __name__) # pylint: disable=C0103 register_converter(archives, 'sha', SHAConverter) register_general_error_handler(archives, json_error_page) def _walk_tree_recursively(repo, tree, blobs_only=False, base_path=''): for entry in tree: if entry.filemode == GIT_MODE_SUBMODULE: continue # FIX ME: handle submodules & symlinks path = base_path + entry.name obj = repo[entry.id] if not blobs_only or obj.type == GIT_OBJ_BLOB: yield path, entry.filemode, obj if obj.type == GIT_OBJ_TREE: for subpath, subfilemode, subobj in _walk_tree_recursively( repo, obj, blobs_only, (path + '/')):
import mimetypes def guess_mime_type(filename, content): # pylint: disable=W0613 (mime_type, encoding) = mimetypes.guess_type(filename) # pylint: disable=W0612 return mime_type else: import atexit MAGIC = libmagic.Magic(flags=libmagic.MAGIC_MIME_TYPE) atexit.register(MAGIC.close) def guess_mime_type(filename, content): # pylint: disable=W0613 return MAGIC.id_buffer(content) porcelain = Blueprint('porcelain', __name__) # pylint: disable=C0103 register_converter(porcelain, 'sha', SHAConverter) register_general_error_handler(porcelain, json_error_page) @porcelain.route('/repos/') @corsify @jsonify def get_repo_list(): return [convert_repo(repo_key) for repo_key in sorted(get_repo_names())] @porcelain.route('/repos/<repo_key>/') @corsify @jsonify def get_repo_info(repo_key): get_repo(repo_key) # check repo_key validity
(mime_type, encoding) = mimetypes.guess_type(filename) # pylint: disable=W0612 return mime_type else: import atexit MAGIC = libmagic.Magic(flags=libmagic.MAGIC_MIME_TYPE) atexit.register(MAGIC.close) def guess_mime_type(filename, content): # pylint: disable=W0613 return MAGIC.id_buffer(content) porcelain = Blueprint("porcelain", __name__) # pylint: disable=C0103 register_converter(porcelain, "sha", SHAConverter) register_general_error_handler(porcelain, json_error_page) @porcelain.route("/repos/") @corsify @jsonify def get_repo_list(): return [convert_repo(repo_key) for repo_key in sorted(get_repo_names())] @porcelain.route("/repos/<repo_key>/") @corsify @jsonify def get_repo_info(repo_key): get_repo(repo_key) # check repo_key validity
from itertools import islice from flask import current_app, request, Blueprint from werkzeug.exceptions import NotFound, BadRequest from pygit2 import GIT_REF_SYMBOLIC, GIT_SORT_TIME from restfulgit.plumbing.retrieval import get_repo, get_commit as _get_commit, get_blob as _get_blob, get_tree as _get_tree, lookup_ref, get_tag as _get_tag from restfulgit.plumbing.converters import convert_commit, convert_blob, convert_tree, convert_ref, convert_tag from restfulgit.utils.json import jsonify from restfulgit.utils.cors import corsify from restfulgit.utils.json_err_pages import json_error_page, register_general_error_handler from restfulgit.utils.url_converters import SHAConverter, register_converter plumbing = Blueprint('plumbing', __name__) # pylint: disable=C0103 register_converter(plumbing, 'sha', SHAConverter) register_general_error_handler(plumbing, json_error_page) @plumbing.route('/repos/<repo_key>/git/commits/') @corsify @jsonify def get_commit_list(repo_key): ref_name = request.args.get('ref_name') or None start_sha = request.args.get('start_sha') or None limit = request.args.get( 'limit') or current_app.config['RESTFULGIT_DEFAULT_COMMIT_LIST_LIMIT'] try: limit = int(limit) except ValueError: raise BadRequest("invalid limit")
TARFILE_WRITE_MODE = 'w' ZIP_COMPRESSION_METHOD = zipfile.ZIP_STORED else: del zlib ZLIB_SUPPORT = True TARFILE_WRITE_MODE = 'w:gz' ZIP_COMPRESSION_METHOD = zipfile.ZIP_DEFLATED ZIP_EXTENSION = '.zip' TAR_EXTENSION = '.tar' TGZ_EXTENSION = '.tar.gz' EPOCH_START = datetime(1970, 1, 1) archives = Blueprint('archives', __name__) # pylint: disable=C0103 register_converter(archives, 'sha', SHAConverter) register_converter(archives, 'repo', RepoConverter) register_general_error_handler(archives, json_error_page) def _walk_tree_recursively(repo, tree, blobs_only=False, base_path=''): for entry in tree: if entry.filemode == GIT_MODE_SUBMODULE: continue # FIX ME: handle submodules & symlinks path = base_path + entry.name obj = repo[entry.id] if not blobs_only or obj.type == GIT_OBJ_BLOB: yield path, entry.filemode, obj if obj.type == GIT_OBJ_TREE: for subpath, subfilemode, subobj in _walk_tree_recursively(
from itertools import ifilter, islice from flask import current_app, request, Blueprint from werkzeug.exceptions import NotFound, BadRequest from pygit2 import GIT_REF_SYMBOLIC, GIT_SORT_TIME from restfulgit.plumbing.retrieval import get_repo, get_commit as _get_commit, get_blob as _get_blob, get_tree as _get_tree, lookup_ref, get_tag as _get_tag from restfulgit.plumbing.converters import convert_commit, convert_blob, convert_tree, convert_ref, convert_tag from restfulgit.utils.json import jsonify from restfulgit.utils.cors import corsify from restfulgit.utils.json_err_pages import json_error_page, register_general_error_handler from restfulgit.utils.url_converters import SHAConverter, register_converter plumbing = Blueprint('plumbing', __name__) # pylint: disable=C0103 register_converter(plumbing, 'sha', SHAConverter) register_general_error_handler(plumbing, json_error_page) @plumbing.route('/repos/<repo_key>/git/commits/') @corsify @jsonify def get_commit_list(repo_key): ref_name = request.args.get('ref_name') or None start_sha = request.args.get('start_sha') or None limit = request.args.get('limit') or current_app.config['RESTFULGIT_DEFAULT_COMMIT_LIST_LIMIT'] try: limit = int(limit) except ValueError: raise BadRequest("invalid limit") if limit < 0:
import mimetypes def guess_mime_type(filename, content): # pylint: disable=W0613 (mime_type, encoding) = mimetypes.guess_type(filename) # pylint: disable=W0612 return mime_type else: import atexit MAGIC = libmagic.Magic(flags=libmagic.MAGIC_MIME_TYPE) atexit.register(MAGIC.close) def guess_mime_type(filename, content): # pylint: disable=W0613 return MAGIC.id_buffer(content) porcelain = Blueprint('porcelain', __name__) # pylint: disable=C0103 register_converter(porcelain, 'sha', SHAConverter) register_converter(porcelain, 'repo', RepoConverter) register_general_error_handler(porcelain, json_error_page) @porcelain.route('/repos/') @corsify @jsonify def get_repo_list(): return [convert_repo(repo_key) for repo_key in sorted(get_repo_names())] @porcelain.route('/repos/<repo:repo_key>/') @corsify @jsonify def get_repo_info(repo_key):
else: del zlib ZLIB_SUPPORT = True TARFILE_WRITE_MODE = 'w:gz' ZIP_COMPRESSION_METHOD = zipfile.ZIP_DEFLATED ZIP_EXTENSION = '.zip' TAR_EXTENSION = '.tar' TGZ_EXTENSION = '.tar.gz' EPOCH_START = datetime(1970, 1, 1) archives = Blueprint('archives', __name__) # pylint: disable=C0103 register_converter(archives, 'sha', SHAConverter) register_general_error_handler(archives, json_error_page) def _walk_tree_recursively(repo, tree, blobs_only=False, base_path=''): for entry in tree: if entry.filemode == GIT_MODE_SUBMODULE: continue # FIX ME: handle submodules & symlinks path = base_path + entry.name obj = repo[entry.oid] if not blobs_only or obj.type == GIT_OBJ_BLOB: yield path, entry.filemode, obj if obj.type == GIT_OBJ_TREE: for subpath, subfilemode, subobj in _walk_tree_recursively(repo, obj, blobs_only, (path + '/')): yield subpath, subfilemode, subobj
from itertools import islice from flask import current_app, request, Blueprint from werkzeug.exceptions import NotFound, BadRequest from pygit2 import GIT_REF_SYMBOLIC, GIT_SORT_TIME from restfulgit.plumbing.retrieval import get_repo, get_commit as _get_commit, get_blob as _get_blob, get_tree as _get_tree, lookup_ref, get_tag as _get_tag from restfulgit.plumbing.converters import convert_commit, convert_blob, convert_tree, convert_ref, convert_tag from restfulgit.utils.json import jsonify from restfulgit.utils.cors import corsify from restfulgit.utils.json_err_pages import json_error_page, register_general_error_handler from restfulgit.utils.url_converters import RepoConverter, SHAConverter, register_converter plumbing = Blueprint('plumbing', __name__) # pylint: disable=C0103 register_converter(plumbing, 'sha', SHAConverter) register_converter(plumbing, 'repo', RepoConverter) register_general_error_handler(plumbing, json_error_page) @plumbing.route('/repos/<repo:repo_key>/git/commits/') @corsify @jsonify def get_commit_list(repo_key): ref_name = request.args.get('ref_name') or None start_sha = request.args.get('start_sha') or None limit = request.args.get( 'limit') or current_app.config['RESTFULGIT_DEFAULT_COMMIT_LIST_LIMIT'] try: limit = int(limit) except ValueError: