Пример #1
0
    def __init__(self,config_parser):
        # Connect to engine
        database_path  = get_from_config_parser(config_parser,'Database','path','database')
        database_debug = get_boolean_from_config_parser(config_parser,'Database','debug',False)
        dir = os.path.dirname(database_path)
        if not os.path.exists(dir):
            mkdir(dir)
        sys.stderr.write('Connecting to database at "%s"\n' % database_path)
        self._engine = create_engine('sqlite:///%s' % database_path,echo=database_debug)

        # Start session
        Session = sessionmaker(bind=self._engine)
        self._session = Session()
        # Initialize feed storage
        self._feed_storage = FeedStorage(self._engine,self._session)
        # Initialize item storage
        self._item_storage = ItemStorage(self._engine,self._session)
        # A list of subprocess.Popen processes that will be maintained
        # by the Coffer object.
        self._external_processes = []
        # File storage (data dump)
        file_storage_path = get_from_config_parser(config_parser,'FileStorage','path','datadump')
        max_block_size    = get_int_from_config_parser(config_parser,'FileStorage','max-block-size',
                                                       file_storage.DEFAULT_MAX_BLOCK_SIZE)
        bzip2_path = get_from_config_parser(config_parser,'FileStorage','bzip2-path','/usr/bin/bzip2')
        self._file_storage = FileStorage(self._external_processes,file_storage_path,
                                         max_block_size,bzip2_path)
        # Content fetcher configuration
        self._fetcher = Fetcher(config_parser)
Пример #2
0
def get_storage_obj(dir_name=""):
    global OBJECT_STORAGE_OBJ
    if OBJECT_STORAGE_OBJ is None:
        if settings.DATA_STORAGE_USE_S3:
            OBJECT_STORAGE_OBJ = ObjectStorage()
        else:
            OBJECT_STORAGE_OBJ = FileStorage(dir_name)
    return OBJECT_STORAGE_OBJ
Пример #3
0
    def factory(type, conf):
        """Creates an instance of AbstractStorage class

        :raises: RuntimeError
        """
        if type == 'file':
            return FileStorage(conf)
        raise RuntimeError('Unable to instantiate storage with type %s' % type)
Пример #4
0
    def post(self, request):
        serializer = UserRegisterSerializer(data=request.data)
        if serializer.is_valid():
            #serializer.validated_data['password'] = make_password(serializer.validated_data['password'])
            serializer.save()

            # create personal folder
            email_info = serializer.validated_data['email']
            file_storage = FileStorage()
            file_storage.create_folder(email_info)
            file_storage.create_folder_in_specific_folder(
                email_info + "@" + "data", email_info)

            data_map = {
                "folders": {
                    "000000": {
                        "name": "/",
                        "parent": "",
                        "create_date": "17/03/2020"
                    }
                },
                "files": {},
                "last_submission":
                str(int(datetime.timestamp(datetime.now()) * 1000))
            }

            base_dir = ".temp/"
            try:
                os.mkdir(os.path.join(base_dir, email_info))
            except:
                print("folder exists")
            file_path = base_dir + email_info + "/map.json"
            map_file = open(file_path, 'w')
            json.dump(data_map, map_file)
            map_file.close()

            file_storage.upload_file_with_path_in_specific_folder(
                file_path, email_info)

            requests.post('http://127.0.0.1:5000/api/gen_key',
                          data={
                              "email": serializer.validated_data['email'],
                              "secret_password": "******"
                          })

            return JsonResponse(
                {
                    'message': 'Register successful!',
                    'data_map': data_map
                },
                status=status.HTTP_201_CREATED)

        return JsonResponse(
            {
                'error_messages': serializer.errors,
                'errors_code': 400,
            },
            status=status.HTTP_400_BAD_REQUEST)
