Module imandra.cfb
Expand source code
import urllib
import urllib.parse
import imandra.auth
import json
import gzip
import io
import tarfile
import base64
def analyze (auth, job_file, path):
auth.login()
with open(job_file, 'r') as f:
job_file_contents = f.read()
bytes_io = io.BytesIO()
tf = tarfile.open(mode='w', fileobj=bytes_io)
tf.add(path, arcname="")
b64_bytes = base64.b64encode(bytes_io.getvalue())
b64_string = b64_bytes.decode('ascii')
payload = {
"job": job_file_contents,
"pathTarArchiveBase64": b64_string
}
json_str = json.dumps(payload)
json_bytes = json_str.encode('utf-8')
content = gzip.compress(json_bytes)
url = "{}/{}".format(auth.imandra_web_host, "api/imandra-cfb/analyze")
clen = len(content)
headers = { "X-Auth": auth.token, 'Content-Length': clen, 'Content-Encoding': 'gzip', 'Accept-Encoding': 'gzip' }
request = urllib.request.Request(url, content, headers=headers)
try:
with urllib.request.urlopen(request) as response:
if response.headers['content-encoding'] == 'gzip':
print(gzip.decompress(response.read()).decode('utf-8'))
else:
print(response.read().decode("utf-8"))
except urllib.error.HTTPError as e:
raise ValueError(e.read().decode("utf-8"))
Functions
def analyze(auth, job_file, path)
-
Expand source code
def analyze (auth, job_file, path): auth.login() with open(job_file, 'r') as f: job_file_contents = f.read() bytes_io = io.BytesIO() tf = tarfile.open(mode='w', fileobj=bytes_io) tf.add(path, arcname="") b64_bytes = base64.b64encode(bytes_io.getvalue()) b64_string = b64_bytes.decode('ascii') payload = { "job": job_file_contents, "pathTarArchiveBase64": b64_string } json_str = json.dumps(payload) json_bytes = json_str.encode('utf-8') content = gzip.compress(json_bytes) url = "{}/{}".format(auth.imandra_web_host, "api/imandra-cfb/analyze") clen = len(content) headers = { "X-Auth": auth.token, 'Content-Length': clen, 'Content-Encoding': 'gzip', 'Accept-Encoding': 'gzip' } request = urllib.request.Request(url, content, headers=headers) try: with urllib.request.urlopen(request) as response: if response.headers['content-encoding'] == 'gzip': print(gzip.decompress(response.read()).decode('utf-8')) else: print(response.read().decode("utf-8")) except urllib.error.HTTPError as e: raise ValueError(e.read().decode("utf-8"))