コード例 #1
0
                    else:
                        transform_result = {"status_code": resp.status_code, "return_value": {"transform_succeeded": resp.ok, "message": resp.text, "status_code": resp.status_code}}

                logger.debug(f'transform of entity with _id={entity.get("_id","?")}, prop_per_entity={prop_per_entity} received {transform_result} from {rendered_url}')
                if endpoint == 'transform':
                    #if neither error code nor tolerable code abort, otherwise do the expected
                    if not ((transform_result.get("status_code") >= 200 and transform_result.get("status_code") < 400)
                        or (tolerable_status_codes_per_entity
                        and re.search(tolerable_status_codes_per_entity, str(transform_result.get("status_code"))))):
                        abort(transform_result.get("status_code"), transform_result.get("return_value"))
                    entity[prop_per_entity] = transform_result["return_value"]
                elif endpoint == 'sink':
                    resp.raise_for_status()
                yield json.dumps(entity)
        yield "]"

    # get entities from request
    entities = request.get_json()
    response_data_generator = generate(entities, request.endpoint)
    response_data = []
    if do_stream and request.endpoint != 'sink':
        response_data = response_data_generator
    else:
        for entity in response_data_generator:
            response_data.append(entity)
    return Response(response=response_data, mimetype="application/json")


if __name__ == "__main__":
    serve(app, port=PORT)
コード例 #2
0
ファイル: zendesk.py プロジェクト: mofsesam/zendesk
    except Timeout as e:
        logger.error(f"Timeout issue while updating ticket {ticketID}: {e}")
    except ConnectionError as e:
        logger.error(f"ConnectionError issue while updating ticket {ticketID}: {e}")
    except Exception as e:
        logger.error(f"Issue while updating ticket {ticketID} from Zendesk: {e}")


def get_items(session,unix_time_update_date):
    """Helper generator to support streaming with flask"""
    url = f'{ZENURL}/incremental/tickets.json?start_time={unix_time_update_date}'
        # https://developer.zendesk.com/rest_api/docs/support/tickets#list-tickets
    check_items = True
    while check_items:
        response = session.get(url, timeout=180)
        data = response.json()
        end_time = data["end_time"]
        url = data['next_page']
        logger.debug(f"Next page url: {url}")
        # logger.debug(f"Data count: {data['count']}")
        for item in data['tickets']:
            logger.debug(f"item: {item}")
            item["_id"] = str(item["id"])
            item["_updated"] = end_time
            yield item
        if data['count'] < 1000:  # pagination used for Zendesk incremental importing. Next page will newer be none when using timestamp 
            check_items = False

if __name__ == "__main__":
    serve(app)
コード例 #3
0
                if validation_resp == "Your xml file was validated :)":
                    files_to_send.append(file_temp)
                else:
                    logger.error('Validation unsuccessfull! :(')

                logger.info("Finished appending file to list")
                file_obj.close()
                schema_obj.close()
            else:
                files_to_send.append(file_temp)
                logger.info("Finished appending file to list")
                file_obj.close()
        except Exception as e:
            logger.error(f"Failed to get file from fileshare. Error: {e}")

    conn.close()
    logger.info(f"Finished appending files... ;)")
    return jsonify({'files': files_to_send})


if __name__ == "__main__":
    logger.info("Starting service...")

    # Test connection at startup
    conn = create_connection()
    if not conn.connect(config.host, 445):
        logger.error("Failed to authenticate with the provided credentials")
    conn.close()

    serve(APP)
コード例 #4
0
        logger.critical('Wrong type gave error: {}'.format(e))
    except Exception as e:
        logger.critical(
            f'Error when handling entities:\n{json.dumps(req_entities)}\nError message:\n{e}'
        )

    # Generate the response
    try:
        return Response(stream_json(output), mimetype='application/json')
    except BaseException as e:
        return Response(
            status=500,
            response=f"An error occured during transform of input. Error: {e}")