Пример #5
0
    def put(self, request, *args, **kwargs):
        base_dir = ".temp/"
        try:
            serializer = FileUploadSerializer(data=request.data)
            if serializer.is_valid():
                file_name = request.data['name']
                file_data = request.data['data']['data']
                file_path = base_dir + file_name
                file = open(file_path, 'wb')
                file.write(bytes(bytearray(file_data)))
                file.close()

                file_storage = FileStorage()
                files = file_storage.get_file_list_in_specific_folder(
                    request.user.email)

                remove_file = ""

                for f in files:
                    if f['title'] == file_name:
                        remove_file = f
                        break

                if remove_file != "":
                    print(remove_file['id'])
                    file_storage.delete_file_by_id(remove_file['id'])
                    file_storage.upload_file_with_path_in_specific_folder(
                        file_path, request.user.email)

                    if os.path.exists(file_path):
                        os.remove(file_path)

                        return JsonResponse({'message': request.data},
                                            status=status.HTTP_200_OK)
                    else:
                        return JsonResponse(
                            {'message': "Service unavaible"},
                            status=status.HTTP_503_SERVICE_UNAVAILABLE)
                else:
                    return JsonResponse(
                        {'message': "Service unavaible"},
                        status=status.HTTP_503_SERVICE_UNAVAILABLE)

            return JsonResponse({'message': "Request's data is wrong"},
                                status=status.HTTP_401_UNAUTHORIZED)
        except:
            JsonResponse(
                {
                    'error_message': "Somethings Error",
                    'errors_code': 400,
                },
                status=status.HTTP_402_PAYMENT_REQUIRED)
Пример #6
0
    def setup(cls, channel, pool_size):
        cls.pool_size = pool_size

        cls.file_storage = FileStorage()
        cls.file_storage.setup(channel)

        cls.ret = cls.file_storage.read_file()

        for one_name in cls.ret.splitlines():
            if one_name not in cls.names:
                cls.names.append(one_name)

        print("INIT")
        print("READ " + cls.ret)
        print("PARSED " + str(cls.names))
Пример #7
0
    def get(self, request, *args, **kwargs):
        base_dir = ".temp/"
        file_id = kwargs['file_id']
        file_id = '0' * (6 - len(str(file_id))) + str(file_id)

        file_storage = FileStorage()

        files = file_storage.get_files_by_title_in_specific_folder(
            "map.json", request.user.email)
        if len(files) == 0:
            return JsonResponse({'message': "Service unavaible"},
                                status=status.HTTP_503_SERVICE_UNAVAILABLE)

        map_json_content = json.loads(file_storage.get_content_file(files[0]))

        if file_id not in map_json_content['files']:
            return JsonResponse({'message': "File is not found"},
                                status=status.HTTP_400_BAD_REQUEST)

        file_name = map_json_content['files'][file_id]['name']
        file_name = file_id + file_name + '.aes'

        files = file_storage.get_files_by_title(file_name)
        if len(files) == 0:
            return JsonResponse({'message': "Service unavaible"},
                                status=status.HTTP_503_SERVICE_UNAVAILABLE)
        file_storage.download_file(files[0], base_dir + file_name)

        f = open(base_dir + file_name, 'rb')
        data = f.read()
        f.close()

        return JsonResponse(
            {
                'message': {
                    'type': 'Buffer',
                    'data': list(bytearray(data)),
                    'name': file_name,
                    'map_data': map_json_content['files'][file_id]
                }
            },
            status=status.HTTP_200_OK)
Пример #8
0
    def __init__(self, file, folder, vol=5):
        print('sounds starts')

        # get path
        # self.cwd = os.getcwd() + folder
        # self.cwd = file + '/' + folder
        # get sound clips
        self.cwd = folder
        fs = FileStorage()
        fs.readJson(file)
        self.db = fs.db

        print('Found {} sounds clips'.format(len(self.db)))

        self.audio_player = AudioPlayer()
        # self.audio_player.set_volume(vol)  # volume is 0-100%
        time.sleep(0.1)
        print('AudioPlayer found:', self.audio_player.audio_player)

        self.r2 = TTAstromech()
 def setUp(self):
     # Mock values to be passed to File class constructor
     file_name = "file_name"
     file_path = "C:/Desktop/my_dir/file_name"
     file_extension = "txt"
     absolute_path = "C:/Desktop/my_dir/file_name.txt"
     # An object of type DetectionIndicators
     detection_indicators = DetectionIndicators()
     """Initialise File class
 args:
   file_name (str) : file name
   file_path (str) : file path
   file_extension (str) : file extension
   absolute_path (str) : absolute path
   detection_indicators(DetectionIndicators): object of type DetectionIndicators      
 """
     self.file = File(file_name, file_path, file_extension, absolute_path,
                      detection_indicators)
     """Initialise FileStorage class
 args:
   [] (list) : an empty list to store files
 """
     self.file_storage = FileStorage([])
