Class: PhaseoSdk::TelemetryRecorder
- Inherits:
-
Object
- Object
- PhaseoSdk::TelemetryRecorder
- Defined in:
- lib/index.rb
Instance Method Summary collapse
- #capture_error(endpoint:, request:, error:, duration_ms:) ⇒ Object
- #capture_success(endpoint:, request:, response:, duration_ms:) ⇒ Object
-
#initialize(config = nil, sdk_version = "2.1.0") ⇒ TelemetryRecorder
constructor
A new instance of TelemetryRecorder.
Constructor Details
#initialize(config = nil, sdk_version = "2.1.0") ⇒ TelemetryRecorder
Returns a new instance of TelemetryRecorder.
733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 |
# File 'lib/index.rb', line 733 def initialize(config = nil, sdk_version = "2.1.0") config ||= {} enabled = config.fetch(:enabled, false) directory = config.fetch(:directory, ".phaseo-devtools") directory = ".phaseo-devtools" if directory.to_s.strip.empty? env_enabled = ENV["PHASEO_DEVTOOLS"] || ENV["PHASEO_DEVTOOLS"] unless env_enabled.to_s.strip.empty? enabled = %w[1 true yes on].include?(env_enabled.to_s.strip.downcase) end env_directory = ENV["PHASEO_DEVTOOLS_DIR"] || ENV["PHASEO_DEVTOOLS_DIR"] directory = env_directory.to_s.strip unless env_directory.to_s.strip.empty? @enabled = enabled @directory = directory @capture_headers = config.fetch(:capture_headers, false) @save_assets = config.fetch(:save_assets, true) @sdk_version = sdk_version return unless @enabled ensure_layout end |
Instance Method Details
#capture_error(endpoint:, request:, error:, duration_ms:) ⇒ Object
788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 |
# File 'lib/index.rb', line 788 def capture_error(endpoint:, request:, error:, duration_ms:) return unless @enabled error_response = extract_error_response(error) model, provider = extract_model_provider(nil, request) = { sdk: "ruby", sdk_version: @sdk_version, stream: false } [:model] = model if model [:provider] = provider if provider (, error_response) entry = { id: new_entry_id, type: endpoint, timestamp: (Time.now.to_f * 1000).to_i, duration_ms: duration_ms, request: normalize_json_value(request), response: normalize_json_value(error_response), error: { message: error., status_code: extract_error_status_code(error) }.compact, metadata: } append_entry(entry) end |
#capture_success(endpoint:, request:, response:, duration_ms:) ⇒ Object
758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 |
# File 'lib/index.rb', line 758 def capture_success(endpoint:, request:, response:, duration_ms:) return unless @enabled = { sdk: "ruby", sdk_version: @sdk_version, stream: false } usage = extract_usage(response) [:usage] = usage if usage model, provider = extract_model_provider(response, request) [:model] = model if model [:provider] = provider if provider (, normalize_hash(response)) .delete(:headers) unless @capture_headers entry = { id: new_entry_id, type: endpoint, timestamp: (Time.now.to_f * 1000).to_i, duration_ms: duration_ms, request: normalize_json_value(request), response: normalize_json_value(response), error: nil, metadata: } append_entry(entry) end |