if __name__ == '__main__':
    variables = VariablesConfig([
        'db_host', 'db_port', 'db_database', 'db_username', 'db_password',
        'handler', 'query', 'LOG_LEVEL'
    ])
    if not variables.validate():
        sys.exit(-1)

    databaseConnection = OracleDB(host=variables.db_host,
                                  port=variables.db_port,
                                  database=variables.db_database,
                                  username=variables.db_username,
                                  password=variables.db_password)
    logger = sesam_logger(logger_name='SQL_TRANSFORM', timestamp=True, app=app)
    serve(app=app)
コード例 #5
0
        return Response(status=500, response=json.dumps(input_data), content_type='application/json')
    return Response(json.dumps(input_data), content_type='application/json')


def download_file(res: requests.Response) -> str:
    """
    function that downloads a binary content of input response object and
    stores into NamedTemporaryFile in file system
    :param res: requests.Response instance
    :return: stored file name (path)
    """
    logger.debug("Chunked file download started")
    with tempfile.NamedTemporaryFile(delete=False) as file:
        for chunk in res.iter_content(chunk_size=config.CHUNK_SIZE):
            if chunk:
                file.write(chunk)
        file.close()
    logger.debug(f"File stored as {file.name}")
    return file.name


if __name__ == "__main__":

    IS_DEBUG_ENABLED = logger.isEnabledFor(logging.DEBUG)

    if IS_DEBUG_ENABLED:
        APP.run(debug=IS_DEBUG_ENABLED, host='0.0.0.0', port=5000)
    else:
        serve(APP, config={'server.max_request_body_size': 0,
                           'server.socket_timeout': 60})
コード例 #6
0
    # if we have PDF file back
    if response.headers['Content-Type'] == 'application/pdf':

        logging.debug(f'got PDF response')
        fp = tempfile.TemporaryFile()
        for chunk in response.iter_content(chunk_size=8192):
            if chunk:
                fp.write(chunk)
        fp.flush()

        def stream_and_remove_file():
            yield from fp
            fp.close()

        return Response(stream_and_remove_file(), mimetype='application/pdf')

    error = f"couldn't process MIPS response, response headers: {response.headers}"
    logging.warning(error)
    abort(500, error)


if __name__ == '__main__':
    logging.basicConfig(level=logging.getLevelName(LOG_LEVEL))

    IS_DEBUG_ENABLED = True if logging.getLogger().isEnabledFor(logging.DEBUG) else False

    if IS_DEBUG_ENABLED:
        APP.run(debug=IS_DEBUG_ENABLED, host='0.0.0.0', port=PORT)
    else:
        serve(APP, port=PORT, config={'server.thread_pool': WORKERS, 'server.max_request_body_size': 0})
コード例 #7
0
        exception_str = error_handling()
        logging.error(exception_str)
        return abort(500, exception_str)


if __name__ == '__main__':
    FULL_URL_PATTERN = get_var('FULL_URL_PATTERN')
    UPDATED_URL_PATTERN = get_var('UPDATED_URL_PATTERN')
    UPDATED_PROPERTY = get_var('UPDATED_PROPERTY')
    OFFSET_BIGGER_AND_EQUAL = get_var('OFFSET_BIGGER_AND_EQUAL')
    auth_type = get_var('AUTHENTICATION')
    config = json.loads(get_var('CONFIG'))

    print('STARTED UP WITH:')
    print('\tFULL_URL_PATTERN={}'.format(FULL_URL_PATTERN))
    print('\tUPDATED_URL_PATTERN={}'.format(UPDATED_URL_PATTERN))
    print('\tUPDATED_PROPERTY={}'.format(UPDATED_PROPERTY))
    print('\tOFFSET_BIGGER_AND_EQUAL={}'.format(OFFSET_BIGGER_AND_EQUAL))
    print('\tauth_type={}'.format(auth_type))
    if not auth_type:
        SYSTEM = OpenUrlSystem(config)
    elif auth_type.upper() == 'OAUTH2':
        SYSTEM = Oauth2System(config)

    if os.environ.get('WEBFRAMEWORK', '').lower() == 'flask':
        app.run(debug=True,
                host='0.0.0.0',
                port=int(os.environ.get('PORT', 5000)))
    else:
        serve(app, int(os.environ.get("PORT", 5000)))