# -*-coding:utf-8 -*- #
# ---------------------------------------------------------------------------
# ProjectName:   test_56
# FileName:      requests_method.py
# Author:       xxxxxxx
# Datetime:     2023/8/7 15:47
# Description:
# 
# ---------------------------------------------------------------------------
import base64
import requests
from InterfaceAutoTest.common.read_ini import ReadIni


class RequestsMethod:
    def __init__(self):
        """关联token"""
        url = ReadIni().get_host("test_bpm") + "/auth"
        data = {"username": "admin", "password": base64.b64encode("123456".encode("utf-8")).decode("utf-8")}
        self.bpm_session = requests.sessions.Session()
        self.bpm_session.headers["Authorization"] = "Bearer "+self.bpm_session.post(url=url, json=data).json().get("token")

    def request_all(self, req_method, req_url, req_mime, case_data):
        if req_mime == "json" or req_mime == "application/json":
            return self.bpm_session.request(method=req_method, url=req_url, json=case_data)
        elif req_mime == "x-www-form-urlencoded" or req_mime == "application/x-www-form-urlencoded":
            return self.bpm_session.request(method=req_method, url=req_url, data=case_data)
        elif req_mime == "form-data" or req_mime == "multipart/form-data":
            return self.bpm_session.request(method=req_method, url=req_url, files=case_data)
        elif req_mime == "query" or req_mime == "params":
            return self.bpm_session.request(method=req_method, url=req_url, params=case_data)

        elif req_mime == "application/json|query" or req_mime == "application/json|query" or req_mime == "query|json":
            return self.bpm_session.request(method=req_method, url=req_url, params=case_data["query"], json=case_data["body"])

        elif req_mime == "text/plain" or req_mime == "text":
            return self.bpm_session.request(method=req_method, url=req_url, data=case_data)

        elif req_mime is None:
            return self.bpm_session.request(method=req_method, url=req_url)

        else:
            raise NameError("传入的媒体类型的名称错误")