美文网首页
Jfrog Artifactory 工具之遍历解析目录下所有文件

Jfrog Artifactory 工具之遍历解析目录下所有文件

作者: 一只老梨花 | 来源:发表于2018-05-02 20:18 被阅读66次

基于JFROG的REST API去自动遍历多层目录下的文件夹,用来下载

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Date    : 2018-05-02 18:24:37
# @Author  : Zhu Robin 

import requests
from json import loads


class PhraseArt(object):
    """Phrase art url and make it more ease to operator."""
    api_str = "/artifactory/api/storage/"

    def __init__(self, url):
        if url.endswith("/"):
            url = url[:-1]
        if self.api_str in url:
            self.api_url = url
            self.url = url.replace(self.api_str,"/artifactory/")
        else:
            self.url = url
            self.api_url = url.replace("/artifactory/",self.api_str)
        r = requests.get(self.api_url)
        if r.status_code == 200:
            self.data = loads(r.content)
            for k, v in self.data.items():
                setattr(self, k, v)
        self.return_full_path = True


    def __getattribute__(self, key):
        # called when use like PhraseArt.somekey
        try:
            return super(PhraseArt, self).__getattribute__(key)
        except AttributeError:
            raise

    @property
    def md5(self):
        return self.checksums["md5"]

    @property
    def sha1(self):
        return self.checksums["sha1"]

    @property
    def sub_file(self):
        if self.return_full_path == True:
            replace_str = self.url + "/"
        else:
            replace_str = ""
        return [one["uri"].replace("/",replace_str)  for one in self.children if one["folder"] == False]

    @property
    def sub_dir(self):
        if self.return_full_path == True:
            replace_str = self.url + "/"
        else:
            replace_str = ""
        return [one["uri"].replace("/",replace_str)  for one in self.children if one["folder"] == True]

    @property
    def sub_guys(self):
        if self.return_full_path == True:
            replace_str = self.url + "/"
        else:
            replace_str = ""
        return [one["uri"].replace("/",replace_str)  for one in self.children]



class DownloadArt(PhraseArt):
    """docstring for DownloadArt"""
    def __init__(self, url):
        super(DownloadArt, self).__init__(url)
        self.sub_files = list()
        self.temp_dir = list()
        if hasattr(self, "children"):
            self.temp_dir.append(self.uri)

    def walk_once(self):
        if self.temp_dir:
            one = self.temp_dir.pop()
            p = PhraseArt(one)
            self.sub_files += p.sub_file
            self.temp_dir += p.sub_dir
            self.walk_once()

    @property
    def all_sub_files(self):
        self.walk_once()
        return self.sub_files


if __name__ == '__main__':
    art_url = "https://*****.china.nsn-net.net:443/artifactory/***/aa"
    aa = DownloadArt(art_url)
    print aa.all_sub_files

Todo:下载部分未完待续......

相关文章

网友评论

      本文标题:Jfrog Artifactory 工具之遍历解析目录下所有文件

      本文链接:https://www.haomeiwen.com/subject/ruxhrftx.html