Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions powernad/API/MasterReport.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,10 @@ def get_master_report_by_id(self, id: str) -> MasterReportObject:

result = MasterReportObject(result)
return result

def download_master_report_by_url(self, url: str, localpath: str):
result = self.r.download('/report-download', url, localpath)
return result

def create_master_report(self, CreateMasterReportObject: CreateMasterReportObject) -> MasterReportObject:
data = jsonpickle.encode(CreateMasterReportObject, unpicklable=False)
Expand All @@ -42,8 +46,7 @@ def create_master_report(self, CreateMasterReportObject: CreateMasterReportObjec
return result

def delete_master_report_all(self):
self.r.delete('/master-reports')
return True
return self.r.delete('/master-reports')

def delete_master_report_by_id(self, id: str):
self.r.delete('/master-reports', {'id': id})
Expand Down
4 changes: 4 additions & 0 deletions powernad/API/StatReport.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,10 @@ def get_stat_report(self, reportJobId: str) -> StatReportObject:
result = StatReportObject(result)

return result

def download_stat_report_by_url(self, url: str, localpath: str):
result = self.r.download('/report-download', url, localpath)
return result

def create_stat_report(self, CreateStatReportObject: CreateStatReportObject) -> StatReportObject:

Expand Down
55 changes: 39 additions & 16 deletions powernad/Connector/restapi.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import json
import requests
import jsonpickle
import shutil


class RestApi:
Expand Down Expand Up @@ -66,10 +67,28 @@ def parse_response(self, response):
header = response.headers
body = response.text
transaction_id = self.get_transaction_id(header)
json_body = json.loads(body)

return {'transaction_id': transaction_id, 'json': json_body}
if len(body):
json_body = json.loads(body)
else:
json_body = {}
if type(json_body) == list:
json_body.append({'transaction_id': transaction_id})
if type(json_body) == dict:
json_body['transaction_id'] = transaction_id

return {'transaction_id': transaction_id, 'json': json_body}
else: # ex) http status 400 with {"code":11001,"message":"�߸��� �Ķ���� �����Դϴ�."} 1���� �ʰ��� ��¥�� ��û�ϸ� �߻�
header = response.headers
transaction_id = self.get_transaction_id(header)
if transaction_id != "unknown":
body = response.text
if len(body):
json_body = json.loads(body)
json_keys = list(json_body.keys())
if 'code' in json_keys and 'message' in json_keys:
json_body['transaction_id'] = transaction_id
return {'transaction_id': transaction_id, 'json': json_body}

return {}


Expand All @@ -78,11 +97,11 @@ def get(self, uri, query={}):
headers = self.get_header('GET', uri)

try:
r = requests.get(url, headers=headers)
r = requests.get(url, headers=headers)
response = self.parse_response(r)
if not r.ok:
print("Http status: %s" % r.status_code)

return response['json']
except:
print("failed to request")
Expand All @@ -93,15 +112,15 @@ def post(self, uri, data, query={}):
data_str = data
headers = self.get_header('POST', uri)

try:
r = requests.post(url, data=data_str, headers=headers)
response = self.parse_response(r)
if not r.ok:
print("Http status: %s" % r.status_code)
return response['json']
except:
print("failed to request")
#try:
r = requests.post(url, data=data_str, headers=headers)
response = self.parse_response(r)
if not r.ok:
print("Http status: %s" % r.status_code)

return response['json']
#except:
# print("failed to request")


def delete(self, uri, query={}):
Expand Down Expand Up @@ -136,8 +155,12 @@ def put(self, uri, data, query={}):
print("failed to request")


def download(self, url, localpath):
return None
def download(self, uri, rpt_download_url, localpath):
headers = self.get_header('GET', uri)
response = requests.get(rpt_download_url, headers=headers, stream=True)
with open(localpath, 'wb') as out_file:
shutil.copyfileobj(response.raw, out_file)
return True

def null_dict(self, input_dict):
real = dict()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,13 @@
from datetime import datetime
from pytz import timezone

class CreateMasterReportObject:
def __init__(self, item, fromTime):
def __init__(self, item, fromTime, timeZone='Asia/Seoul'):
self.item = item
self.fromTime = fromTime

if fromTime is None:
self.fromTime = None
elif type(fromTime) == datetime:
self.fromTime = fromTime.replace(tzinfo=timezone(timeZone)).isoformat(timespec='seconds')
else:
raise Exception('type of fromTime should be None or datetime')
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
class CreateStatReportObject:
def __init__(self, reportTp, statDt):
self.reportTp = reportTp
self.statDt = statDt
#self.customerId = 1109868
self.statDt = statDt
5 changes: 4 additions & 1 deletion powernad/Object/StatReport/StatReportObject.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,7 @@ def __init__(self, json_def):
self.reportTp = None if 'reportTp' not in s else s['reportTp']
self.statDt = None if 'statDt' not in s else s['statDt']
self.status = None if 'status' not in s else s['status']
self.updateTm = None if 'updateTm' not in s else s['updateTm']
self.updateTm = None if 'updateTm' not in s else s['updateTm']

self.code = None if 'code' not in s else s['code']
self.message = None if 'message' not in s else s['message']