This commit is contained in:
95
nhncloud/packages/ApiStorageObject.py
Normal file
95
nhncloud/packages/ApiStorageObject.py
Normal file
@ -0,0 +1,95 @@
|
||||
import requests
|
||||
import os
|
||||
|
||||
endpoint_url_kr1 = "https://kr1-api-object-storage.nhncloudservice.com/v1"
|
||||
endpoint_url_kr2 = "https://kr2-api-object-storage.nhncloudservice.com/v1"
|
||||
|
||||
class ApiStorageObject:
|
||||
def __init__(self, region, token, storageAccount):
|
||||
if region == "kr1":
|
||||
self.storage_url = endpoint_url_kr1
|
||||
elif region == "kr2":
|
||||
self.storage_url = endpoint_url_kr2
|
||||
else:
|
||||
self.storage_url = endpoint_url_kr2
|
||||
self.token = token
|
||||
self.scAccount = storageAccount
|
||||
|
||||
def _get_url(self, container=None):
|
||||
if container == None:
|
||||
container = ""
|
||||
else:
|
||||
container = container
|
||||
return self.storage_url + "/" + container
|
||||
|
||||
def _get_obj_url(self, container=None, object=None):
|
||||
return '/'.join([self.storage_url, container, object])
|
||||
|
||||
def _get_request_header(self):
|
||||
return {"X-Auth-Token": self.token}
|
||||
|
||||
def get_container_list(self):
|
||||
req_url = str(f"{self._get_url()}{self.scAccount}")
|
||||
print(f"url: {req_url}")
|
||||
headers = self._get_request_header()
|
||||
resp = requests.get(req_url, headers=headers)
|
||||
# print(resp)
|
||||
return resp.text.split("\n")
|
||||
|
||||
def create(self, container):
|
||||
req_url = str(f"{self._get_url()}{self.scAccount}/{container}")
|
||||
print(req_url)
|
||||
req_header = self._get_request_header()
|
||||
return requests.put(req_url, headers=req_header)
|
||||
def remove(self, container):
|
||||
req_url = str(f"{self._get_url()}{self.scAccount}/{container}")
|
||||
print(req_url)
|
||||
req_header = self._get_request_header()
|
||||
return requests.delete(req_url, headers=req_header)
|
||||
|
||||
# public 으로 변경
|
||||
def set_read_acl(self, container, is_public):
|
||||
req_url = str(f"{self._get_url()}{self.scAccount}/{container}")
|
||||
req_header = self._get_request_header()
|
||||
req_header["X-Container-Read"] = ".r:*" if is_public else ""
|
||||
return requests.post(req_url, headers=req_header)
|
||||
|
||||
def upload(self, container, object, object_path):
|
||||
req_url = str(f"{self._get_url()}{self.scAccount}/{container}/{object}")
|
||||
req_header = self._get_request_header()
|
||||
|
||||
path = '/'.join([object_path, object])
|
||||
with open(path, 'rb') as f:
|
||||
return requests.put(req_url, headers=req_header, data=f.read())
|
||||
|
||||
def update(self, container, object):
|
||||
req_url = str(f"{self._get_url()}{self.scAccount}/{container}/{object}")
|
||||
print(req_url)
|
||||
headers={
|
||||
"X-Auth-Token": self.token,
|
||||
"Content" : "multipart/form-data",
|
||||
"X-Delete-At" : "1705985040"
|
||||
}
|
||||
return requests.put(req_url, headers=headers)
|
||||
|
||||
# 컨테이너 디렉토리 리스트
|
||||
def _get_list(self, container):
|
||||
req_url = str(f"{self._get_url()}{self.scAccount}/{container}")
|
||||
|
||||
req_header = self._get_request_header()
|
||||
response = requests.get(req_url, headers=req_header)
|
||||
|
||||
return response.text.split('\n')
|
||||
|
||||
def get_object_list(self, container):
|
||||
req_url = str(f"{self._get_url()}{self.scAccount}/{container}")
|
||||
print(req_url)
|
||||
return self._get_list(req_url)
|
||||
|
||||
def delete(self, containerName, objectPath):
|
||||
req_url = f"{self._get_url()}{self.scAccount}/{containerName}/{objectPath}"
|
||||
headers={
|
||||
"X-Auth-Token": self.token,
|
||||
}
|
||||
return requests.delete(req_url, headers=headers)
|
||||
|
Reference in New Issue
Block a user