Пример #10
0
    def get(self, request, *args, **kwargs):
        base_dir = ".temp/"
        file_name = "map.json"

        file_storage = FileStorage()

        files = file_storage.get_files_by_title_in_specific_folder(
            file_name, request.user.email)
        if len(files) == 0:
            return JsonResponse({'message': "Service unavaible"},
                                status=status.HTTP_503_SERVICE_UNAVAILABLE)

        file_storage.download_file(files[0], base_dir + file_name)

        f = open(base_dir + file_name, 'rb')
        data = f.read()
        f.close()

        return JsonResponse(
            {'message': {
                'type': 'Buffer',
                'data': list(bytearray(data)),
            }},
            status=status.HTTP_200_OK)
Пример #11
0
    def post(self, request):
        base_dir = ".temp/"
        try:

            serializer = FileUploadSerializer(data=request.data)
            if serializer.is_valid():
                file_name = request.data['name']
                file_data = request.data['data']['data']
                file_path = base_dir + file_name
                file = open(file_path, 'wb')
                file.write(bytes(bytearray(file_data)))
                file.close()

                file_storage = FileStorage()
                file_storage.upload_file_with_path_in_specific_folder(
                    file_path, request.user.email + "@" + "data")

                if os.path.exists(file_path):
                    os.remove(file_path)

                    return JsonResponse({'message': request.data},
                                        status=status.HTTP_200_OK)
                else:
                    return JsonResponse(
                        {'message': "Service unavaible"},
                        status=status.HTTP_503_SERVICE_UNAVAILABLE)

            return JsonResponse({'message': "Request's data is wrong"},
                                status=status.HTTP_400_BAD_REQUEST)
        except:
            JsonResponse(
                {
                    'error_message': "Somethings Error",
                    'errors_code': 400,
                },
                status=status.HTTP_400_BAD_REQUEST)
Пример #12
0
    def delete(self, request, *args, **kwargs):
        try:
            serializer = FileRemoveSerializer(data=request.data)
            if serializer.is_valid():
                file_name = request.data['name']

                file_storage = FileStorage()
                files = file_storage.get_file_list_in_specific_folder(
                    request.user.email + "@" + "data")

                remove_file = ""

                for f in files:
                    if f['title'] == file_name:
                        remove_file = f
                        break

                if remove_file != "":
                    file_storage.delete_file_by_id(remove_file['id'])

                    return JsonResponse({'message': request.data},
                                        status=status.HTTP_200_OK)
                else:
                    return JsonResponse(
                        {'message': "Service unavaible"},
                        status=status.HTTP_503_SERVICE_UNAVAILABLE)

            return JsonResponse({'message': "Request's data is wrong"},
                                status=status.HTTP_401_UNAUTHORIZED)
        except:
            JsonResponse(
                {
                    'error_message': "Somethings Error",
                    'errors_code': 400,
                },
                status=status.HTTP_402_PAYMENT_REQUIRED)
Пример #13
0
    def post(self, request, *args, **kwargs):
        try:
            serializer = FileUploadSerializer(data=request.data)
            if serializer.is_valid():
                file_name = request.data['name']

                file_storage = FileStorage()
                files = file_storage.get_file_list_in_specific_folder(
                    request.user.email)
                map_file_name = "map.json"

                map_file = ""
                for f in files:
                    if f['title'] == map_file_name:
                        map_file = f
                        break

                if map_file == "":
                    return JsonResponse(
                        {'message': "Internal server error"},
                        status=status.HTTP_500_INTERNAL_SERVER_ERROR)

                map_file = json.loads(file_storage.get_content_file(map_file))

                file_data = request.data['data']['data']
                file_data = bytes(bytearray(file_data))
                file_data = json.loads(file_data)

                if int(map_file['last_submission']) == int(
                        file_data['last_submission']):
                    return JsonResponse(
                        {
                            'message': "There is nothing to sync",
                            'code': 0
                        },
                        status=status.HTTP_200_OK)

                files_1 = map_file['files']
                files_2 = file_data['files']

                file_add = list(set(files_2.keys()) - set(files_1.keys()))
                file_modified = []
                file_delete = list(set(files_1.keys()) - set(files_2.keys()))

                intersec_files = list(
                    set(files_2.keys()) & set(files_1.keys()))

                for file_id in intersec_files:
                    if files_2[file_id]['check_sum'] != files_1[file_id][
                            'check_sum']:
                        file_modified.append(file_id)

                print(file_add)
                print(file_modified)
                print(file_delete)

                if int(map_file['last_submission']) < int(
                        file_data['last_submission']):
                    # sync to server

                    return JsonResponse(
                        {
                            'message': "Sync data to server",
                            'data': {
                                'upload': file_add,
                                'update': file_modified,
                                'remove': file_delete
                            },
                            'code': 1
                        },
                        status=status.HTTP_200_OK)

                elif int(map_file['last_submission']) > int(
                        file_data['last_submission']):
                    #sync to client

                    return JsonResponse(
                        {
                            'message': "Sync data to client",
                            'data': {
                                'upload': file_delete,
                                'update': file_modified,
                                'remove': file_add
                            },
                            'code': 2
                        },
                        status=status.HTTP_200_OK)

            return JsonResponse({'message': "Request's data is wrong"},
                                status=status.HTTP_200_OK)
        except:
            JsonResponse(
                {
                    'error_message': "Somethings Error",
                    'errors_code': 400,
                },
                status=status.HTTP_400_BAD_REQUEST)
