# Path: exactonline/http.py
# FALLBACK_CACERT_FILE = '/etc/ssl/certs/ca-certificates.crt'
#     _PROPERTIES = ('protocols', 'verify_cert', 'cacert_file', 'headers')
# def binquote(value):
#     def __init__(self, url, code, msg, hdrs, response, reqmethod, reqdata):
#     def clean_and_trim(value):
#     def get_content_type(self):
#     def format_req(self):
#     def format_resp(self):
#     def __str__(self):
#     def __or__(self, other):
#     def __init__(self, method=None, *args, **kwargs):
#     def get_method(self):
#     def __init__(self, *args, **kwargs):
#     def connect(self):
#     def __init__(self, cacert_file):
#     def https_open(self, req):
# def http_req(method, url, data=None, opt=opt_default, limiter=None):
# def _marshalled(data):
# def _update_ratelimiter_with_exactonline_headers(limiter, headers):
# def _http_request(url, method=None, data=None, opt=None, limiter=None):
# class BadProtocol(ValueError):
# class HTTPError(request.HTTPError):
# class Options(object):
# class Request(request.Request):
# class ValidHTTPSConnection(HTTPConnection):
# class ValidHTTPSHandler(request.HTTPSHandler):
#             class CustomValidHTTPSConnection(ValidHTTPSConnection):


import json
import logging
import os
import sys
from time import sleep, time
from .http import HTTPError, Options, opt_secure, http_req, binquote, urljoin
                        request.method, request.resource, response))
            decoded = None
        else:
            try:
                decoded = json.loads(response)
            except ValueError:
                raise ValueError(
                    'Expected valid JSON data for %s operation: '
                    'resource=%r, returned=%r' % (
                        request.method, request.resource, response))

        return decoded

    def _rest_query(self, request):
        self.limiter.backoff()

        token = self.storage.get_access_token()
        opt_custom = Options()
        opt_custom.headers = {
            'Accept': 'application/json',
            'Authorization': 'Bearer %s' % (token,),
        }
        if request.method in ('POST', 'PUT'):
            opt_custom.headers.update({'Content-Type': 'application/json'})
        opt = (opt_secure | opt_custom)

        try:
            response = http_req(
                request.method, request.resource, data=request.data,
                opt=opt, limiter=self.limiter)

# Path: exactonline/http.py
# FALLBACK_CACERT_FILE = '/etc/ssl/certs/ca-certificates.crt'
#     _PROPERTIES = ('protocols', 'verify_cert', 'cacert_file', 'headers')
# def binquote(value):
#     def __init__(self, url, code, msg, hdrs, response, reqmethod, reqdata):
#     def clean_and_trim(value):
#     def get_content_type(self):
#     def format_req(self):
#     def format_resp(self):
#     def __str__(self):
#     def __or__(self, other):
#     def __init__(self, method=None, *args, **kwargs):
#     def get_method(self):
#     def __init__(self, *args, **kwargs):
#     def connect(self):
#     def __init__(self, cacert_file):
#     def https_open(self, req):
# def http_req(method, url, data=None, opt=opt_default, limiter=None):
# def _marshalled(data):
# def _update_ratelimiter_with_exactonline_headers(limiter, headers):
# def _http_request(url, method=None, data=None, opt=None, limiter=None):
# class BadProtocol(ValueError):
# class HTTPError(request.HTTPError):
# class Options(object):
# class Request(request.Request):
# class ValidHTTPSConnection(HTTPConnection):
# class ValidHTTPSHandler(request.HTTPSHandler):
#             class CustomValidHTTPSConnection(ValidHTTPSConnection):


# Path: exactonline/rawapi.py
import json
import logging
import os
import sys
from time import sleep, time
from .http import HTTPError, Options, opt_secure, http_req, binquote, urljoin

                        request.method, request.resource, response))
            decoded = None
        else:
            try:
                decoded = json.loads(response)
            except ValueError:
                raise ValueError(
                    'Expected valid JSON data for %s operation: '
                    'resource=%r, returned=%r' % (
                        request.method, request.resource, response))

        return decoded

    def _rest_query(self, request):
        self.limiter.backoff()

        token = self.storage.get_access_token()
        opt_custom = Options()
        opt_custom.headers = {
            'Accept': 'application/json',
            'Authorization': 'Bearer %s' % (token,),
        }
        if request.method in ('POST', 'PUT'):
            opt_custom.headers.update({'Content-Type': 'application/json'})
        opt = (opt_secure | opt_custom)

        try:
            response = http_req(
                request.method, request.resource, data=request.data,
                opt=opt, limiter=self.limiter)

        except HTTPError as e: