# -*- coding: utf-8 -*-
"""Gửi việc cho app CALIB bằng Python (UTF-8 an toàn).
   --tao        : tạo hỗn hợp (mặc định Yellow RL82 60% + Red 2B8 40%)
   --anh <file> : tải ảnh thực tế cho hỗn hợp id trong --id
"""
import argparse, http.cookiejar, json, os, sys, urllib.parse, urllib.request, uuid

GOC = r'C:\Claw 2\Nghien cuu\Du-an-B-He-mau-Stain-Glaze\calib-app'
HOST = 'http://127.0.0.1:8099'


def multipart(fields, files):
    b = '----calib' + uuid.uuid4().hex
    ra = []
    for k, v in fields.items():
        ra.append(('--%s\r\nContent-Disposition: form-data; name="%s"\r\n\r\n%s\r\n' % (b, k, v)).encode('utf-8'))
    for k, duong in files.items():
        ra.append(('--%s\r\nContent-Disposition: form-data; name="%s"; filename="%s"\r\nContent-Type: image/png\r\n\r\n'
                   % (b, k, os.path.basename(duong))).encode('utf-8'))
        ra.append(open(duong, 'rb').read())
        ra.append(b'\r\n')
    ra.append(('--%s--\r\n' % b).encode('utf-8'))
    return b''.join(ra), 'multipart/form-data; boundary=%s' % b


def op():
    mk = open(os.path.join(GOC, 'mat_khau.txt'), encoding='utf-8').read().strip()
    o = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(http.cookiejar.CookieJar()))
    o.open(HOST + '/dang-nhap', urllib.parse.urlencode({'mat_khau': mk}).encode('utf-8'), timeout=30).read()
    return o


ap = argparse.ArgumentParser()
ap.add_argument('--tao', action='store_true')
ap.add_argument('--thanh-phan', default='[{"ma":"RL82","ti_le":60},{"ma":"2B8","ti_le":40}]')
ap.add_argument('--nguoi-nhap', default='Lab (kiểm thử calib)')
ap.add_argument('--ghi-chu', default='hỗn hợp thử: 60% Yellow RL82 + 40% Red 2B8 (kiểm thử hệ thống)')
ap.add_argument('--id', default='')
ap.add_argument('--anh', default='')
a = ap.parse_args()
o = op()

if a.tao:
    tp = json.loads(a.thanh_phan)
    tong = sum(x['ti_le'] for x in tp)
    du, loai = multipart({'nguoi_nhap': a.nguoi_nhap, 'ghi_chu': a.ghi_chu,
                          'thanh_phan': json.dumps(tp, ensure_ascii=False), 'tong_ti_le': '%.2f' % tong}, {})
    r = o.open(urllib.request.Request(HOST + '/tao-hon-hop', du, {'Content-Type': loai}), timeout=60).read().decode('utf-8')
    print('tạo hỗn hợp →', r)
if a.anh:
    hid = a.id or '1'
    du, loai = multipart({}, {'anh': a.anh})
    o.open(urllib.request.Request(HOST + '/tai-anh?id=' + hid, du, {'Content-Type': loai}), timeout=120).read()
    print('đã tải ảnh thực tế cho hỗn hợp #%s' % hid)
if not a.tao and not a.anh:
    print('trang chủ HTTP', o.open(HOST + '/', timeout=20).status)