Пример #14
0
import logging
import os
import tempfile

from file_storage import FileStorage
from thegoogs import TheGoogs

logger = logging.getLogger("gmusic")
logger.setLevel(logging.INFO)
logger.addHandler(logging.StreamHandler())

STORAGE_PATH = "/Users/jd/ws/gmusic/data"

thegoogs = TheGoogs()

storage = FileStorage(STORAGE_PATH)
libdata = storage.read_libdata()

for index, song in enumerate(libdata.uploaded_songs):

    if not storage.song_exists(song):
        logger.info("Downloading song {}/{}: {}".format(
            index, len(libdata.uploaded_songs), song["title"]))
        data = thegoogs.get_uploaded_song(song["id"])
        storage.write_song(data, song)
    else:
        logger.info("Skipping downloaded song: {}".format(song["title"]))

for index, song in enumerate(libdata.all_songs):
    if not storage.song_exists(song):
        logger.info("Downloading unowned song {}/{}: {}".format(
Пример #15
0
import os
import redis
from file_storage import FileStorage
from s3_storage import S3Storage
from elasticsearch import Elasticsearch
from elasticsearch_dsl import connections
from pathlib import Path
import yaml

app = Flask(__name__)

app_settings = os.getenv('APP_SETTINGS', 'server.config.DevelopmentConfig')
app.config.from_object(app_settings)

if app.config.get('UPLOAD_TYPE') == 'file':
    storage = FileStorage(app.config.get('UPLOAD_FOLDER'))
elif app.config.get('UPLOAD_TYPE') == 'aws':
    storage = S3Storage(app.config.get('AWS_BUCKET'))

tm = tus_manager(app,
                 upload_url='/uploads',
                 upload_folder=app.config.get('UPLOAD_FOLDER'),
                 overwrite=True,
                 upload_finish_cb=None,
                 storage=storage)

db = SQLAlchemy(app)
redis_db = redis.StrictRedis(host=app.config.get('REDIS_SERVERNAME'),
                             port=6379,
                             db=0,
                             password='******')
Пример #16
0
 def setUp(self):
     self.subject = FileStorage('test_storage.json')
Пример #17
0
            info = r.json()
            print('+', end='')
            # pprint(data)
            # print("Found:", data["hostname"], data["network"]["IPv4"]["address"])
            key = info["network"]["IPv4"]["mac"]
            data = {
                'timestamp': getTimeStamp(),
                'changed': False,
                'json': info
            }
            if key in rpis:
                if rpis[key]["json"]["hostname"] != data["json"]["hostname"]:
                    data["changed"] = True
            rpis[key] = data
    except KeyboardInterrupt:
        break
    except requests.ConnectTimeout:
        # print("Invalid:", url)
        print('.', end='')
    except requests.ConnectionError as e:
        # print("Strange:", url, e)
        print('/', end='')
    # time.sleep(0.1)
    sys.stdout.flush()

print("\nFinished scan")

if len(rpis) > 0:
    fs = FileStorage()
    fs.writeJson('network.json', rpis)