stoobly-agent 0.34.0__tar.gz → 0.34.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (594) hide show
  1. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/PKG-INFO +1 -1
  2. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/pyproject.toml +1 -1
  3. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/__init__.py +1 -1
  4. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/cli/config_cli.py +9 -0
  5. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/cli/dev_tools_cli.py +1 -0
  6. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/cli/endpoint_cli.py +2 -2
  7. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/cli/helpers/endpoints_import_service.py +14 -9
  8. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/cli/helpers/openapi_endpoint_adapter.py +4 -0
  9. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/cli/helpers/replay_facade.py +4 -0
  10. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/cli/request_cli.py +2 -0
  11. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/cli/scenario_cli.py +2 -0
  12. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/cli/types/test.py +2 -0
  13. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/factories/resource/local_db/helpers/request_builder.py +1 -1
  14. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/handle_mock_service.py +15 -3
  15. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/intercept_settings.py +39 -0
  16. stoobly_agent-0.34.2/stoobly_agent/app/proxy/mock/eval_fixtures_service.py +61 -0
  17. stoobly_agent-0.34.2/stoobly_agent/app/proxy/mock/types/__init__.py +10 -0
  18. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/replay/replay_request_service.py +11 -3
  19. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/run.py +6 -0
  20. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/test/context.py +12 -0
  21. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/test/context_abc.py +15 -0
  22. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/settings/__init__.py +4 -0
  23. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/cli.py +13 -2
  24. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/config/constants/custom_headers.py +2 -0
  25. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/config/constants/env_vars.py +2 -0
  26. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/app/cli/helpers/openapi_endpoint_adapter_additional_props_test.py +0 -24
  27. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/app/cli/helpers/openapi_endpoint_adapter_missing_info_test.py +0 -26
  28. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/app/cli/helpers/openapi_endpoint_adapter_missing_oauth2_scopes_test.py +0 -26
  29. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/app/cli/helpers/openapi_endpoint_adapter_missing_servers_test.py +0 -26
  30. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/app/cli/helpers/openapi_endpoint_adapter_test.py +0 -139
  31. stoobly_agent-0.34.2/stoobly_agent/test/app/models/schemas/.stoobly/db/VERSION +1 -0
  32. stoobly_agent-0.34.2/stoobly_agent/test/app/proxy/mock/eval_fixtures_service_test.py +95 -0
  33. stoobly_agent-0.34.0/stoobly_agent/test/app/models/schemas/.stoobly/db/VERSION +0 -1
  34. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/LICENSE +0 -0
  35. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/README.md +0 -0
  36. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/__init__.py +0 -0
  37. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/api/__init__.py +0 -0
  38. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/api/application_http_request_handler.py +0 -0
  39. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/api/bodies_controller.py +0 -0
  40. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/api/configs_controller.py +0 -0
  41. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/api/headers_controller.py +0 -0
  42. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/api/proxy_controller.py +0 -0
  43. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/api/query_params_controller.py +0 -0
  44. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/api/replayed_response_headers_controller.py +0 -0
  45. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/api/replayed_responses_controller.py +0 -0
  46. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/api/requests_controller.py +0 -0
  47. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/api/response_headers_controller.py +0 -0
  48. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/api/responses_controller.py +0 -0
  49. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/api/routes.py +0 -0
  50. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/api/scenarios_controller.py +0 -0
  51. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/api/simple_http_request_handler.py +0 -0
  52. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/api/statuses_controller.py +0 -0
  53. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/cli/__init__.py +0 -0
  54. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/cli/ca_cert_cli.py +0 -0
  55. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/cli/ca_cert_installer.py +0 -0
  56. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/cli/decorators/__init__.py +0 -0
  57. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/cli/decorators/config.py +0 -0
  58. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/cli/decorators/exec.py +0 -0
  59. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/cli/feature_cli.py +0 -0
  60. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/cli/handlers/request_cli_handler.py +0 -0
  61. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/cli/handlers/scenario_cli_handler.py +0 -0
  62. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/cli/helpers/__init__.py +0 -0
  63. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/cli/helpers/context.py +0 -0
  64. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/cli/helpers/endpoint_facade.py +0 -0
  65. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/cli/helpers/endpoints_apply_context.py +0 -0
  66. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/cli/helpers/endpoints_apply_service.py +0 -0
  67. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/cli/helpers/endpoints_import_context.py +0 -0
  68. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/cli/helpers/feature_flags.py +0 -0
  69. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/cli/helpers/handle_config_update_service.py +0 -0
  70. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/cli/helpers/handle_mock_service.py +0 -0
  71. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/cli/helpers/handle_replay_service.py +0 -0
  72. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/cli/helpers/handle_test_service.py +0 -0
  73. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/cli/helpers/iterate_group_by.py +0 -0
  74. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/cli/helpers/json_print.py +0 -0
  75. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/cli/helpers/print_service.py +0 -0
  76. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/cli/helpers/project_facade.py +0 -0
  77. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/cli/helpers/report_facade.py +0 -0
  78. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/cli/helpers/request_facade.py +0 -0
  79. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/cli/helpers/request_synchronize_handler.py +0 -0
  80. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/cli/helpers/run_command_service.py +0 -0
  81. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/cli/helpers/scenario_facade.py +0 -0
  82. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/cli/helpers/schema_builder.py +0 -0
  83. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/cli/helpers/synchronize_request_service.py +0 -0
  84. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/cli/helpers/tabulate_print_service.py +0 -0
  85. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/cli/helpers/test_facade.py +0 -0
  86. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/cli/helpers/test_replay_context.py +0 -0
  87. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/cli/helpers/trace_aliases.py +0 -0
  88. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/cli/helpers/trace_context_facade.py +0 -0
  89. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/cli/helpers/validations.py +0 -0
  90. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/cli/helpers/verify_raw_request_service.py +0 -0
  91. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/cli/intercept_cli.py +0 -0
  92. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/cli/main_group.py +0 -0
  93. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/cli/project_cli.py +0 -0
  94. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/cli/report_cli.py +0 -0
  95. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/cli/snapshot_cli.py +0 -0
  96. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/cli/trace_cli.py +0 -0
  97. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/cli/types/__init__.py +0 -0
  98. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/cli/types/output.py +0 -0
  99. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/cli/types/print_options.py +0 -0
  100. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/cli/types/request.py +0 -0
  101. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/cli/types/scenario.py +0 -0
  102. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/__init__.py +0 -0
  103. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/adapters/__init__.py +0 -0
  104. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/adapters/joined_request_adapter.py +0 -0
  105. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/adapters/mitmproxy/__init__.py +0 -0
  106. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/adapters/mitmproxy/request/__init__.py +0 -0
  107. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/adapters/mitmproxy/request/python_adapter.py +0 -0
  108. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/adapters/mitmproxy/response/__init__.py +0 -0
  109. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/adapters/mitmproxy/response/python_adapter.py +0 -0
  110. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/adapters/orm/__init__.py +0 -0
  111. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/adapters/orm/joined_request_string_adapter.py +0 -0
  112. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/adapters/orm/request/__init__.py +0 -0
  113. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/adapters/orm/request/mitmproxy_adapter.py +0 -0
  114. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/adapters/orm/request/python_adapter.py +0 -0
  115. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/adapters/orm/response/__init__.py +0 -0
  116. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/adapters/orm/response/mitmproxy_adapter.py +0 -0
  117. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/adapters/orm/response/python_adapter.py +0 -0
  118. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/adapters/python/__init__.py +0 -0
  119. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/adapters/python/request/__init__.py +0 -0
  120. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/adapters/python/request/mitmproxy_adapter.py +0 -0
  121. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/adapters/python/request/raw_adapter.py +0 -0
  122. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/adapters/python/request/stoobly_adapter.py +0 -0
  123. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/adapters/python/response/__init__.py +0 -0
  124. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/adapters/python/response/mitmproxy_adapter.py +0 -0
  125. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/adapters/python/response/raw_adapter.py +0 -0
  126. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/adapters/raw_http_request_adapter.py +0 -0
  127. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/adapters/raw_http_response_adapter.py +0 -0
  128. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/adapters/raw_joined/__init__.py +0 -0
  129. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/adapters/raw_joined/request/__init__.py +0 -0
  130. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/adapters/raw_joined/request/python_adapter.py +0 -0
  131. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/adapters/raw_joined/response/__init__.py +0 -0
  132. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/adapters/raw_joined/response/python_adapter.py +0 -0
  133. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/adapters/stoobly/__init__.py +0 -0
  134. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/adapters/stoobly/request/__init__.py +0 -0
  135. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/adapters/stoobly/request/mitmproxy_adapter.py +0 -0
  136. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/body_model.py +0 -0
  137. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/factories/__init__.py +0 -0
  138. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/factories/resource/__init__.py +0 -0
  139. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/factories/resource/body.py +0 -0
  140. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/factories/resource/header.py +0 -0
  141. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/factories/resource/local_db/__init__.py +0 -0
  142. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/factories/resource/local_db/body_adapter.py +0 -0
  143. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/factories/resource/local_db/header_adapter.py +0 -0
  144. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/factories/resource/local_db/helpers/__init__.py +0 -0
  145. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/factories/resource/local_db/helpers/create_request_columns_service.py +0 -0
  146. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/factories/resource/local_db/helpers/log.py +0 -0
  147. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/factories/resource/local_db/helpers/log_event.py +0 -0
  148. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/factories/resource/local_db/helpers/request_snapshot.py +0 -0
  149. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/factories/resource/local_db/helpers/scenario_snapshot.py +0 -0
  150. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/factories/resource/local_db/helpers/search.py +0 -0
  151. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/factories/resource/local_db/helpers/snapshot.py +0 -0
  152. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/factories/resource/local_db/helpers/snapshot_service.py +0 -0
  153. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/factories/resource/local_db/helpers/snapshot_types.py +0 -0
  154. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/factories/resource/local_db/helpers/tiebreak_scenario_request.py +0 -0
  155. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/factories/resource/local_db/local_db_adapter.py +0 -0
  156. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/factories/resource/local_db/orm_request_builder.py +0 -0
  157. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/factories/resource/local_db/query_param_adapter.py +0 -0
  158. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/factories/resource/local_db/replayed_response_adapter.py +0 -0
  159. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/factories/resource/local_db/request_adapter.py +0 -0
  160. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/factories/resource/local_db/response_adapter.py +0 -0
  161. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/factories/resource/local_db/response_header_adapter.py +0 -0
  162. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/factories/resource/local_db/scenario_adapter.py +0 -0
  163. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/factories/resource/query_param.py +0 -0
  164. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/factories/resource/replayed_response.py +0 -0
  165. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/factories/resource/request.py +0 -0
  166. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/factories/resource/response.py +0 -0
  167. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/factories/resource/response_header.py +0 -0
  168. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/factories/resource/scenario.py +0 -0
  169. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/factories/resource/stoobly/__init__.py +0 -0
  170. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/factories/resource/stoobly/request_adapter.py +0 -0
  171. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/factories/resource/stoobly/scenario_adapter.py +0 -0
  172. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/header_model.py +0 -0
  173. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/helpers/__init__.py +0 -0
  174. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/helpers/apply.py +0 -0
  175. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/helpers/create_request_params_service.py +0 -0
  176. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/model.py +0 -0
  177. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/query_param_model.py +0 -0
  178. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/replayed_response_model.py +0 -0
  179. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/request_model.py +0 -0
  180. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/response_header_model.py +0 -0
  181. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/response_model.py +0 -0
  182. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/scenario_model.py +0 -0
  183. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/schemas/__init__.py +0 -0
  184. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/schemas/request.py +0 -0
  185. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/types/__init__.py +0 -0
  186. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/types/endpoint.py +0 -0
  187. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/types/replayed_response.py +0 -0
  188. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/types/request.py +0 -0
  189. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/types/request_components.py +0 -0
  190. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/types/response.py +0 -0
  191. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/models/types/scenario.py +0 -0
  192. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/__init__.py +0 -0
  193. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/constants/__init__.py +0 -0
  194. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/constants/custom_response_codes.py +0 -0
  195. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/context.py +0 -0
  196. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/handle_record_service.py +0 -0
  197. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/handle_replay_service.py +0 -0
  198. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/handle_test_service.py +0 -0
  199. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/hot_reload.py +0 -0
  200. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/intercept_handler.py +0 -0
  201. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/mitmproxy/__init__.py +0 -0
  202. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/mitmproxy/flow_mock.py +0 -0
  203. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/mitmproxy/request.py +0 -0
  204. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/mitmproxy/request_body_facade.py +0 -0
  205. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/mitmproxy/request_facade.py +0 -0
  206. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/mitmproxy/response.py +0 -0
  207. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/mitmproxy/response_facade.py +0 -0
  208. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/mock/__init__.py +0 -0
  209. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/mock/context.py +0 -0
  210. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/mock/custom_not_found_response_builder.py +0 -0
  211. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/mock/eval_request_service.py +0 -0
  212. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/mock/hashed_request_decorator.py +0 -0
  213. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/mock/ignored_components_response_builder.py +0 -0
  214. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/mock/request_hasher.py +0 -0
  215. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/mock/search_endpoint.py +0 -0
  216. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/record/__init__.py +0 -0
  217. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/record/context.py +0 -0
  218. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/record/join_request_service.py +0 -0
  219. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/record/joined_request.py +0 -0
  220. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/record/overwrite_scenario_service.py +0 -0
  221. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/record/proxy_request.py +0 -0
  222. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/record/request_string.py +0 -0
  223. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/record/request_string_control.py +0 -0
  224. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/record/response_string.py +0 -0
  225. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/record/response_string_control.py +0 -0
  226. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/record/upload_request_service.py +0 -0
  227. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/replay/__init__.py +0 -0
  228. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/replay/alias_context.py +0 -0
  229. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/replay/alias_resolver.py +0 -0
  230. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/replay/body_parser_service.py +0 -0
  231. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/replay/context.py +0 -0
  232. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/replay/multipart.py +0 -0
  233. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/replay/replay_scenario_service.py +0 -0
  234. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/replay/rewrite_params_service.py +0 -0
  235. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/replay/trace_context.py +0 -0
  236. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/settings.py +0 -0
  237. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/simulate_intercept_service.py +0 -0
  238. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/test/__init__.py +0 -0
  239. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/test/context_response.py +0 -0
  240. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/test/helpers/__init__.py +0 -0
  241. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/test/helpers/diff_service.py +0 -0
  242. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/test/helpers/endpoint_facade.py +0 -0
  243. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/test/helpers/mitmproxy_response_adapter.py +0 -0
  244. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/test/helpers/request_component_names_facade.py +0 -0
  245. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/test/helpers/requests_response_adapter.py +0 -0
  246. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/test/helpers/stoobly_response_adapter.py +0 -0
  247. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/test/helpers/test_results_builder.py +0 -0
  248. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/test/helpers/upload_test_service.py +0 -0
  249. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/test/matchers/__init__.py +0 -0
  250. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/test/matchers/context.py +0 -0
  251. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/test/matchers/contract.py +0 -0
  252. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/test/matchers/custom.py +0 -0
  253. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/test/matchers/diff.py +0 -0
  254. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/test/matchers/errors.py +0 -0
  255. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/test/matchers/fuzzy.py +0 -0
  256. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/test/matchers/handlers/__init__.py +0 -0
  257. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/test/test_service.py +0 -0
  258. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/utils/__init__.py +0 -0
  259. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/utils/allowed_request_service.py +0 -0
  260. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/utils/publish_change_service.py +0 -0
  261. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/utils/request_handler.py +0 -0
  262. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/utils/response_handler.py +0 -0
  263. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/proxy/utils/rewrite_rules_to_ignored_components_service.py +0 -0
  264. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/settings/cli_settings.py +0 -0
  265. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/settings/constants/__init__.py +0 -0
  266. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/settings/constants/firewall_action.py +0 -0
  267. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/settings/constants/intercept_mode.py +0 -0
  268. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/settings/constants/mode.py +0 -0
  269. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/settings/constants/request_component.py +0 -0
  270. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/settings/data_rules.py +0 -0
  271. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/settings/data_settings.py +0 -0
  272. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/settings/feature_settings.py +0 -0
  273. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/settings/firewall_rule.py +0 -0
  274. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/settings/firewall_settings.py +0 -0
  275. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/settings/helpers/active_mode_settings_builder.py +0 -0
  276. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/settings/intercept_settings.py +0 -0
  277. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/settings/match_rule.py +0 -0
  278. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/settings/match_settings.py +0 -0
  279. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/settings/parameter_rule.py +0 -0
  280. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/settings/proxy_settings.py +0 -0
  281. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/settings/remote_settings.py +0 -0
  282. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/settings/rewrite_rule.py +0 -0
  283. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/settings/rewrite_settings.py +0 -0
  284. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/settings/types/__init__.py +0 -0
  285. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/settings/types/cli_settings.py +0 -0
  286. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/settings/types/proxy_settings.py +0 -0
  287. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/settings/types/remote_settings.py +0 -0
  288. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/settings/types/ui_settings.py +0 -0
  289. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/settings/ui_settings.py +0 -0
  290. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/app/settings/url_rule.py +0 -0
  291. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/config/__init__.py +0 -0
  292. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/config/constants/__init__.py +0 -0
  293. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/config/constants/alias_resolve_strategy.py +0 -0
  294. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/config/constants/headers.py +0 -0
  295. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/config/constants/lifecycle_hooks.py +0 -0
  296. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/config/constants/mock_policy.py +0 -0
  297. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/config/constants/mode.py +0 -0
  298. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/config/constants/record_policy.py +0 -0
  299. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/config/constants/replay_policy.py +0 -0
  300. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/config/constants/request_origin.py +0 -0
  301. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/config/constants/statuses.py +0 -0
  302. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/config/constants/test_filter.py +0 -0
  303. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/config/constants/test_output_level.py +0 -0
  304. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/config/constants/test_strategy.py +0 -0
  305. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/config/data_dir.py +0 -0
  306. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/config/mitmproxy.py +0 -0
  307. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/config/schema.yml +0 -0
  308. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/config/settings.yml.sample +0 -0
  309. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/config/source_dir.py +0 -0
  310. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/db/migrations/2022_03_17_060144_create_requests.py +0 -0
  311. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/db/migrations/2022_03_17_074916_create_responses.py +0 -0
  312. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/db/migrations/2022_05_10_003705_create_traces.py +0 -0
  313. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/db/migrations/2022_05_10_003840_create_trace_aliases.py +0 -0
  314. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/db/migrations/2022_06_29_234516_create_trace_requests.py +0 -0
  315. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/db/migrations/2022_06_29_235155_add_trace_request_reference_to_trace_aliases.py +0 -0
  316. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/db/migrations/2022_12_12_092437_align_requests.py +0 -0
  317. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/db/migrations/2022_12_28_092917_add_filter_columns_to_requests.py +0 -0
  318. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/db/migrations/2023_01_21_055426_create_scenarios.py +0 -0
  319. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/db/migrations/2023_01_21_060225_add_scenario_id_reference_to_requests.py +0 -0
  320. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/db/migrations/2023_02_02_022229_create_replayed_responses.py +0 -0
  321. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/db/migrations/2023_03_20_192909_add_http_version_column_to_requests.py +0 -0
  322. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/db/migrations/2023_03_20_220448_add_http_version_column_to_responses.py +0 -0
  323. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/db/migrations/2023_04_18_071327_align_requests.py +0 -0
  324. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/db/migrations/2023_05_15_212505_add_uuid_column_to_requests.py +0 -0
  325. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/db/migrations/2023_05_15_213119_add_uuid_column_to_scenarios.py +0 -0
  326. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/db/migrations/2023_05_29_053649_add_overwritable_column_to_scenarios.py +0 -0
  327. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/db/migrations/__init__.py +0 -0
  328. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/__init__.py +0 -0
  329. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/api/__init__.py +0 -0
  330. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/api/agent_api.py +0 -0
  331. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/api/api.py +0 -0
  332. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/api/body_param_names_resource.py +0 -0
  333. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/api/endpoints_resource.py +0 -0
  334. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/api/header_names_resource.py +0 -0
  335. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/api/interfaces/__init__.py +0 -0
  336. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/api/interfaces/endpoints.py +0 -0
  337. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/api/interfaces/headers.py +0 -0
  338. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/api/interfaces/pagination_query_params.py +0 -0
  339. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/api/interfaces/projects.py +0 -0
  340. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/api/interfaces/query_params.py +0 -0
  341. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/api/interfaces/reports.py +0 -0
  342. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/api/interfaces/requests.py +0 -0
  343. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/api/interfaces/response_headers.py +0 -0
  344. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/api/interfaces/responses.py +0 -0
  345. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/api/interfaces/scenarios.py +0 -0
  346. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/api/interfaces/tests.py +0 -0
  347. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/api/interfaces/traces.py +0 -0
  348. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/api/interfaces/users.py +0 -0
  349. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/api/json_response_builder.py +0 -0
  350. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/api/keys/__init__.py +0 -0
  351. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/api/keys/organization_key.py +0 -0
  352. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/api/keys/project_key.py +0 -0
  353. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/api/keys/report_key.py +0 -0
  354. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/api/keys/request_key.py +0 -0
  355. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/api/keys/resource_key.py +0 -0
  356. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/api/keys/scenario_key.py +0 -0
  357. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/api/keys/test_key.py +0 -0
  358. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/api/keys/uuid_key.py +0 -0
  359. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/api/param_builder.py +0 -0
  360. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/api/projects_resource.py +0 -0
  361. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/api/query_param_names_resource.py +0 -0
  362. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/api/reports_resource.py +0 -0
  363. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/api/requests_resource.py +0 -0
  364. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/api/response_header_names_resource.py +0 -0
  365. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/api/response_param_names_resource.py +0 -0
  366. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/api/scenarios_resource.py +0 -0
  367. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/api/stoobly_api.py +0 -0
  368. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/api/test_responses_resource.py +0 -0
  369. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/api/tests_resource.py +0 -0
  370. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/api/users_resource.py +0 -0
  371. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/cache.py +0 -0
  372. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/logger.py +0 -0
  373. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/orm/__init__.py +0 -0
  374. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/orm/base.py +0 -0
  375. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/orm/migrate_service.py +0 -0
  376. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/orm/replayed_response.py +0 -0
  377. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/orm/request.py +0 -0
  378. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/orm/response.py +0 -0
  379. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/orm/scenario.py +0 -0
  380. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/orm/trace.py +0 -0
  381. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/orm/trace_alias.py +0 -0
  382. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/orm/trace_request.py +0 -0
  383. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/orm/transformers/__init__.py +0 -0
  384. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/orm/transformers/orm_to_request_transformer.py +0 -0
  385. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/orm/transformers/orm_to_requests_response_transformer.py +0 -0
  386. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/orm/transformers/orm_to_stoobly_request_transformer.py +0 -0
  387. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/orm/transformers/orm_to_stoobly_response_transformer.py +0 -0
  388. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/orm/types/__init__.py +0 -0
  389. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/orm/types/request_columns.py +0 -0
  390. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/orm/types/response_columns.py +0 -0
  391. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/orm/utils/__init__.py +0 -0
  392. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/orm/utils/request_parse_handler.py +0 -0
  393. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/orm/utils/requests_response_builder.py +0 -0
  394. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/orm/utils/response_parse_handler.py +0 -0
  395. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/utils/__init__.py +0 -0
  396. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/utils/conditional_decorator.py +0 -0
  397. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/utils/decode.py +0 -0
  398. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/utils/jmespath.py +0 -0
  399. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/utils/python_to_ruby_type.py +0 -0
  400. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/lib/utils/visitor.py +0 -0
  401. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/mock.py +0 -0
  402. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/0-es2015.a7e60cafc0868f87a771.js +0 -0
  403. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/0-es5.a7e60cafc0868f87a771.js +0 -0
  404. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/1-es2015.cb071776436f10954db5.js +0 -0
  405. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/1-es5.cb071776436f10954db5.js +0 -0
  406. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/10-es2015.bb1702aaf3968a2cb521.js +0 -0
  407. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/10-es5.bb1702aaf3968a2cb521.js +0 -0
  408. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/12-es2015.591ec692afb8f8d13842.js +0 -0
  409. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/12-es5.591ec692afb8f8d13842.js +0 -0
  410. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/13-es2015.f381e7d6ff361b669e12.js +0 -0
  411. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/13-es5.f381e7d6ff361b669e12.js +0 -0
  412. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/14-es2015.1ffb225a16d6292dbddd.js +0 -0
  413. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/14-es5.1ffb225a16d6292dbddd.js +0 -0
  414. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/15-es2015.2cf39bcaeb0ea2c52297.js +0 -0
  415. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/15-es5.2cf39bcaeb0ea2c52297.js +0 -0
  416. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/16-es2015.0e9422b274e642f95e41.js +0 -0
  417. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/16-es5.0e9422b274e642f95e41.js +0 -0
  418. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/17-es2015.7fb08367a22d1e34aed7.js +0 -0
  419. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/17-es5.7fb08367a22d1e34aed7.js +0 -0
  420. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/18-es2015.5caa4789d1c335e628f2.js +0 -0
  421. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/18-es5.5caa4789d1c335e628f2.js +0 -0
  422. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/19-es2015.8049aef58c329c500f9b.js +0 -0
  423. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/19-es5.8049aef58c329c500f9b.js +0 -0
  424. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/2-es2015.8f184ac63348ba447b1f.js +0 -0
  425. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/2-es5.8f184ac63348ba447b1f.js +0 -0
  426. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/20-es2015.473486aabfa4d4a6431b.js +0 -0
  427. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/20-es5.473486aabfa4d4a6431b.js +0 -0
  428. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/21-es2015.63ed4e6b242fbc047bd6.js +0 -0
  429. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/21-es5.63ed4e6b242fbc047bd6.js +0 -0
  430. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/22-es2015.df183804415330639987.js +0 -0
  431. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/22-es5.df183804415330639987.js +0 -0
  432. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/23-es2015.0da63b056fabde91bb0b.js +0 -0
  433. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/23-es5.0da63b056fabde91bb0b.js +0 -0
  434. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/28-es2015.9fe030e9d3b0e52239aa.js +0 -0
  435. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/28-es5.9fe030e9d3b0e52239aa.js +0 -0
  436. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/29-es2015.9b440f22de725732e5ab.js +0 -0
  437. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/29-es5.9b440f22de725732e5ab.js +0 -0
  438. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/30-es2015.6ad2a5126b0a27c1e7c6.js +0 -0
  439. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/30-es5.6ad2a5126b0a27c1e7c6.js +0 -0
  440. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/31-es2015.f4291150f35d54ff19ca.js +0 -0
  441. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/31-es5.f4291150f35d54ff19ca.js +0 -0
  442. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/32-es2015.c8f6ccb43bdba0adf199.js +0 -0
  443. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/32-es5.c8f6ccb43bdba0adf199.js +0 -0
  444. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/33-es2015.f985e93402ebf86322ef.js +0 -0
  445. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/33-es5.f985e93402ebf86322ef.js +0 -0
  446. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/34-es2015.0e1961fb3cf649a52d49.js +0 -0
  447. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/34-es5.0e1961fb3cf649a52d49.js +0 -0
  448. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/35-es2015.a4ae56a89c0324397624.js +0 -0
  449. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/35-es5.a4ae56a89c0324397624.js +0 -0
  450. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/36-es2015.b8fdd25590a79c820119.js +0 -0
  451. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/36-es5.b8fdd25590a79c820119.js +0 -0
  452. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/37-es2015.6567a0ce4cf87ad7287b.js +0 -0
  453. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/37-es5.6567a0ce4cf87ad7287b.js +0 -0
  454. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/38-es2015.6f6d751bff41d84d727a.js +0 -0
  455. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/38-es5.6f6d751bff41d84d727a.js +0 -0
  456. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/39-es2015.47f63177e7d4509a22fa.js +0 -0
  457. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/39-es5.47f63177e7d4509a22fa.js +0 -0
  458. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/3rdpartylicenses.txt +0 -0
  459. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/4-es2015.182e1ce1811ef67571fb.js +0 -0
  460. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/4-es5.182e1ce1811ef67571fb.js +0 -0
  461. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/40-es2015.5333067cdc4077c7495a.js +0 -0
  462. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/40-es5.5333067cdc4077c7495a.js +0 -0
  463. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/41-es2015.7a2434380c81c11ff2c5.js +0 -0
  464. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/41-es5.7a2434380c81c11ff2c5.js +0 -0
  465. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/42-es2015.5dde662fe1e3b4e4bdd1.js +0 -0
  466. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/42-es5.5dde662fe1e3b4e4bdd1.js +0 -0
  467. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/43-es2015.608e917d689b9bb762cb.js +0 -0
  468. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/43-es5.608e917d689b9bb762cb.js +0 -0
  469. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/44-es2015.2ae5fea15b5e8c2681d3.js +0 -0
  470. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/44-es5.2ae5fea15b5e8c2681d3.js +0 -0
  471. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/45-es2015.e46f228c795174428515.js +0 -0
  472. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/45-es5.e46f228c795174428515.js +0 -0
  473. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/46-es2015.22a0d8e0b4bbfb513741.js +0 -0
  474. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/46-es5.22a0d8e0b4bbfb513741.js +0 -0
  475. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/47-es2015.3878e5d1d692107748f3.js +0 -0
  476. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/47-es5.3878e5d1d692107748f3.js +0 -0
  477. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/5-es2015.aba7173be56fc19b4b6f.js +0 -0
  478. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/5-es5.aba7173be56fc19b4b6f.js +0 -0
  479. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/6-es2015.5fb726c0555664300974.js +0 -0
  480. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/6-es5.5fb726c0555664300974.js +0 -0
  481. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/7-es2015.9b9ab4adf24d13bdc2f8.js +0 -0
  482. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/7-es5.9b9ab4adf24d13bdc2f8.js +0 -0
  483. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/8-es2015.cdd7dce2a24aaf9d974f.js +0 -0
  484. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/8-es5.cdd7dce2a24aaf9d974f.js +0 -0
  485. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/9-es2015.cdde98f2537997afbf0f.js +0 -0
  486. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/9-es5.cdde98f2537997afbf0f.js +0 -0
  487. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/CHANGELOG.md +0 -0
  488. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/README.md +0 -0
  489. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/_redirects +0 -0
  490. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/assets/img/demo/1.jpg +0 -0
  491. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/assets/img/demo/2.jpg +0 -0
  492. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/assets/img/demo/3.jpg +0 -0
  493. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/assets/img/demo/4.jpg +0 -0
  494. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/assets/img/demo/5.jpg +0 -0
  495. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/assets/img/demo/6.jpg +0 -0
  496. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/assets/img/demo/7.jpg +0 -0
  497. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/assets/img/demo/8.jpg +0 -0
  498. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/assets/img/demo/landscape.jpg +0 -0
  499. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/assets/img/demo/mountain-cinematic.jpg +0 -0
  500. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/assets/img/illustrations/checklist.svg +0 -0
  501. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/assets/img/illustrations/data_center.svg +0 -0
  502. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/assets/img/illustrations/idea.svg +0 -0
  503. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/assets/img/illustrations/it_support.svg +0 -0
  504. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/assets/img/illustrations/peak_mountain_3.svg +0 -0
  505. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/assets/img/illustrations/under_constructions_1.svg +0 -0
  506. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/assets/img/logo/colored.png +0 -0
  507. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/assets/img/logo/colored.svg +0 -0
  508. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/assets/img/logo/white.png +0 -0
  509. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/assets/img/logo/white.svg +0 -0
  510. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/common-es2015.6f230354b12587f9be81.js +0 -0
  511. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/common-es5.6f230354b12587f9be81.js +0 -0
  512. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/favicon.ico +0 -0
  513. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/index.html +0 -0
  514. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/main-es2015.081bbd2709f22e95933e.js +0 -0
  515. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/main-es5.081bbd2709f22e95933e.js +0 -0
  516. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/polyfills-es2015.8ce2adc69f283f6c4c5e.js +0 -0
  517. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/polyfills-es5.7530172ddcec11a10eb3.js +0 -0
  518. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/runtime-es2015.362e49d383fb724f5414.js +0 -0
  519. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/runtime-es5.362e49d383fb724f5414.js +0 -0
  520. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/public/styles.ca104d947fbb2eebbeca.css +0 -0
  521. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/__init__.py +0 -0
  522. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/app/__init__.py +0 -0
  523. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/app/cli/cli_mock_integration_test.py +0 -0
  524. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/app/cli/config/firewall_test.py +0 -0
  525. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/app/cli/config/match_test.py +0 -0
  526. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/app/cli/config/project/config_project_set_test.py +0 -0
  527. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/app/cli/config/rewrite_test.py +0 -0
  528. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/app/cli/config/scenario/config_scenario_set_test.py +0 -0
  529. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/app/cli/endpoint/endpoint_cli_apply_test.py +0 -0
  530. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/app/cli/helpers/schema_builder_test.py +0 -0
  531. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/app/cli/helpers/synchronize_request_service_test.py +0 -0
  532. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/app/cli/intercept/intercept_configure_test.py +0 -0
  533. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/app/cli/intercept/intercept_enable_test.py +0 -0
  534. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/app/cli/request/request_delete_test.py +0 -0
  535. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/app/cli/request/request_list_test.py +0 -0
  536. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/app/cli/request/request_replay_test.py +0 -0
  537. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/app/cli/request/request_reset_test.py +0 -0
  538. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/app/cli/request/request_response_test.py +0 -0
  539. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/app/cli/request/request_snapshot_test.py +0 -0
  540. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/app/cli/request/request_test_test.py +0 -0
  541. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/app/cli/scenario/scenario_create_test.py +0 -0
  542. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/app/cli/scenario/scenario_replay_integration_test.py +0 -0
  543. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/app/cli/scenario/scenario_replay_test.py +0 -0
  544. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/app/cli/scenario/scenario_reset_test.py +0 -0
  545. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/app/cli/scenario/scenario_snapshot_test.py +0 -0
  546. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/app/cli/scenario/scenario_test_integration_test.py +0 -0
  547. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/app/cli/snapshot/snapshot_apply_test.py +0 -0
  548. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/app/cli/snapshot/snapshot_update_test.py +0 -0
  549. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/app/models/adapters/orm/joined_request_string_adapter_test.py +0 -0
  550. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/app/models/adapters/orm/request/orm_mitmproxy_request_adapter_test.py +0 -0
  551. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/app/models/adapters/orm/request/orm_python_request_adapter_test.py +0 -0
  552. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/app/models/adapters/orm/response/orm_mitmproxy_response_adapter_test.py +0 -0
  553. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/app/models/adapters/orm/response/orm_python_response_adapter_test.py +0 -0
  554. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/app/models/adapters/python/request/mitmproxy_adapter_test.py +0 -0
  555. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/app/models/adapters/python/request/raw_adapter_test.py +0 -0
  556. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/app/models/adapters/python/request/stoobly_adapter_test.py +0 -0
  557. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/app/models/adapters/python/response/mitmproxy_response_adapter_test.py +0 -0
  558. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/app/models/adapters/python/response/raw_response_adapter_test.py +0 -0
  559. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/app/models/factories/resource/local_db/helpers/log_test.py +0 -0
  560. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/app/models/factories/resource/local_db/helpers/tiebreak_scenario_request_test.py +0 -0
  561. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/app/models/factories/resource/local_db/request_adapter_test.py +0 -0
  562. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/app/models/factories/resource/local_db/response_adapter_test.py +0 -0
  563. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/app/models/schemas/.stoobly/db/stoobly_agent.sqlite3 +0 -0
  564. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/app/models/schemas/.stoobly/settings.yml +0 -0
  565. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/app/models/schemas/.stoobly/tmp/options.json +0 -0
  566. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/app/models/schemas/request_test.py +0 -0
  567. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/app/proxy/mitmproxy/request_facade_test.py +0 -0
  568. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/app/proxy/replay/body_parser_service_test.py +0 -0
  569. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/app/proxy/replay/rewrite_params_service_test.py +0 -0
  570. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/app/proxy/replay/trace_context_test.py +0 -0
  571. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/app/proxy/replay/visitor_test.py +0 -0
  572. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/app/proxy/test/helpers/test_results_builder_test.py +0 -0
  573. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/app/proxy/upload/request_string_test.py +0 -0
  574. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/app/proxy/upload/response_string_test.py +0 -0
  575. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/app/test/__init__.py +0 -0
  576. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/app/test/matchers/contract_test.py +0 -0
  577. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/app/test/matchers/diff_test.py +0 -0
  578. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/app/test/matchers/fuzzy_test.py +0 -0
  579. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/cli/mock_test.py +0 -0
  580. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/cli/record_test.py +0 -0
  581. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/config/data_dir_test.py +0 -0
  582. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/mock_data/__init__.py +0 -0
  583. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/mock_data/endpoint_show_response.py +0 -0
  584. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/mock_data/petstore-additional-props.yaml +0 -0
  585. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/mock_data/petstore-expanded.yaml +0 -0
  586. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/mock_data/petstore-missing-info.yaml +0 -0
  587. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/mock_data/petstore-missing-oauth2-scopes.yaml +0 -0
  588. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/mock_data/petstore-missing-servers.yaml +0 -0
  589. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/mock_data/petstore-references.yaml +0 -0
  590. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/mock_data/petstore-swagger-io.yaml +0 -0
  591. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/mock_data/petstore.yaml +0 -0
  592. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/mock_data/request_show_response.py +0 -0
  593. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/mock_data/uspto.yaml +0 -0
  594. {stoobly_agent-0.34.0 → stoobly_agent-0.34.2}/stoobly_agent/test/test_helper.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: stoobly-agent
