Class: PostHog::FeatureFlagResult

Inherits:
Object
  • Object
show all
Defined in:
lib/posthog/feature_flag_result.rb

Overview

Represents the result of a feature flag evaluation containing both the flag value and payload

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(key:, enabled:, variant: nil, payload: nil) ⇒ FeatureFlagResult

Returns a new instance of FeatureFlagResult.

Parameters:

  • key (String, Symbol)

    The feature flag key.

  • enabled (Boolean)

    Whether the feature flag is enabled.

  • variant (String, nil) (defaults to: nil)

    The variant key for multivariate flags.

  • payload (Object, nil) (defaults to: nil)

    The parsed feature flag payload.



22
23
24
25
26
27
# File 'lib/posthog/feature_flag_result.rb', line 22

def initialize(key:, enabled:, variant: nil, payload: nil)
  @key = key
  @enabled = enabled
  @variant = variant
  @payload = payload
end

Instance Attribute Details

#keyString, Symbol (readonly)

Returns The feature flag key.

Returns:

  • (String, Symbol)

    The feature flag key.



10
11
12
# File 'lib/posthog/feature_flag_result.rb', line 10

def key
  @key
end

#payloadObject? (readonly)

Returns The parsed feature flag payload.

Returns:

  • (Object, nil)

    The parsed feature flag payload.



16
17
18
# File 'lib/posthog/feature_flag_result.rb', line 16

def payload
  @payload
end

#variantString? (readonly)

Returns The variant key for multivariate flags.

Returns:

  • (String, nil)

    The variant key for multivariate flags.



13
14
15
# File 'lib/posthog/feature_flag_result.rb', line 13

def variant
  @variant
end

Class Method Details

.from_value_and_payload(key, value, payload) ⇒ PostHog::FeatureFlagResult?

Factory method to create from flag value and payload.

Parameters:

  • key (String, Symbol)

    The feature flag key.

  • value (String, Boolean, nil)

    The raw feature flag value.

  • payload (Object, String, nil)

    The raw or JSON-encoded feature flag payload.

Returns:



50
51
52
53
54
55
56
57
58
59
60
# File 'lib/posthog/feature_flag_result.rb', line 50

def self.from_value_and_payload(key, value, payload)
  return nil if value.nil?

  parsed_payload = parse_payload(payload)

  if value.is_a?(String)
    new(key: key, enabled: true, variant: value, payload: parsed_payload)
  else
    new(key: key, enabled: value, payload: parsed_payload)
  end
end

.parse_payload(payload) ⇒ Object?

Deserialize a flag payload. Strings are JSON-parsed (with the raw string returned when the body is not valid JSON); already-deserialized values pass through. Public so PostHog::FeatureFlagEvaluations can normalize payloads the same way PostHog::FeatureFlagResult does.

Parameters:

  • payload (Object, String, nil)

    The raw payload value.

Returns:

  • (Object, nil)

    The parsed payload.



69
70
71
72
73
74
75
76
77
78
79
# File 'lib/posthog/feature_flag_result.rb', line 69

def self.parse_payload(payload)
  return nil if payload.nil?
  return payload unless payload.is_a?(String)
  return nil if payload.empty?

  begin
    JSON.parse(payload)
  rescue JSON::ParserError
    payload
  end
end

Instance Method Details

#enabled?Boolean

Returns whether or not the feature flag evaluated as enabled.

Returns:

  • (Boolean)


40
41
42
# File 'lib/posthog/feature_flag_result.rb', line 40

def enabled?
  @enabled
end

#valueString, Boolean

Returns the effective value of the feature flag: variant if present, otherwise enabled status.

Returns:

  • (String, Boolean)


33
34
35
# File 'lib/posthog/feature_flag_result.rb', line 33

def value
  @variant || @enabled
end