Class: Line::Bot::V2::Webhook::Event
- Inherits:
-
Object
- Object
- Line::Bot::V2::Webhook::Event
- Defined in:
- lib/line/bot/v2/webhook/model/event.rb,
sig/line/bot/v2/webhook/model/event.rbs
Overview
Webhook event
Direct Known Subclasses
AccountLinkEvent, ActivatedEvent, BeaconEvent, BotResumedEvent, BotSuspendedEvent, DeactivatedEvent, FollowEvent, JoinEvent, LeaveEvent, MemberJoinedEvent, MemberLeftEvent, MembershipEvent, MessageEditedEvent, MessageEvent, ModuleEvent, PnpDeliveryCompletionEvent, PostbackEvent, UnfollowEvent, UnsendEvent, VideoPlayCompleteEvent
Instance Attribute Summary collapse
- #delivery_context ⇒ DeliveryContext
-
#mode ⇒ String
('active'|'standby').
- #source ⇒ Source?
-
#timestamp ⇒ Integer
Time of the event in milliseconds.
-
#type ⇒ String
Type of the event.
-
#webhook_event_id ⇒ String
Webhook Event ID.
Class Method Summary collapse
-
.create(args) ⇒ Line::Bot::V2::Webhook::Event
Create an instance of the class from a hash.
- .detect_class(type:) ⇒ Class?
Instance Method Summary collapse
-
#==(other) ⇒ Boolean
True if the objects are equal, false otherwise.
-
#hash ⇒ Integer
Hash code of the object.
- #initialize(type:, source: nil, timestamp:, mode:, webhook_event_id:, delivery_context:, **dynamic_attributes) ⇒ Object constructor
Constructor Details
#initialize(type:, source: nil, timestamp:, mode:, webhook_event_id:, delivery_context:, **dynamic_attributes) ⇒ Object
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/line/bot/v2/webhook/model/event.rb', line 41 def initialize( type:, source: nil, timestamp:, mode:, webhook_event_id:, delivery_context:, **dynamic_attributes ) @type = type @source = source.is_a?(Line::Bot::V2::Webhook::Source) || source.nil? ? source : Line::Bot::V2::Webhook::Source.create(**source) @timestamp = @mode = mode @webhook_event_id = webhook_event_id @delivery_context = delivery_context.is_a?(Line::Bot::V2::Webhook::DeliveryContext) ? delivery_context : Line::Bot::V2::Webhook::DeliveryContext.create(**delivery_context) dynamic_attributes.each do |key, value| self.class.attr_accessor key if value.is_a?(Hash) struct_klass = Struct.new(*value.keys.map(&:to_sym)) struct_values = value.map { |_k, v| v.is_a?(Hash) ? Line::Bot::V2::Utils.hash_to_struct(v) : v } instance_variable_set("@#{key}", struct_klass.new(*struct_values)) else instance_variable_set("@#{key}", value) end end end |
Instance Attribute Details
#delivery_context ⇒ DeliveryContext
33 34 35 |
# File 'lib/line/bot/v2/webhook/model/event.rb', line 33 def delivery_context @delivery_context end |
#mode ⇒ String
Returns ('active'|'standby').
27 28 29 |
# File 'lib/line/bot/v2/webhook/model/event.rb', line 27 def mode @mode end |
#source ⇒ Source?
21 22 23 |
# File 'lib/line/bot/v2/webhook/model/event.rb', line 21 def source @source end |
#timestamp ⇒ Integer
Returns Time of the event in milliseconds.
24 25 26 |
# File 'lib/line/bot/v2/webhook/model/event.rb', line 24 def @timestamp end |
#type ⇒ String
Returns Type of the event.
18 19 20 |
# File 'lib/line/bot/v2/webhook/model/event.rb', line 18 def type @type end |
#webhook_event_id ⇒ String
Returns Webhook Event ID. An ID that uniquely identifies a webhook event. This is a string in ULID format.
30 31 32 |
# File 'lib/line/bot/v2/webhook/model/event.rb', line 30 def webhook_event_id @webhook_event_id end |
Class Method Details
.create(args) ⇒ Line::Bot::V2::Webhook::Event
Create an instance of the class from a hash
74 75 76 77 78 79 |
# File 'lib/line/bot/v2/webhook/model/event.rb', line 74 def self.create(args) symbolized_args = Line::Bot::V2::Utils.deep_symbolize(args) klass = detect_class(type: symbolized_args[:type]) return klass.new(**symbolized_args) if klass # steep:ignore UnannotatedEmptyCollection return new(**symbolized_args) # steep:ignore InsufficientKeywordArguments end |
.detect_class(type:) ⇒ Class?
98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 |
# File 'lib/line/bot/v2/webhook/model/event.rb', line 98 def self.detect_class(type:) { accountLink: Line::Bot::V2::Webhook::AccountLinkEvent, activated: Line::Bot::V2::Webhook::ActivatedEvent, beacon: Line::Bot::V2::Webhook::BeaconEvent, botResumed: Line::Bot::V2::Webhook::BotResumedEvent, botSuspended: Line::Bot::V2::Webhook::BotSuspendedEvent, deactivated: Line::Bot::V2::Webhook::DeactivatedEvent, follow: Line::Bot::V2::Webhook::FollowEvent, join: Line::Bot::V2::Webhook::JoinEvent, leave: Line::Bot::V2::Webhook::LeaveEvent, memberJoined: Line::Bot::V2::Webhook::MemberJoinedEvent, memberLeft: Line::Bot::V2::Webhook::MemberLeftEvent, membership: Line::Bot::V2::Webhook::MembershipEvent, messageEdited: Line::Bot::V2::Webhook::MessageEditedEvent, message: Line::Bot::V2::Webhook::MessageEvent, module: Line::Bot::V2::Webhook::ModuleEvent, delivery: Line::Bot::V2::Webhook::PnpDeliveryCompletionEvent, postback: Line::Bot::V2::Webhook::PostbackEvent, unfollow: Line::Bot::V2::Webhook::UnfollowEvent, unsend: Line::Bot::V2::Webhook::UnsendEvent, videoPlayComplete: Line::Bot::V2::Webhook::VideoPlayCompleteEvent, }[type.to_sym] end |
Instance Method Details
#==(other) ⇒ Boolean
Returns true if the objects are equal, false otherwise.
83 84 85 86 87 88 89 |
# File 'lib/line/bot/v2/webhook/model/event.rb', line 83 def ==(other) return false unless self.class == other.class instance_variables.all? do |var| instance_variable_get(var) == other.instance_variable_get(var) end end |
#hash ⇒ Integer
Returns Hash code of the object.
92 93 94 |
# File 'lib/line/bot/v2/webhook/model/event.rb', line 92 def hash [self.class, *instance_variables.map { |var| instance_variable_get(var) }].hash end |