3
- Version: 0.34.0
3
+ Version: 0.34.2
4
4
  Summary: Record, mock, and test HTTP(s) requests. CLI agent for Stoobly
5
5
  License: Apache-2.0
6
6
  Author: Matt Le
@@ -10,7 +10,7 @@ description = "Record, mock, and test HTTP(s) requests. CLI agent for Stoobly"
10
10
  license = "Apache License 2.0"
11
11
  name = "stoobly-agent"
12
12
  readme = "README.md"
13
- version = "0.34.0"
13
+ version = "0.34.2"
14
14
 
15
15
  [tool.poetry.dependencies]
16
16
  python = "^3.8"
@@ -1,2 +1,2 @@
1
1
  COMMAND = 'stoobly-agent'
2
- VERSION = '0.34.0'
2
+ VERSION = '0.34.2'
@@ -61,6 +61,15 @@ def dump(**kwargs):
61
61
  else:
62
62
  print(output)
63
63
 
64
+ @config.command(
65
+ help="Reset config to defaults"
66
+ )
67
+ def reset():
68
+ settings = Settings.instance()
69
+ settings.reset()
70
+
71
+ print(f"Reset {settings.path} to defaults.")
72
+
64
73
  ### Scenario
65
74
 
66
75
  @click.group(
@@ -5,6 +5,7 @@ import sys
5
5
  from stoobly_agent import VERSION
6
6
  from stoobly_agent.app.proxy.replay.body_parser_service import decode_response, is_traversable
7
7
  from stoobly_agent.app.models.adapters.raw_http_response_adapter import RawHttpResponseAdapter
8
+ from stoobly_agent.lib.api.response_param_names_resource import ResponseParamNamesResource
8
9
  from stoobly_agent.lib.orm.migrate_service import migrate as database_migrate, rollback as database_rollback
9
10
  from stoobly_agent.lib.orm.replayed_response import ReplayedResponse
10
11
  from stoobly_agent.lib.orm.request import Request
@@ -47,7 +47,7 @@ def apply(**kwargs):
47
47
  context.with_lifecycle_hooks_path(kwargs.get('lifecycle_hooks_path'))
48
48
  context.with_source(kwargs.get('source_path'), kwargs.get('source_format'))
49
49
 
50
- endpoint_handler = lambda endpoint: print(f"{bcolors.OKBLUE}Applying Endpoint: {endpoint['path']}{bcolors.ENDC}")
50
+ endpoint_handler = lambda endpoint: print(f"{bcolors.OKBLUE}Applying Endpoint {endpoint['method']} {endpoint['path']}{bcolors.ENDC}")
51
51
  context.with_endpoint_handler(endpoint_handler)
52
52
 
53
53
  request_handler = lambda request, endpoint: print(request.url)
@@ -72,7 +72,7 @@ def import_endpoint(**kwargs):
72
72
 
73
73
  context.with_source(kwargs.get('source_path'), kwargs.get('source_format'))
74
74
 
75
- endpoint_handler = lambda endpoint: print(f"{bcolors.OKBLUE}Importing Endpoint: {endpoint['method']} {endpoint['path']}{bcolors.ENDC}")
75
+ endpoint_handler = lambda endpoint: print(f"{bcolors.OKBLUE}Importing Endpoint {endpoint['method']} {endpoint['path']}{bcolors.ENDC}")
76
76
  context.with_endpoint_handler(endpoint_handler)
77
77
 
78
78
  facade = EndpointFacade(settings)
@@ -24,7 +24,7 @@ def import_endpoints(context: EndpointsImportContext):
24
24
  try:
25
25
  res = import_endpoint(context.project_id, context.resources['endpoint'], endpoint)
26
26
  except requests.HTTPError as e:
27
- error_handler(endpoint, e)
27
+ error_handler(e, f"Failed to import endpoint: {endpoint['method']} {endpoint['path']}")
28
28
  return
29
29
 
30
30
  if res.status_code == 409: # Endpoint already created
@@ -34,11 +34,12 @@ def import_endpoints(context: EndpointsImportContext):
34
34
  try:
35
35
  res = import_component_names(context.project_id, endpoint_id, endpoint, context.resources)
36
36
  except requests.HTTPError as e:
37
- error_handler(endpoint, e)
37
+ error_handler(e, f"Failed to import endpoint: {endpoint['method']} {endpoint['path']}")
38
+
38
39
  try:
39
40
  cleanup_endpoint(context.project_id, endpoint_id, context.resources['endpoint'])
40
41
  except requests.HTTPError as e:
41
- print(f"{bcolors.FAIL}Encountered {e.response.status_code} {e.response.reason}: {e.response.text} - Failed to delete endpoint: {endpoint['method']} {endpoint['path']}{bcolors.ENDC}", file=sys.stderr)
42
+ error_handler(e, f"Failed to delete endpoint: {endpoint['method']} {endpoint['path']}, id {endpoint_id}")
42
43
  return
43
44
 
44
45
  def import_endpoint(project_id: int, endpoint_resource: EndpointsResource, endpoint: EndpointShowResponse):
@@ -133,15 +134,19 @@ def import_component_names(project_id: int, endpoint_id: int, endpoint: Endpoint
133
134
  process_import(component_name, project_id, endpoint_id, resource, component)
134
135
 
135
136
  def cleanup_endpoint(project_id: int, endpoint_id: int, resource: EndpointsResource):
136
- print(f"{bcolors.FAIL}Cleaning up partial import...{bcolors.ENDC}")
137
+ print(f"{bcolors.OKBLUE}Cleaning up partial import...{bcolors.ENDC}")
137
138
  res: requests.Response = resource.destroy(endpoint_id, **{
138
139
  'project_id': project_id
139
140
  })
140
141
 
141
142
  res.raise_for_status()
142
143
 
143
- def error_handler(endpoint: EndpointShowResponse, error: requests.HTTPError):
144
- print(
145
- f"{bcolors.FAIL}Encountered {error.response.status_code} {error.response.reason}: {error.response.text} - Failed to import endpoint: {endpoint['method']} {endpoint['path']} - Aborting operation{bcolors.ENDC}",
146
- file=sys.stderr
147
- )
144
+ def error_handler(error: requests.HTTPError, message = ''):
145
+ if message:
146
+ print(
147
+ f"{bcolors.FAIL}{message}{bcolors.ENDC}",
148
+ file=sys.stderr
149
+ )
150
+
151
+ print(error.response.text, file=sys.stderr)
152
+ print(f"Error {error.response.status_code} {error.response.reason}", file=sys.stderr)
@@ -603,6 +603,10 @@ class OpenApiEndpointAdapter():
603
603
 
604
604
  def __parse_responses(self, endpoint: EndpointShowResponse, responses: Spec, components: Spec):
605
605
  for response_code, response_definition in responses.items():
606
+ # Only support status code 200 for now
607
+ if response_code != '200':
608
+ continue
609
+
606
610
  # Construct response param name components
607
611
  literal_response_params = {}
608
612
  response_body_array = False
@@ -17,7 +17,9 @@ class ReplayCliOptions(TypedDict):
17
17
  lifecycle_hooks_path: str
18
18
  on_response: Callable
19
19
  project_key: str
20
+ public_directory_path: str
20
21
  record: bool
22
+ response_fixtures_path: str
21
23
  scenario_key: str
22
24
  scheme: str
23
25
  trace: Trace
@@ -57,7 +59,9 @@ class ReplayFacade():
57
59
  'host': cli_options.get('host'),
58
60
  'lifecycle_hooks_path': cli_options.get('lifecycle_hooks_path'),
59
61
  'overwrite': cli_options.get('overwrite'),
62
+ 'public_directory_path': cli_options.get('public_directory_path'),
60
63
  'request_origin': request_origin.CLI,
64
+ 'response_fixtures_path': cli_options.get('response_fixtures_path'),
61
65
  'save': cli_options.get('save'),
62
66
  'scheme': cli_options.get('scheme'),
63
67
  'trace_context': trace_context,
@@ -134,8 +134,10 @@ if not is_remote:
134
134
  Configure which tests to print. Defaults to {test_output_level.PASSED}.
135
135
  '''
136
136
  )
137
+ @click.option('--public-directory-path', help='Path to public files. Used for mocking requests.')
137
138
  @ConditionalDecorator(lambda f: click.option('--remote-project-key', help='Use remote project for endpoint definitions.')(f), is_remote and is_local)
138
139
  @ConditionalDecorator(lambda f: click.option('--report-key', help='Save to report.')(f), is_remote)
140
+ @click.option('--response-fixtures-path', help='Path to response fixtures yaml. Used for mocking requests.')
139
141
  @ConditionalDecorator(lambda f: click.option('--save', is_flag=True, default=False, help='Saves test results.')(f), is_remote)
140
142
  @click.option('--scheme', type=click.Choice(['http', 'https']), help='Rewrite request scheme.')
141
143
  @click.option('--strategy', default=test_strategy.DIFF, type=click.Choice([test_strategy.CONTRACT, test_strategy.CUSTOM, test_strategy.DIFF, test_strategy.FUZZY]), help='How to test responses.')
@@ -158,8 +158,10 @@ if is_local:
158
158
  Configure which tests to print. Defaults to {test_output_level.PASSED}.
159
159
  '''
160
160
  )
161
+ @click.option('--public-directory-path', help='Path to public files. Used for mocking requests.')
161
162
  @ConditionalDecorator(lambda f: click.option('--remote-project-key', help='Use remote project for endpoint definitions.')(f), is_remote)
162
163
  @ConditionalDecorator(lambda f: click.option('--report-key', help='Save results to report.')(f), is_remote)
164
+ @click.option('--response-fixtures-path', help='Path to response fixtures yaml. Used for mocking requests.')
163
165
  @ConditionalDecorator(lambda f: click.option('--save', is_flag=True, default=False, help='Save results.')(f), is_remote)
164
166
  @click.option('--scheme', help='Rewrite request scheme.')
165
167
  @click.option(
@@ -15,8 +15,10 @@ class TestOptions(TypedDict):
15
15
  lifecycle_hooks_path: str
16
16
  log_level: logger.LogLevel
17
17
  output_level: test_output_level.TestOutputLevel
18
+ public_directory_path: str
18
19
  remote_project_key: str
19
20
  report_key: str
21
+ response_fixtures_path: str
20
22
  save: str
21
23
  scheme: str
22
24
  strategy: test_strategy.TestStrategy
@@ -35,7 +35,7 @@ class RequestBuilder():
35
35
 
36
36
  @property
37
37
  def request_body(self):
38
- return self.__properties.get('request_body')
38
+ return self.__properties.get('request_body') or b''
39
39
 
40
40
  @property
41
41
  def request_headers(self):
@@ -14,6 +14,7 @@ from stoobly_agent.lib.logger import Logger
14
14
 
15
15
  from .constants import custom_response_codes
16
16
  from .mock.context import MockContext
17
+ from .mock.eval_fixtures_service import eval_fixtures
17
18
  from .mock.eval_request_service import inject_eval_request
18
19
  from .utils.allowed_request_service import get_active_mode_policy
19
20
  from .utils.request_handler import reverse_proxy
@@ -65,14 +66,14 @@ def handle_request_mock_generic(context: MockContext, **options: MockOptions):
65
66
  if handle_failure:
66
67
  res = handle_failure(context)
67
68
  elif policy == mock_policy.ALL:
68
- res = eval_request_with_retry(eval_request, request, **options)
69
+ res = eval_request_with_retry(context, eval_request, **options)
69
70
 
70
71
  context.with_response(res)
71
72
 
72
73
  if handle_success:
73
74
  res = handle_success(context) or res
74
75
  elif policy == mock_policy.FOUND:
75
- res = eval_request_with_retry(eval_request, request, **options)
76
+ res = eval_request_with_retry(context, eval_request, **options)
76
77
 
77
78
  context.with_response(res)
78
79
 
@@ -93,7 +94,8 @@ def handle_request_mock_generic(context: MockContext, **options: MockOptions):
93
94
 
94
95
  return pass_on(context.flow, res)
95
96
 
96
- def eval_request_with_retry(eval_request, request, **options: MockOptions):
97
+ def eval_request_with_retry(context: MockContext, eval_request, **options: MockOptions):
98
+ request = context.flow.request
97
99
  infer = bool(options.get('infer'))
98
100
  ignored_components = options['ignored_components'] if 'ignored_components' in options else []
99
101
 
@@ -103,6 +105,16 @@ def eval_request_with_retry(eval_request, request, **options: MockOptions):
103
105
  ignored_components.append(res.content)
104
106
  res = eval_request(request, ignored_components, infer=infer, retry=1)
105
107
 
108
+ if res.status_code == custom_response_codes.NOT_FOUND:
109
+ intercept_settings = context.intercept_settings
110
+ fixture = eval_fixtures(
111
+ request,
112
+ public_directory_path=intercept_settings.public_directory_path,
113
+ response_fixtures=intercept_settings.response_fixtures
114
+ )
115
+ if fixture:
116
+ res = fixture
117
+
106
118
  return res
107
119
 
108
120
  def handle_request_mock(context: MockContext):
@@ -1,5 +1,6 @@
1
1
  import os
2
2
  import pdb
3
+ import yaml
3
4
 
4
5
  from runpy import run_path
5
6
  from typing import List, Union
@@ -37,6 +38,9 @@ class InterceptSettings:
37
38
  self.__lifecycle_hooks = None
38
39
  self.__initialize_lifecycle_hooks()
39
40
 
41
+ self.__response_fixtures = None
42
+ self.__initialize_response_fixtures()
43
+
40
44
  @property
41
45
  def settings(self):
42
46
  return self.__settings
@@ -102,6 +106,14 @@ class InterceptSettings:
102
106
  except InvalidProjectKey:
103
107
  pass
104
108
 
109
+ @property
110
+ def public_directory_path(self):
111
+ if self.__headers and custom_headers.PUBLIC_DIRECTORY_PATH in self.__headers:
112
+ return self.__headers[custom_headers.PUBLIC_DIRECTORY_PATH]
113
+
114
+ if os.environ.get(env_vars.AGENT_PUBLIC_DIRECTORY_PATH):
115
+ return os.environ[env_vars.AGENT_PUBLIC_DIRECTORY_PATH]
116
+
105
117
  @property
106
118
  def remote_project_key(self):
107
119
  # When not local project, don't return set remote project_key
@@ -114,6 +126,18 @@ class InterceptSettings:
114
126
 
115
127
  return self.__settings.remote.project_key
116
128
 
129
+ @property
130
+ def response_fixtures_path(self):
131
+ if self.__headers and custom_headers.RESPONSE_FIXTURES_PATH in self.__headers:
132
+ return self.__headers[custom_headers.RESPONSE_FIXTURES_PATH]
133
+
134
+ if os.environ.get(env_vars.AGENT_RESPONSE_FIXTURES_PATH):
135
+ return os.environ[env_vars.AGENT_RESPONSE_FIXTURES_PATH]
136
+
137
+ @property
138
+ def response_fixtures(self):
139
+ return self.__response_fixtures or {}
140
+
117
141
  @property
118
142
  def parsed_remote_project_key(self):
119
143
  try:
@@ -288,6 +312,21 @@ class InterceptSettings:
288
312
  except Exception as e:
289
313
  return Logger.instance().error(e)
290
314
 
315
+ def __initialize_response_fixtures(self):
316
+ fixtures_path = self.response_fixtures_path
317
+
318
+ if not fixtures_path:
319
+ return
320
+
321
+ if not os.path.exists(fixtures_path):
322
+ return Logger.instance().error(f"Response fixtures {fixtures_path} does not exist")
323
+
324
+ with open(fixtures_path, 'r') as stream:
325
+ try:
326
+ self.__response_fixtures = yaml.safe_load(stream)
327
+ except yaml.YAMLError as exc:
328
+ Logger.instance().error(exc)
329
+
291
330
  def __policy(self, mode):
292
331
  if mode == intercept_mode.MOCK:
293
332
  if self.__headers and custom_headers.MOCK_POLICY in self.__headers:
@@ -0,0 +1,61 @@
1
+ import os
2
+ import pdb
3
+ import re
4
+
5
+ from io import BytesIO
6
+ from mitmproxy.http import Request as MitmproxyRequest
7
+ from requests import Response
8
+ from typing import Union
9
+
10
+ from stoobly_agent.lib.logger import bcolors, Logger
11
+
12
+ from .types import Fixtures
13
+
14
+ class Options():
15
+ public_directory_path: str
16
+ response_fixtures: Fixtures
17
+
18
+ def eval_fixtures(request: MitmproxyRequest, **options: Options) -> Union[Response, None]:
19
+ response_fixtures = options.get('response_fixtures')
20
+
21
+ fixture_path = __eval_response_fixtures(request, response_fixtures)
22
+ if not fixture_path:
23
+ public_directory_path = options.get('public_directory_path')
24
+
25
+ if public_directory_path and os.path.exists(public_directory_path):
26
+ static_file_path = os.path.join(public_directory_path, request.path.lstrip('/'))
27
+
28
+ if os.path.exists(static_file_path):
29
+ fixture_path = static_file_path
30
+
31
+ if not fixture_path:
32
+ return
33
+
34
+ with open(fixture_path, 'rb') as fp:
35
+ response = Response()
36
+
37
+ response.status_code = 200
38
+ response.raw = BytesIO(fp.read())
39
+
40
+ Logger.instance().debug(f"{bcolors.OKBLUE}Resolved fixture {fixture_path}{bcolors.ENDC}")
41
+
42
+ return response
43
+
44
+ def __eval_response_fixtures(request: MitmproxyRequest, response_fixtures: Fixtures):
45
+ if not response_fixtures:
46
+ return
47
+
48
+ method = request.method
49
+ routes = response_fixtures.get(method)
50
+
51
+ if not routes:
52
+ return
53
+
54
+ for path_pattern in routes:
55
+ if not re.match(path_pattern, request.path):
56
+ continue
57
+
58
+ path = routes[path_pattern].get('path')
59
+
60
+ if path and os.path.exists(path):
61
+ return path
@@ -0,0 +1,10 @@
1
+ from typing import TypedDict
2
+
3
+ class Route(TypedDict):
4
+ path: str
5
+
6
+ class Fixtures(TypedDict):
7
+ DELETE: Route
8
+ GET: Route
9
+ POST: Route
10
+ PUT: Route
@@ -27,9 +27,11 @@ class ReplayRequestOptions(TypedDict):
27
27
  after_replay: Union[Callable[[ReplayContext], Union[requests.Response, None]], None]
28
28
  project_key: Union[str, None]
29
29
  proxies: dict
30
+ public_directory_path: str
30
31
  remote_project_key: str
31
32
  report_key: Union[str, None]
32
33
  request_origin: Union[request_origin.CLI, None]
34
+ response_fixtures_path: str
33
35
  scenario_key: Union[str, None]
34
36
  scheme: str
35
37
  test_filter: test_filter.TestFilter
@@ -58,7 +60,7 @@ def replay(context: ReplayContext, options: ReplayRequestOptions) -> requests.Re
58
60
  headers[custom_headers.ALIAS_RESOLVE_STRATEGY] = options['alias_resolve_strategy']
59
61
 
60
62
  if options.get('lifecycle_hooks_path'):
61
- __handle_lifecycle_hooks_path(options['lifecycle_hooks_path'], headers)
63
+ __handle_path_header(custom_headers.LIFECYCLE_HOOKS_PATH, options['lifecycle_hooks_path'], headers)
62
64
 
63
65
  if options.get('mode'):
64
66
  __handle_mode_option(options['mode'], request, headers)
@@ -66,6 +68,9 @@ def replay(context: ReplayContext, options: ReplayRequestOptions) -> requests.Re
66
68
  if options.get('project_key'):
67
69
  headers[custom_headers.PROJECT_KEY] = options['project_key']
68
70
 
71
+ if options.get('public_directory_path'):
72
+ __handle_path_header(custom_headers.PUBLIC_DIRECTORY_PATH, options['public_directory_path'], headers)
73
+
69
74
  if options.get('report_key'):
70
75
  headers[custom_headers.REPORT_KEY] = options['report_key']
71
76
 
@@ -75,6 +80,9 @@ def replay(context: ReplayContext, options: ReplayRequestOptions) -> requests.Re
75
80
  if custom_headers.REQUEST_ORIGIN not in headers:
76
81
  headers[custom_headers.REQUEST_ORIGIN] = request_origin.CLI
77
82
 
83
+ if options.get('response_fixtures_path'):
84
+ __handle_path_header(custom_headers.RESPONSE_FIXTURES_PATH, options['response_fixtures_path'], headers)
85
+
78
86
  if options.get('scenario_key'):
79
87
  headers[custom_headers.SCENARIO_KEY] = options['scenario_key']
80
88
 
@@ -146,14 +154,14 @@ def replay(context: ReplayContext, options: ReplayRequestOptions) -> requests.Re
146
154
 
147
155
  return res
148
156
 
149
- def __handle_lifecycle_hooks_path(script_path, headers):
157
+ def __handle_path_header(header_name: str, script_path: str, headers):
150
158
  if not script_path:
151
159
  return
152
160
 
153
161
  if not os.path.isabs(script_path):
154
162
  script_path = os.path.join(os.path.abspath('.'), script_path)
155
163
 
156
- headers[custom_headers.LIFECYCLE_HOOKS_PATH] = script_path
164
+ headers[header_name] = script_path
157
165
 
158
166
  def __handle_mode_option(_mode, request: Request, headers):
159
167
  headers[custom_headers.PROXY_MODE] = _mode
@@ -124,6 +124,12 @@ def __filter_options(options):
124
124
  if 'lifecycle_hooks_path' in options:
125
125
  del options['lifecycle_hooks_path']
126
126
 
127
+ if 'public_directory_path' in options:
128
+ del options['public_directory_path']
129
+
130
+ if 'response_fixtures_path' in options:
131
+ del options['response_fixtures_path']
132
+
127
133
  if 'ui_host' in options:
128
134
  del options['ui_host']
129
135
 
@@ -142,6 +142,10 @@ class TestContext(TestContextABC):
142
142
  def passed(self, v):
143
143
  self.__passed = v
144
144
 
145
+ @property
146
+ def public_directory_path(self):
147
+ return self.__intercept_settings.public_directory_path
148
+
145
149
  @property
146
150
  def replay_context(self) -> ReplayContext:
147
151
  return self.__replay_context
@@ -162,6 +166,14 @@ class TestContext(TestContextABC):
162
166
  def response(self) -> TestContextResponse:
163
167
  return self.__response
164
168
 
169
+ @property
170
+ def response_fixtures(self):
171
+ return self.__intercept_settings.response_fixtures
172
+
173
+ @property
174
+ def response_fixtures_path(self):
175
+ return self.__intercept_settings.response_fixtures_path
176
+
165
177
  @property
166
178
  def response_param_names(self) -> RequestComponentNamesFacade:
167
179
  if self.__cached_response_param_names:
@@ -119,6 +119,11 @@ class TestContextABC(abc.ABC):
119
119
  def passed(self, v):
120
120
  pass
121
121
 
122
+ @property
123
+ @abc.abstractmethod
124
+ def public_directory_path(self):
125
+ pass
126
+
122
127
  @property
123
128
  @abc.abstractmethod
124
129
  def replay_context(self):
@@ -144,6 +149,16 @@ class TestContextABC(abc.ABC):
144
149
  def response(self) -> TestContextResponse:
145
150
  pass
146
151
 
152
+ @property
153
+ @abc.abstractmethod
154
+ def response_fixtures(self):
155
+ pass
156
+
157
+ @property
158
+ @abc.abstractmethod
159
+ def response_fixtures_path(self):
160
+ pass
161
+
147
162
  @property
148
163
  @abc.abstractmethod
149
164
  def response_param_names(self) -> RequestComponentNamesFacade:
@@ -68,6 +68,10 @@ class Settings:
68
68
  def ui(self):
69
69
  return self.__ui_settings
70
70
 
71
+ @property
72
+ def path(self):
73
+ return self.__settings_file_path
74
+
71
75
  @property
72
76
  def proxy(self):
73
77
  return self.__proxy_settings
@@ -105,6 +105,8 @@ def init(**kwargs):
105
105
  the form of "http[s]://host[:port]".
106
106
  ''')
107
107
  @click.option('--proxy-port', default=8080, help='Proxy service port.')
108
+ @click.option('--public-directory-path', help='Path to public files. Used for mocking requests.')
109
+ @click.option('--response-fixtures-path', help='Path to response fixtures yaml. Used for mocking requests.')
108
110
  @click.option('--ssl-insecure', is_flag=True, default=False, help='Do not verify upstream server SSL/TLS certificates.')
109
111
  @click.option('--ui-host', default='0.0.0.0', help='Address to bind UI to.')
110
112
  @click.option('--ui-port', default=4200, help='UI service port.')
@@ -116,6 +118,12 @@ def run(**kwargs):
116
118
  if kwargs.get('lifecycle_hooks_path'):
117
119
  os.environ[env_vars.AGENT_LIFECYCLE_HOOKS_PATH] = kwargs['lifecycle_hooks_path']
118
120
 
121
+ if kwargs.get('public_directory_path'):
122
+ os.environ[env_vars.AGENT_PUBLIC_DIRECTORY_PATH] = kwargs['public_directory_path']
123
+
124
+ if kwargs.get('response_fixtures_path'):
125
+ os.environ[env_vars.AGENT_RESPONSE_FIXTURES_PATH] = kwargs['response_fixtures_path']
126
+
119
127
  # Observe config for changes
120
128
  Settings.instance().watch()
121
129
 
@@ -137,7 +145,10 @@ def run(**kwargs):
137
145
  @ConditionalDecorator(lambda f: click.option('--remote-project-key', help='Use remote project for endpoint definitions.')(f), is_remote and is_local)
138
146
  @click.option('--format', type=click.Choice([RAW_FORMAT]), help='Format response')
139
147
  @click.option('-H', '--header', multiple=True, help='Pass custom header(s) to server')
148
+ @click.option('--lifecycle-hooks-path', help='Path to lifecycle hooks script.')
140
149
  @ConditionalDecorator(lambda f: click.option('--project-key')(f), is_remote)
150
+ @click.option('--public-directory-path', help='Path to public files. Used for mocking requests.')
151
+ @click.option('--response-fixtures-path', help='Path to response fixtures yaml. Used for mocking requests.')
141
152
  @click.option('-X', '--request', default='GET', help='Specify request command to use')
142
153
  @click.option('--scenario-key')
143
154
  @click.argument('url')
@@ -165,7 +176,7 @@ def mock(**kwargs):
165
176
  print_raw_response(response)
166
177
  else:
167
178
  content = response.content
168
- print(decode(content))
179
+ print(decode(content), end='')
169
180
 
170
181
  @main.command(
171
182
  help="Record request"
@@ -194,7 +205,7 @@ def record(**kwargs):
194
205
  else:
195
206
  try:
196
207
  content = response.raw.data
197
- print(content.decode(json.detect_encoding(content)))
208
+ print(content.decode(json.detect_encoding(content)), end='')
198
209
  except UnicodeDecodeError:
199
210
  print('Warning: Binary output can mess up your terminal.')
200
211
 
@@ -9,9 +9,11 @@ DO_PROXY = 'X-Do-Proxy'
9
9
  LIFECYCLE_HOOKS_PATH = 'X-Stoobly-Lifecycle-Hooks-Path'
10
10
  PROJECT_KEY = 'X-Project-Key'
11
11
  PROXY_MODE = 'X-Proxy-Mode'
12
+ PUBLIC_DIRECTORY_PATH = 'X-Stoobly-Public-Directory-Path'
12
13
  RECORD_POLICY = 'X-Record-Policy'
13
14
  REPORT_KEY = 'X-Report-Key'
14
15
  REQUEST_ORIGIN = 'X-Proxy-Request-Origin'
16
+ RESPONSE_FIXTURES_PATH = 'X-Stoobly-Response-Fixtures-Path'
15
17
  RESPONSE_ID = 'X-Response-Id'
16
18
  RESPONSE_LATENCY = 'X-Stoobly-Request-Response-Latency'
17
19
  RESPONSE_PROXY_MODE = 'X-Response-Proxy-Mode'
@@ -9,10 +9,12 @@ AGENT_LIFECYCLE_HOOKS_PATH = 'STOOBLY_AGENT_LIFECYCLE_HOOKS_PATH'
9
9
  AGENT_POLICY = 'STOOBLY_AGENT_POLICY'
10
10
  AGENT_PROJECT_KEY = 'STOOBLY_AGENT_PROJECT_KEY'
11
11
  AGENT_PROXY_URL = 'STOOBLY_AGENT_PROXY_URL'
12
+ AGENT_PUBLIC_DIRECTORY_PATH = 'STOOBLY_AGENT_PUBLIC_DIRECTORY_PATH'
12
13
  AGENT_REMOTE_ENABLED = 'STOOBLY_AGENT_REMOTE_ENABLED'
13
14
  AGENT_REMOTE_PROJECT_KEY = 'STOOBLY_AGENT_REMOTE_PROJECT_KEY'
14
15
  AGENT_REPLAY_HOST = 'STOOBLY_AGENT_REPLAY_HOST'
15
16
  AGENT_REPLAY_SCHEME = 'STOOBLY_AGENT_REPLAY_SCHEME'
17
+ AGENT_RESPONSE_FIXTURES_PATH = 'STOOBLY_AGENT_RESPONSE_FIXTURES_PATH'
16
18
  AGENT_SERVICE_URL = 'STOOBLY_AGENT_SERVICE_URL'
17
19
  AGENT_SCENARIO_KEY = 'STOOBLY_AGENT_SCENARIO_KEY'
18
20
  AGENT_SIMULATE_LATENCY = 'STOOBLY_AGENT_SIMULATE_LATENCY'
@@ -55,30 +55,6 @@ class TestOpenApiEndpointAdapterAdditionalProps():
55
55
  'type': 'static'
56
56
  }
57
57
  ],
58
- 'response_param_names': [
59
- {
60
- 'endpoint_id': 1,
61
- 'id': 1,
62
- 'inferred_type': 'Integer',
63
- 'is_deterministic': True,
64
- 'is_required': True,
65
- 'name': 'code',
66
- 'query': 'code',
67
- 'response_param_name_id': None,
68
- 'values': [0]
69
- },
70
- {
71
- 'endpoint_id': 1,
72
- 'id': 2,
73
- 'inferred_type': 'String',
74
- 'is_deterministic': True,
75
- 'is_required': True,
76
- 'name': 'message',
77
- 'query': 'message',
78
- 'response_param_name_id': None,
79
- 'values': ['']
80
- }
81
- ]
82
58
  }
83
59
 
84
60