diff --git a/generator/src/main/java/line/bot/generator/LineBotSdkRubyGenerator.java b/generator/src/main/java/line/bot/generator/LineBotSdkRubyGenerator.java index 07634c1a..a9a06aaa 100644 --- a/generator/src/main/java/line/bot/generator/LineBotSdkRubyGenerator.java +++ b/generator/src/main/java/line/bot/generator/LineBotSdkRubyGenerator.java @@ -2,8 +2,10 @@ import java.io.File; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.Optional; +import java.util.stream.Collectors; import org.openapitools.codegen.CodegenDiscriminator; import org.openapitools.codegen.CodegenModel; @@ -79,6 +81,7 @@ public Map postProcessAllModels(Map objs) for (ModelsMap entry : result.values()) { for (ModelMap mo : entry.getModels()) { CodegenModel cm = mo.getModel(); + final Map selector = new HashMap<>(); if (cm.getParentModel() != null) { final CodegenDiscriminator discriminator = cm.getParentModel().getDiscriminator(); @@ -86,12 +89,34 @@ public Map postProcessAllModels(Map objs) it -> it.getModelName().equals(cm.name) ).map(CodegenDiscriminator.MappedModel::getMappingName).findFirst(); mappingNameOptional.ifPresent(mappingName -> { - final Map selector = new HashMap<>(); selector.put("propertyName", discriminator.getPropertyName()); selector.put("mappingName", mappingName); cm.getVendorExtensions().put("x-selector", selector); }); } + + if (cm.getChildren() != null && cm.getDiscriminator() != null) { + final List> childMappings = + cm.getChildren().stream() + .map(child -> { + Map childInfo = new HashMap<>(); + childInfo.put("className", child.name); + + final CodegenDiscriminator discriminator = cm.getDiscriminator(); + if (discriminator != null) { + discriminator.getMappedModels().stream() + .filter(mappedModel -> mappedModel.getModelName().equals(child.name)) + .findFirst() + .ifPresent(mappedModel -> childInfo.put("typeName", mappedModel.getMappingName())); + } + + return childInfo; + }) + .collect(Collectors.toList()); + + cm.getVendorExtensions().put("x-children", childMappings); + cm.getVendorExtensions().put("x-discriminator-property", cm.getDiscriminator().getPropertyName()); + } } } return result; diff --git a/generator/src/main/java/line/bot/generator/LineBotSdkRubyRbsGenerator.java b/generator/src/main/java/line/bot/generator/LineBotSdkRubyRbsGenerator.java index c26c35fd..976ecc77 100644 --- a/generator/src/main/java/line/bot/generator/LineBotSdkRubyRbsGenerator.java +++ b/generator/src/main/java/line/bot/generator/LineBotSdkRubyRbsGenerator.java @@ -2,8 +2,10 @@ import java.io.File; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.Optional; +import java.util.stream.Collectors; import org.openapitools.codegen.CodegenDiscriminator; import org.openapitools.codegen.CodegenModel; @@ -80,6 +82,7 @@ public Map postProcessAllModels(Map objs) for (ModelsMap entry : result.values()) { for (ModelMap mo : entry.getModels()) { CodegenModel cm = mo.getModel(); + final Map selector = new HashMap<>(); if (cm.getParentModel() != null) { final CodegenDiscriminator discriminator = cm.getParentModel().getDiscriminator(); @@ -87,12 +90,34 @@ public Map postProcessAllModels(Map objs) it -> it.getModelName().equals(cm.name) ).map(CodegenDiscriminator.MappedModel::getMappingName).findFirst(); mappingNameOptional.ifPresent(mappingName -> { - final Map selector = new HashMap<>(); selector.put("propertyName", discriminator.getPropertyName()); selector.put("mappingName", mappingName); cm.getVendorExtensions().put("x-selector", selector); }); } + + if (cm.getChildren() != null && cm.getDiscriminator() != null) { + final List> childMappings = + cm.getChildren().stream() + .map(child -> { + Map childInfo = new HashMap<>(); + childInfo.put("className", child.name); + + final CodegenDiscriminator discriminator = cm.getDiscriminator(); + if (discriminator != null) { + discriminator.getMappedModels().stream() + .filter(mappedModel -> mappedModel.getModelName().equals(child.name)) + .findFirst() + .ifPresent(mappedModel -> childInfo.put("typeName", mappedModel.getMappingName())); + } + + return childInfo; + }) + .collect(Collectors.toList()); + + cm.getVendorExtensions().put("x-children", childMappings); + cm.getVendorExtensions().put("x-discriminator-property", cm.getDiscriminator().getPropertyName()); + } } } return result; diff --git a/generator/src/main/resources/line-bot-sdk-ruby-generator/model.pebble b/generator/src/main/resources/line-bot-sdk-ruby-generator/model.pebble index ebe24809..1a8e5c4f 100644 --- a/generator/src/main/resources/line-bot-sdk-ruby-generator/model.pebble +++ b/generator/src/main/resources/line-bot-sdk-ruby-generator/model.pebble @@ -25,20 +25,57 @@ module Line {% if model.model.vendorExtensions.get("x-selector").propertyName != property.name %}attr_accessor{% else %}attr_reader{% endif %} :{{ property.name }}{% if property.description != null %} # {{ property.description }}{% endif %} {%- endfor %} - def initialize({% for property in model.model.vars %}{% if model.model.vendorExtensions.get("x-selector").propertyName != property.name or packageName == 'webhook' %} + def initialize({% for property in model.model.vars %}{% if model.model.vendorExtensions.get("x-selector").propertyName != property.name %} {{ property.name }}:{% if property.defaultValue == null %}{{ property.required ? '' : ' nil' }}{% else %}{{ ' ' + property.defaultValue }}{% endif %},{% endif %}{% endfor %} **dynamic_attributes ) - {% if model.model.vendorExtensions.get("x-selector") != null %}@{{model.model.vendorExtensions.get("x-selector").propertyName}} = "{{model.model.vendorExtensions.get("x-selector").mappingName}}"{% endif -%} + {% if model.model.vendorExtensions.get("x-selector") != null %}@{{model.model.vendorExtensions.get("x-selector").propertyName}} = "{{model.model.vendorExtensions.get("x-selector").mappingName}}"{%- endif -%} {%- for property in model.model.vars %} - {% if model.model.vendorExtensions.get("x-selector").propertyName != property.name %}@{{ property.name }} = {{ property.name }}{% endif -%} - {% endfor %} + {% if property.isArray -%} + @{{ property.name }} = {{ property.name }}{{ property.required ? '' : '&' }}.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::{{ packageName | camelize }}::{{ property.complexType }}.create(**item) + else + item + end + end + {%- elseif property.isModel -%} + @{{ property.name }} = {{ property.name }}.is_a?(Line::Bot::V2::{{ packageName | camelize }}::{{ property.baseType }}){% if not property.required %} || {{ property.name }}.nil?{% endif %} ? {{ property.name }} : Line::Bot::V2::{{ packageName | camelize }}::{{ property.baseType }}.create(**{{ property.name }}) + {%- elseif model.model.vendorExtensions.get("x-selector").propertyName != property.name -%} + @{{ property.name }} = {{ property.name }} + {%- endif -%} + {%- endfor %} dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args){% if model.model.vendorExtensions.get("x-children") != null and model.model.vendorExtensions.get("x-discriminator-property") != null %} + klass = detect_class(args[:{{ model.model.vendorExtensions.get("x-discriminator-property") }}]) + return klass.new(**args) if klass + {% endif %} + return new(**args) + end + {%- if model.model.vendorExtensions.get("x-children") != null %} + + private + + def self.detect_class(type) + { + {%- for child in model.model.vendorExtensions.get("x-children") %} + {{ child.typeName }}: Line::Bot::V2::{{ packageName | camelize }}::{{ child.className }}, + {%- endfor %} + }[type.to_sym] + end{% endif %} end end end diff --git a/generator/src/main/resources/line-bot-sdk-ruby-rbs-generator/model.pebble b/generator/src/main/resources/line-bot-sdk-ruby-rbs-generator/model.pebble index 34c74560..302b197d 100644 --- a/generator/src/main/resources/line-bot-sdk-ruby-rbs-generator/model.pebble +++ b/generator/src/main/resources/line-bot-sdk-ruby-rbs-generator/model.pebble @@ -58,6 +58,14 @@ module Line {% endif %}{{ loop.last ? '' : ", " }}{% endif %}{% endfor %} ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> {{ model.model.classname }} + {%- if model.model.vendorExtensions.get("x-children") != null %} + + private + + def self.detect_class: (type: String) -> Class + {%- endif %} {%- endif %} end end diff --git a/lib/line/bot/v2/channel_access_token/model/channel_access_token_key_ids_response.rb b/lib/line/bot/v2/channel_access_token/model/channel_access_token_key_ids_response.rb index f4515afe..72aff373 100644 --- a/lib/line/bot/v2/channel_access_token/model/channel_access_token_key_ids_response.rb +++ b/lib/line/bot/v2/channel_access_token/model/channel_access_token_key_ids_response.rb @@ -21,13 +21,30 @@ def initialize( **dynamic_attributes ) - @kids = kids + @kids = kids.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::ChannelAccessToken::string.create(**item) + else + item + end + end dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/channel_access_token/model/error_response.rb b/lib/line/bot/v2/channel_access_token/model/error_response.rb index 90cefb99..ab37a7fa 100644 --- a/lib/line/bot/v2/channel_access_token/model/error_response.rb +++ b/lib/line/bot/v2/channel_access_token/model/error_response.rb @@ -27,9 +27,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/channel_access_token/model/issue_channel_access_token_response.rb b/lib/line/bot/v2/channel_access_token/model/issue_channel_access_token_response.rb index bf1de66f..05decf2f 100644 --- a/lib/line/bot/v2/channel_access_token/model/issue_channel_access_token_response.rb +++ b/lib/line/bot/v2/channel_access_token/model/issue_channel_access_token_response.rb @@ -34,9 +34,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/channel_access_token/model/issue_short_lived_channel_access_token_response.rb b/lib/line/bot/v2/channel_access_token/model/issue_short_lived_channel_access_token_response.rb index 760eb7c5..6452c0fc 100644 --- a/lib/line/bot/v2/channel_access_token/model/issue_short_lived_channel_access_token_response.rb +++ b/lib/line/bot/v2/channel_access_token/model/issue_short_lived_channel_access_token_response.rb @@ -31,9 +31,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/channel_access_token/model/issue_stateless_channel_access_token_response.rb b/lib/line/bot/v2/channel_access_token/model/issue_stateless_channel_access_token_response.rb index b93c223e..020c665a 100644 --- a/lib/line/bot/v2/channel_access_token/model/issue_stateless_channel_access_token_response.rb +++ b/lib/line/bot/v2/channel_access_token/model/issue_stateless_channel_access_token_response.rb @@ -31,9 +31,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/channel_access_token/model/verify_channel_access_token_response.rb b/lib/line/bot/v2/channel_access_token/model/verify_channel_access_token_response.rb index a7c4b44f..45ee4e1e 100644 --- a/lib/line/bot/v2/channel_access_token/model/verify_channel_access_token_response.rb +++ b/lib/line/bot/v2/channel_access_token/model/verify_channel_access_token_response.rb @@ -30,9 +30,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/insight/model/age_tile.rb b/lib/line/bot/v2/insight/model/age_tile.rb index 15fed654..5090ca4d 100644 --- a/lib/line/bot/v2/insight/model/age_tile.rb +++ b/lib/line/bot/v2/insight/model/age_tile.rb @@ -26,9 +26,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/insight/model/app_type_tile.rb b/lib/line/bot/v2/insight/model/app_type_tile.rb index 5a75ad82..34346f6f 100644 --- a/lib/line/bot/v2/insight/model/app_type_tile.rb +++ b/lib/line/bot/v2/insight/model/app_type_tile.rb @@ -26,9 +26,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/insight/model/area_tile.rb b/lib/line/bot/v2/insight/model/area_tile.rb index 81d10d13..a53954ec 100644 --- a/lib/line/bot/v2/insight/model/area_tile.rb +++ b/lib/line/bot/v2/insight/model/area_tile.rb @@ -26,9 +26,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/insight/model/error_detail.rb b/lib/line/bot/v2/insight/model/error_detail.rb index 70ae28cf..368eb5eb 100644 --- a/lib/line/bot/v2/insight/model/error_detail.rb +++ b/lib/line/bot/v2/insight/model/error_detail.rb @@ -26,9 +26,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/insight/model/error_response.rb b/lib/line/bot/v2/insight/model/error_response.rb index 1528b9de..97990fc5 100644 --- a/lib/line/bot/v2/insight/model/error_response.rb +++ b/lib/line/bot/v2/insight/model/error_response.rb @@ -23,13 +23,30 @@ def initialize( ) @message = message - @details = details + @details = details&.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::Insight::ErrorDetail.create(**item) + else + item + end + end dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/insight/model/gender_tile.rb b/lib/line/bot/v2/insight/model/gender_tile.rb index aba296ad..2971ed1d 100644 --- a/lib/line/bot/v2/insight/model/gender_tile.rb +++ b/lib/line/bot/v2/insight/model/gender_tile.rb @@ -26,9 +26,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/insight/model/get_friends_demographics_response.rb b/lib/line/bot/v2/insight/model/get_friends_demographics_response.rb index 4dbeb3a5..2c03e3b1 100644 --- a/lib/line/bot/v2/insight/model/get_friends_demographics_response.rb +++ b/lib/line/bot/v2/insight/model/get_friends_demographics_response.rb @@ -32,17 +32,58 @@ def initialize( ) @available = available - @genders = genders - @ages = ages - @areas = areas - @app_types = app_types - @subscription_periods = subscription_periods + @genders = genders&.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::Insight::GenderTile.create(**item) + else + item + end + end + @ages = ages&.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::Insight::AgeTile.create(**item) + else + item + end + end + @areas = areas&.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::Insight::AreaTile.create(**item) + else + item + end + end + @app_types = app_types&.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::Insight::AppTypeTile.create(**item) + else + item + end + end + @subscription_periods = subscription_periods&.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::Insight::SubscriptionPeriodTile.create(**item) + else + item + end + end dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/insight/model/get_message_event_response.rb b/lib/line/bot/v2/insight/model/get_message_event_response.rb index 24171080..624a6dde 100644 --- a/lib/line/bot/v2/insight/model/get_message_event_response.rb +++ b/lib/line/bot/v2/insight/model/get_message_event_response.rb @@ -25,15 +25,38 @@ def initialize( **dynamic_attributes ) - @overview = overview - @messages = messages - @clicks = clicks + @overview = overview.is_a?(Line::Bot::V2::Insight::GetMessageEventResponseOverview) || overview.nil? ? overview : Line::Bot::V2::Insight::GetMessageEventResponseOverview.create(**overview) + @messages = messages&.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::Insight::GetMessageEventResponseMessage.create(**item) + else + item + end + end + @clicks = clicks&.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::Insight::GetMessageEventResponseClick.create(**item) + else + item + end + end dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/insight/model/get_message_event_response_click.rb b/lib/line/bot/v2/insight/model/get_message_event_response_click.rb index 9431d806..179388aa 100644 --- a/lib/line/bot/v2/insight/model/get_message_event_response_click.rb +++ b/lib/line/bot/v2/insight/model/get_message_event_response_click.rb @@ -35,9 +35,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/insight/model/get_message_event_response_message.rb b/lib/line/bot/v2/insight/model/get_message_event_response_message.rb index 322ead47..7f18599b 100644 --- a/lib/line/bot/v2/insight/model/get_message_event_response_message.rb +++ b/lib/line/bot/v2/insight/model/get_message_event_response_message.rb @@ -56,9 +56,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/insight/model/get_message_event_response_overview.rb b/lib/line/bot/v2/insight/model/get_message_event_response_overview.rb index ad770e95..1518bed5 100644 --- a/lib/line/bot/v2/insight/model/get_message_event_response_overview.rb +++ b/lib/line/bot/v2/insight/model/get_message_event_response_overview.rb @@ -42,9 +42,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/insight/model/get_number_of_followers_response.rb b/lib/line/bot/v2/insight/model/get_number_of_followers_response.rb index da000096..1551e538 100644 --- a/lib/line/bot/v2/insight/model/get_number_of_followers_response.rb +++ b/lib/line/bot/v2/insight/model/get_number_of_followers_response.rb @@ -34,9 +34,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/insight/model/get_number_of_message_deliveries_response.rb b/lib/line/bot/v2/insight/model/get_number_of_message_deliveries_response.rb index eb382b66..bc541051 100644 --- a/lib/line/bot/v2/insight/model/get_number_of_message_deliveries_response.rb +++ b/lib/line/bot/v2/insight/model/get_number_of_message_deliveries_response.rb @@ -55,9 +55,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/insight/model/get_statistics_per_unit_response.rb b/lib/line/bot/v2/insight/model/get_statistics_per_unit_response.rb index 46e820ae..458b79d6 100644 --- a/lib/line/bot/v2/insight/model/get_statistics_per_unit_response.rb +++ b/lib/line/bot/v2/insight/model/get_statistics_per_unit_response.rb @@ -25,15 +25,38 @@ def initialize( **dynamic_attributes ) - @overview = overview - @messages = messages - @clicks = clicks + @overview = overview.is_a?(Line::Bot::V2::Insight::GetStatisticsPerUnitResponseOverview) ? overview : Line::Bot::V2::Insight::GetStatisticsPerUnitResponseOverview.create(**overview) + @messages = messages.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::Insight::GetStatisticsPerUnitResponseMessage.create(**item) + else + item + end + end + @clicks = clicks.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::Insight::GetStatisticsPerUnitResponseClick.create(**item) + else + item + end + end dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/insight/model/get_statistics_per_unit_response_click.rb b/lib/line/bot/v2/insight/model/get_statistics_per_unit_response_click.rb index 3fa3b9a3..5b41baf2 100644 --- a/lib/line/bot/v2/insight/model/get_statistics_per_unit_response_click.rb +++ b/lib/line/bot/v2/insight/model/get_statistics_per_unit_response_click.rb @@ -36,9 +36,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/insight/model/get_statistics_per_unit_response_message.rb b/lib/line/bot/v2/insight/model/get_statistics_per_unit_response_message.rb index 15a6aa6b..d7e414d7 100644 --- a/lib/line/bot/v2/insight/model/get_statistics_per_unit_response_message.rb +++ b/lib/line/bot/v2/insight/model/get_statistics_per_unit_response_message.rb @@ -60,9 +60,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/insight/model/get_statistics_per_unit_response_overview.rb b/lib/line/bot/v2/insight/model/get_statistics_per_unit_response_overview.rb index 223b28f2..bbf890e1 100644 --- a/lib/line/bot/v2/insight/model/get_statistics_per_unit_response_overview.rb +++ b/lib/line/bot/v2/insight/model/get_statistics_per_unit_response_overview.rb @@ -34,9 +34,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/insight/model/subscription_period_tile.rb b/lib/line/bot/v2/insight/model/subscription_period_tile.rb index b2be640f..9577ef97 100644 --- a/lib/line/bot/v2/insight/model/subscription_period_tile.rb +++ b/lib/line/bot/v2/insight/model/subscription_period_tile.rb @@ -26,9 +26,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/liff/model/add_liff_app_request.rb b/lib/line/bot/v2/liff/model/add_liff_app_request.rb index 7920c66d..cab4783c 100644 --- a/lib/line/bot/v2/liff/model/add_liff_app_request.rb +++ b/lib/line/bot/v2/liff/model/add_liff_app_request.rb @@ -30,18 +30,35 @@ def initialize( **dynamic_attributes ) - @view = view + @view = view.is_a?(Line::Bot::V2::Liff::LiffView) ? view : Line::Bot::V2::Liff::LiffView.create(**view) @description = description - @features = features + @features = features.is_a?(Line::Bot::V2::Liff::LiffFeatures) || features.nil? ? features : Line::Bot::V2::Liff::LiffFeatures.create(**features) @permanent_link_pattern = permanent_link_pattern - @scope = scope + @scope = scope&.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::Liff::LiffScope.create(**item) + else + item + end + end @bot_prompt = bot_prompt dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/liff/model/add_liff_app_response.rb b/lib/line/bot/v2/liff/model/add_liff_app_response.rb index 068f82e7..073953fd 100644 --- a/lib/line/bot/v2/liff/model/add_liff_app_response.rb +++ b/lib/line/bot/v2/liff/model/add_liff_app_response.rb @@ -23,9 +23,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/liff/model/get_all_liff_apps_response.rb b/lib/line/bot/v2/liff/model/get_all_liff_apps_response.rb index 439b7916..3c36b174 100644 --- a/lib/line/bot/v2/liff/model/get_all_liff_apps_response.rb +++ b/lib/line/bot/v2/liff/model/get_all_liff_apps_response.rb @@ -19,13 +19,30 @@ def initialize( **dynamic_attributes ) - @apps = apps + @apps = apps&.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::Liff::LiffApp.create(**item) + else + item + end + end dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/liff/model/liff_app.rb b/lib/line/bot/v2/liff/model/liff_app.rb index d7d700bb..7e70b529 100644 --- a/lib/line/bot/v2/liff/model/liff_app.rb +++ b/lib/line/bot/v2/liff/model/liff_app.rb @@ -32,18 +32,35 @@ def initialize( ) @liff_id = liff_id - @view = view + @view = view.is_a?(Line::Bot::V2::Liff::LiffView) || view.nil? ? view : Line::Bot::V2::Liff::LiffView.create(**view) @description = description - @features = features + @features = features.is_a?(Line::Bot::V2::Liff::LiffFeatures) || features.nil? ? features : Line::Bot::V2::Liff::LiffFeatures.create(**features) @permanent_link_pattern = permanent_link_pattern - @scope = scope + @scope = scope&.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::Liff::LiffScope.create(**item) + else + item + end + end @bot_prompt = bot_prompt dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/liff/model/liff_bot_prompt.rb b/lib/line/bot/v2/liff/model/liff_bot_prompt.rb index f22ea111..45c74786 100644 --- a/lib/line/bot/v2/liff/model/liff_bot_prompt.rb +++ b/lib/line/bot/v2/liff/model/liff_bot_prompt.rb @@ -21,9 +21,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/liff/model/liff_features.rb b/lib/line/bot/v2/liff/model/liff_features.rb index 84ba9547..4de048d3 100644 --- a/lib/line/bot/v2/liff/model/liff_features.rb +++ b/lib/line/bot/v2/liff/model/liff_features.rb @@ -26,9 +26,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/liff/model/liff_scope.rb b/lib/line/bot/v2/liff/model/liff_scope.rb index fc34f3f8..f88fe7d9 100644 --- a/lib/line/bot/v2/liff/model/liff_scope.rb +++ b/lib/line/bot/v2/liff/model/liff_scope.rb @@ -21,9 +21,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/liff/model/liff_view.rb b/lib/line/bot/v2/liff/model/liff_view.rb index a58bb3ef..8419009d 100644 --- a/lib/line/bot/v2/liff/model/liff_view.rb +++ b/lib/line/bot/v2/liff/model/liff_view.rb @@ -30,9 +30,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/liff/model/update_liff_app_request.rb b/lib/line/bot/v2/liff/model/update_liff_app_request.rb index fd992b5d..5b037e14 100644 --- a/lib/line/bot/v2/liff/model/update_liff_app_request.rb +++ b/lib/line/bot/v2/liff/model/update_liff_app_request.rb @@ -30,18 +30,35 @@ def initialize( **dynamic_attributes ) - @view = view + @view = view.is_a?(Line::Bot::V2::Liff::UpdateLiffView) || view.nil? ? view : Line::Bot::V2::Liff::UpdateLiffView.create(**view) @description = description - @features = features + @features = features.is_a?(Line::Bot::V2::Liff::LiffFeatures) || features.nil? ? features : Line::Bot::V2::Liff::LiffFeatures.create(**features) @permanent_link_pattern = permanent_link_pattern - @scope = scope + @scope = scope&.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::Liff::LiffScope.create(**item) + else + item + end + end @bot_prompt = bot_prompt dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/liff/model/update_liff_view.rb b/lib/line/bot/v2/liff/model/update_liff_view.rb index 98e1d2b5..50352554 100644 --- a/lib/line/bot/v2/liff/model/update_liff_view.rb +++ b/lib/line/bot/v2/liff/model/update_liff_view.rb @@ -30,9 +30,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/manage_audience/model/adaccount.rb b/lib/line/bot/v2/manage_audience/model/adaccount.rb index 9f7c6f74..1979e752 100644 --- a/lib/line/bot/v2/manage_audience/model/adaccount.rb +++ b/lib/line/bot/v2/manage_audience/model/adaccount.rb @@ -24,9 +24,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/manage_audience/model/add_audience_to_audience_group_request.rb b/lib/line/bot/v2/manage_audience/model/add_audience_to_audience_group_request.rb index a256ced1..739bae9e 100644 --- a/lib/line/bot/v2/manage_audience/model/add_audience_to_audience_group_request.rb +++ b/lib/line/bot/v2/manage_audience/model/add_audience_to_audience_group_request.rb @@ -27,13 +27,30 @@ def initialize( @audience_group_id = audience_group_id @upload_description = upload_description - @audiences = audiences + @audiences = audiences&.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::ManageAudience::Audience.create(**item) + else + item + end + end dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/manage_audience/model/audience.rb b/lib/line/bot/v2/manage_audience/model/audience.rb index 439baa36..4223e76b 100644 --- a/lib/line/bot/v2/manage_audience/model/audience.rb +++ b/lib/line/bot/v2/manage_audience/model/audience.rb @@ -24,9 +24,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/manage_audience/model/audience_group.rb b/lib/line/bot/v2/manage_audience/model/audience_group.rb index e00576d8..267946fa 100644 --- a/lib/line/bot/v2/manage_audience/model/audience_group.rb +++ b/lib/line/bot/v2/manage_audience/model/audience_group.rb @@ -57,9 +57,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/manage_audience/model/audience_group_authority_level.rb b/lib/line/bot/v2/manage_audience/model/audience_group_authority_level.rb index fde5b31b..e07bf94a 100644 --- a/lib/line/bot/v2/manage_audience/model/audience_group_authority_level.rb +++ b/lib/line/bot/v2/manage_audience/model/audience_group_authority_level.rb @@ -21,9 +21,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/manage_audience/model/audience_group_create_route.rb b/lib/line/bot/v2/manage_audience/model/audience_group_create_route.rb index dbeed0be..6854ec3b 100644 --- a/lib/line/bot/v2/manage_audience/model/audience_group_create_route.rb +++ b/lib/line/bot/v2/manage_audience/model/audience_group_create_route.rb @@ -21,9 +21,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/manage_audience/model/audience_group_failed_type.rb b/lib/line/bot/v2/manage_audience/model/audience_group_failed_type.rb index 7a519101..e6fe5269 100644 --- a/lib/line/bot/v2/manage_audience/model/audience_group_failed_type.rb +++ b/lib/line/bot/v2/manage_audience/model/audience_group_failed_type.rb @@ -21,9 +21,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/manage_audience/model/audience_group_job.rb b/lib/line/bot/v2/manage_audience/model/audience_group_job.rb index 7028fe6e..854bfc3a 100644 --- a/lib/line/bot/v2/manage_audience/model/audience_group_job.rb +++ b/lib/line/bot/v2/manage_audience/model/audience_group_job.rb @@ -46,9 +46,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/manage_audience/model/audience_group_job_failed_type.rb b/lib/line/bot/v2/manage_audience/model/audience_group_job_failed_type.rb index 02b54f43..4c1de836 100644 --- a/lib/line/bot/v2/manage_audience/model/audience_group_job_failed_type.rb +++ b/lib/line/bot/v2/manage_audience/model/audience_group_job_failed_type.rb @@ -21,9 +21,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/manage_audience/model/audience_group_job_status.rb b/lib/line/bot/v2/manage_audience/model/audience_group_job_status.rb index e0c7d210..14f5ff95 100644 --- a/lib/line/bot/v2/manage_audience/model/audience_group_job_status.rb +++ b/lib/line/bot/v2/manage_audience/model/audience_group_job_status.rb @@ -21,9 +21,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/manage_audience/model/audience_group_job_type.rb b/lib/line/bot/v2/manage_audience/model/audience_group_job_type.rb index 732ec5c5..a3a10589 100644 --- a/lib/line/bot/v2/manage_audience/model/audience_group_job_type.rb +++ b/lib/line/bot/v2/manage_audience/model/audience_group_job_type.rb @@ -21,9 +21,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/manage_audience/model/audience_group_permission.rb b/lib/line/bot/v2/manage_audience/model/audience_group_permission.rb index 4c016a9d..386a301a 100644 --- a/lib/line/bot/v2/manage_audience/model/audience_group_permission.rb +++ b/lib/line/bot/v2/manage_audience/model/audience_group_permission.rb @@ -21,9 +21,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/manage_audience/model/audience_group_status.rb b/lib/line/bot/v2/manage_audience/model/audience_group_status.rb index 4a43bebf..1f8f9e14 100644 --- a/lib/line/bot/v2/manage_audience/model/audience_group_status.rb +++ b/lib/line/bot/v2/manage_audience/model/audience_group_status.rb @@ -21,9 +21,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/manage_audience/model/audience_group_type.rb b/lib/line/bot/v2/manage_audience/model/audience_group_type.rb index 31d30a8d..5b0abe5a 100644 --- a/lib/line/bot/v2/manage_audience/model/audience_group_type.rb +++ b/lib/line/bot/v2/manage_audience/model/audience_group_type.rb @@ -21,9 +21,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/manage_audience/model/create_audience_group_request.rb b/lib/line/bot/v2/manage_audience/model/create_audience_group_request.rb index bd9454b4..cb98331a 100644 --- a/lib/line/bot/v2/manage_audience/model/create_audience_group_request.rb +++ b/lib/line/bot/v2/manage_audience/model/create_audience_group_request.rb @@ -30,13 +30,30 @@ def initialize( @description = description @is_ifa_audience = is_ifa_audience @upload_description = upload_description - @audiences = audiences + @audiences = audiences&.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::ManageAudience::Audience.create(**item) + else + item + end + end dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/manage_audience/model/create_audience_group_response.rb b/lib/line/bot/v2/manage_audience/model/create_audience_group_response.rb index c5bc6db5..485bc5d5 100644 --- a/lib/line/bot/v2/manage_audience/model/create_audience_group_response.rb +++ b/lib/line/bot/v2/manage_audience/model/create_audience_group_response.rb @@ -46,9 +46,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/manage_audience/model/create_click_based_audience_group_request.rb b/lib/line/bot/v2/manage_audience/model/create_click_based_audience_group_request.rb index 7008c4b1..1d94cd83 100644 --- a/lib/line/bot/v2/manage_audience/model/create_click_based_audience_group_request.rb +++ b/lib/line/bot/v2/manage_audience/model/create_click_based_audience_group_request.rb @@ -31,9 +31,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/manage_audience/model/create_click_based_audience_group_response.rb b/lib/line/bot/v2/manage_audience/model/create_click_based_audience_group_response.rb index cf3077dd..b2e04593 100644 --- a/lib/line/bot/v2/manage_audience/model/create_click_based_audience_group_response.rb +++ b/lib/line/bot/v2/manage_audience/model/create_click_based_audience_group_response.rb @@ -52,9 +52,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/manage_audience/model/create_imp_based_audience_group_request.rb b/lib/line/bot/v2/manage_audience/model/create_imp_based_audience_group_request.rb index ec2b3ad0..9c5a5429 100644 --- a/lib/line/bot/v2/manage_audience/model/create_imp_based_audience_group_request.rb +++ b/lib/line/bot/v2/manage_audience/model/create_imp_based_audience_group_request.rb @@ -28,9 +28,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/manage_audience/model/create_imp_based_audience_group_response.rb b/lib/line/bot/v2/manage_audience/model/create_imp_based_audience_group_response.rb index 669cc118..a4373da9 100644 --- a/lib/line/bot/v2/manage_audience/model/create_imp_based_audience_group_response.rb +++ b/lib/line/bot/v2/manage_audience/model/create_imp_based_audience_group_response.rb @@ -37,9 +37,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/manage_audience/model/detailed_owner.rb b/lib/line/bot/v2/manage_audience/model/detailed_owner.rb index 743a191e..09a7ce31 100644 --- a/lib/line/bot/v2/manage_audience/model/detailed_owner.rb +++ b/lib/line/bot/v2/manage_audience/model/detailed_owner.rb @@ -30,9 +30,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/manage_audience/model/error_detail.rb b/lib/line/bot/v2/manage_audience/model/error_detail.rb index ac82a424..bdd0ee97 100644 --- a/lib/line/bot/v2/manage_audience/model/error_detail.rb +++ b/lib/line/bot/v2/manage_audience/model/error_detail.rb @@ -26,9 +26,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/manage_audience/model/error_response.rb b/lib/line/bot/v2/manage_audience/model/error_response.rb index 52da307f..8397df9d 100644 --- a/lib/line/bot/v2/manage_audience/model/error_response.rb +++ b/lib/line/bot/v2/manage_audience/model/error_response.rb @@ -23,13 +23,30 @@ def initialize( ) @message = message - @details = details + @details = details&.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::ManageAudience::ErrorDetail.create(**item) + else + item + end + end dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/manage_audience/model/get_audience_data_response.rb b/lib/line/bot/v2/manage_audience/model/get_audience_data_response.rb index 7d98bf5c..018753a5 100644 --- a/lib/line/bot/v2/manage_audience/model/get_audience_data_response.rb +++ b/lib/line/bot/v2/manage_audience/model/get_audience_data_response.rb @@ -25,15 +25,32 @@ def initialize( **dynamic_attributes ) - @audience_group = audience_group - @jobs = jobs - @adaccount = adaccount + @audience_group = audience_group.is_a?(Line::Bot::V2::ManageAudience::AudienceGroup) || audience_group.nil? ? audience_group : Line::Bot::V2::ManageAudience::AudienceGroup.create(**audience_group) + @jobs = jobs&.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::ManageAudience::AudienceGroupJob.create(**item) + else + item + end + end + @adaccount = adaccount.is_a?(Line::Bot::V2::ManageAudience::Adaccount) || adaccount.nil? ? adaccount : Line::Bot::V2::ManageAudience::Adaccount.create(**adaccount) dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/manage_audience/model/get_audience_group_authority_level_response.rb b/lib/line/bot/v2/manage_audience/model/get_audience_group_authority_level_response.rb index bc5b7892..e814e0b5 100644 --- a/lib/line/bot/v2/manage_audience/model/get_audience_group_authority_level_response.rb +++ b/lib/line/bot/v2/manage_audience/model/get_audience_group_authority_level_response.rb @@ -25,9 +25,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/manage_audience/model/get_audience_groups_response.rb b/lib/line/bot/v2/manage_audience/model/get_audience_groups_response.rb index ada39c50..c8c70a99 100644 --- a/lib/line/bot/v2/manage_audience/model/get_audience_groups_response.rb +++ b/lib/line/bot/v2/manage_audience/model/get_audience_groups_response.rb @@ -31,7 +31,13 @@ def initialize( **dynamic_attributes ) - @audience_groups = audience_groups + @audience_groups = audience_groups&.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::ManageAudience::AudienceGroup.create(**item) + else + item + end + end @has_next_page = has_next_page @total_count = total_count @read_write_audience_group_total_count = read_write_audience_group_total_count @@ -40,9 +46,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/manage_audience/model/get_shared_audience_data_response.rb b/lib/line/bot/v2/manage_audience/model/get_shared_audience_data_response.rb index 017f79a1..f154a547 100644 --- a/lib/line/bot/v2/manage_audience/model/get_shared_audience_data_response.rb +++ b/lib/line/bot/v2/manage_audience/model/get_shared_audience_data_response.rb @@ -25,15 +25,32 @@ def initialize( **dynamic_attributes ) - @audience_group = audience_group - @jobs = jobs - @owner = owner + @audience_group = audience_group.is_a?(Line::Bot::V2::ManageAudience::AudienceGroup) || audience_group.nil? ? audience_group : Line::Bot::V2::ManageAudience::AudienceGroup.create(**audience_group) + @jobs = jobs&.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::ManageAudience::AudienceGroupJob.create(**item) + else + item + end + end + @owner = owner.is_a?(Line::Bot::V2::ManageAudience::DetailedOwner) || owner.nil? ? owner : Line::Bot::V2::ManageAudience::DetailedOwner.create(**owner) dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/manage_audience/model/get_shared_audience_groups_response.rb b/lib/line/bot/v2/manage_audience/model/get_shared_audience_groups_response.rb index 8b4c4c55..a9dc8891 100644 --- a/lib/line/bot/v2/manage_audience/model/get_shared_audience_groups_response.rb +++ b/lib/line/bot/v2/manage_audience/model/get_shared_audience_groups_response.rb @@ -31,7 +31,13 @@ def initialize( **dynamic_attributes ) - @audience_groups = audience_groups + @audience_groups = audience_groups&.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::ManageAudience::AudienceGroup.create(**item) + else + item + end + end @has_next_page = has_next_page @total_count = total_count @read_write_audience_group_total_count = read_write_audience_group_total_count @@ -40,9 +46,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/manage_audience/model/update_audience_group_authority_level_request.rb b/lib/line/bot/v2/manage_audience/model/update_audience_group_authority_level_request.rb index 66759d3a..07573268 100644 --- a/lib/line/bot/v2/manage_audience/model/update_audience_group_authority_level_request.rb +++ b/lib/line/bot/v2/manage_audience/model/update_audience_group_authority_level_request.rb @@ -25,9 +25,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/manage_audience/model/update_audience_group_description_request.rb b/lib/line/bot/v2/manage_audience/model/update_audience_group_description_request.rb index c71e7541..1cd60a96 100644 --- a/lib/line/bot/v2/manage_audience/model/update_audience_group_description_request.rb +++ b/lib/line/bot/v2/manage_audience/model/update_audience_group_description_request.rb @@ -25,9 +25,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/action.rb b/lib/line/bot/v2/messaging_api/model/action.rb index 87955295..3fc20fab 100644 --- a/lib/line/bot/v2/messaging_api/model/action.rb +++ b/lib/line/bot/v2/messaging_api/model/action.rb @@ -28,9 +28,39 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + klass = detect_class(args[:type]) + return klass.new(**args) if klass + + return new(**args) + end + + private + + def self.detect_class(type) + { + camera: Line::Bot::V2::MessagingApi::CameraAction, + cameraRoll: Line::Bot::V2::MessagingApi::CameraRollAction, + clipboard: Line::Bot::V2::MessagingApi::ClipboardAction, + datetimepicker: Line::Bot::V2::MessagingApi::DatetimePickerAction, + location: Line::Bot::V2::MessagingApi::LocationAction, + message: Line::Bot::V2::MessagingApi::MessageAction, + postback: Line::Bot::V2::MessagingApi::PostbackAction, + richmenuswitch: Line::Bot::V2::MessagingApi::RichMenuSwitchAction, + uri: Line::Bot::V2::MessagingApi::URIAction, + }[type.to_sym] + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/age_demographic.rb b/lib/line/bot/v2/messaging_api/model/age_demographic.rb index 443c28b6..cdca71ba 100644 --- a/lib/line/bot/v2/messaging_api/model/age_demographic.rb +++ b/lib/line/bot/v2/messaging_api/model/age_demographic.rb @@ -20,9 +20,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/age_demographic_filter.rb b/lib/line/bot/v2/messaging_api/model/age_demographic_filter.rb index e30a6b62..73e36b8a 100644 --- a/lib/line/bot/v2/messaging_api/model/age_demographic_filter.rb +++ b/lib/line/bot/v2/messaging_api/model/age_demographic_filter.rb @@ -30,9 +30,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/all_mention_target.rb b/lib/line/bot/v2/messaging_api/model/all_mention_target.rb index 67c3cb01..209d03a5 100644 --- a/lib/line/bot/v2/messaging_api/model/all_mention_target.rb +++ b/lib/line/bot/v2/messaging_api/model/all_mention_target.rb @@ -25,9 +25,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/alt_uri.rb b/lib/line/bot/v2/messaging_api/model/alt_uri.rb index 268df41f..c7f0f38c 100644 --- a/lib/line/bot/v2/messaging_api/model/alt_uri.rb +++ b/lib/line/bot/v2/messaging_api/model/alt_uri.rb @@ -23,9 +23,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/app_type_demographic.rb b/lib/line/bot/v2/messaging_api/model/app_type_demographic.rb index c4d8c763..5e7767d7 100644 --- a/lib/line/bot/v2/messaging_api/model/app_type_demographic.rb +++ b/lib/line/bot/v2/messaging_api/model/app_type_demographic.rb @@ -20,9 +20,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/app_type_demographic_filter.rb b/lib/line/bot/v2/messaging_api/model/app_type_demographic_filter.rb index 79c30372..032eccf9 100644 --- a/lib/line/bot/v2/messaging_api/model/app_type_demographic_filter.rb +++ b/lib/line/bot/v2/messaging_api/model/app_type_demographic_filter.rb @@ -23,13 +23,30 @@ def initialize( ) @type = "appType" - @one_of = one_of + @one_of = one_of&.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::MessagingApi::AppTypeDemographic.create(**item) + else + item + end + end dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/area_demographic.rb b/lib/line/bot/v2/messaging_api/model/area_demographic.rb index 4c8fd6b7..fb32b925 100644 --- a/lib/line/bot/v2/messaging_api/model/area_demographic.rb +++ b/lib/line/bot/v2/messaging_api/model/area_demographic.rb @@ -21,9 +21,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/area_demographic_filter.rb b/lib/line/bot/v2/messaging_api/model/area_demographic_filter.rb index ae10ffb9..7e91c986 100644 --- a/lib/line/bot/v2/messaging_api/model/area_demographic_filter.rb +++ b/lib/line/bot/v2/messaging_api/model/area_demographic_filter.rb @@ -23,13 +23,30 @@ def initialize( ) @type = "area" - @one_of = one_of + @one_of = one_of&.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::MessagingApi::AreaDemographic.create(**item) + else + item + end + end dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/audience_recipient.rb b/lib/line/bot/v2/messaging_api/model/audience_recipient.rb index b2fc3f18..eebf16b6 100644 --- a/lib/line/bot/v2/messaging_api/model/audience_recipient.rb +++ b/lib/line/bot/v2/messaging_api/model/audience_recipient.rb @@ -27,9 +27,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/audio_message.rb b/lib/line/bot/v2/messaging_api/model/audio_message.rb index 5a1665f2..08b94249 100644 --- a/lib/line/bot/v2/messaging_api/model/audio_message.rb +++ b/lib/line/bot/v2/messaging_api/model/audio_message.rb @@ -30,16 +30,27 @@ def initialize( ) @type = "audio" - @quick_reply = quick_reply - @sender = sender + @quick_reply = quick_reply.is_a?(Line::Bot::V2::MessagingApi::QuickReply) || quick_reply.nil? ? quick_reply : Line::Bot::V2::MessagingApi::QuickReply.create(**quick_reply) + @sender = sender.is_a?(Line::Bot::V2::MessagingApi::Sender) || sender.nil? ? sender : Line::Bot::V2::MessagingApi::Sender.create(**sender) @original_content_url = original_content_url @duration = duration dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/bot_info_response.rb b/lib/line/bot/v2/messaging_api/model/bot_info_response.rb index a3fdc89f..12598efa 100644 --- a/lib/line/bot/v2/messaging_api/model/bot_info_response.rb +++ b/lib/line/bot/v2/messaging_api/model/bot_info_response.rb @@ -42,9 +42,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/broadcast_request.rb b/lib/line/bot/v2/messaging_api/model/broadcast_request.rb index fb2e879b..405a086a 100644 --- a/lib/line/bot/v2/messaging_api/model/broadcast_request.rb +++ b/lib/line/bot/v2/messaging_api/model/broadcast_request.rb @@ -22,14 +22,31 @@ def initialize( **dynamic_attributes ) - @messages = messages + @messages = messages.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::MessagingApi::Message.create(**item) + else + item + end + end @notification_disabled = notification_disabled dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/buttons_template.rb b/lib/line/bot/v2/messaging_api/model/buttons_template.rb index ac9735d9..357941cd 100644 --- a/lib/line/bot/v2/messaging_api/model/buttons_template.rb +++ b/lib/line/bot/v2/messaging_api/model/buttons_template.rb @@ -43,14 +43,31 @@ def initialize( @image_background_color = image_background_color @title = title @text = text - @default_action = default_action - @actions = actions + @default_action = default_action.is_a?(Line::Bot::V2::MessagingApi::Action) || default_action.nil? ? default_action : Line::Bot::V2::MessagingApi::Action.create(**default_action) + @actions = actions.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::MessagingApi::Action.create(**item) + else + item + end + end dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/camera_action.rb b/lib/line/bot/v2/messaging_api/model/camera_action.rb index 827bd9c5..8caf8c71 100644 --- a/lib/line/bot/v2/messaging_api/model/camera_action.rb +++ b/lib/line/bot/v2/messaging_api/model/camera_action.rb @@ -27,9 +27,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/camera_roll_action.rb b/lib/line/bot/v2/messaging_api/model/camera_roll_action.rb index d4293ac3..e3153258 100644 --- a/lib/line/bot/v2/messaging_api/model/camera_roll_action.rb +++ b/lib/line/bot/v2/messaging_api/model/camera_roll_action.rb @@ -27,9 +27,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/carousel_column.rb b/lib/line/bot/v2/messaging_api/model/carousel_column.rb index e18b298c..84347659 100644 --- a/lib/line/bot/v2/messaging_api/model/carousel_column.rb +++ b/lib/line/bot/v2/messaging_api/model/carousel_column.rb @@ -34,14 +34,31 @@ def initialize( @image_background_color = image_background_color @title = title @text = text - @default_action = default_action - @actions = actions + @default_action = default_action.is_a?(Line::Bot::V2::MessagingApi::Action) || default_action.nil? ? default_action : Line::Bot::V2::MessagingApi::Action.create(**default_action) + @actions = actions.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::MessagingApi::Action.create(**item) + else + item + end + end dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/carousel_template.rb b/lib/line/bot/v2/messaging_api/model/carousel_template.rb index 7d0369f3..6dba2bad 100644 --- a/lib/line/bot/v2/messaging_api/model/carousel_template.rb +++ b/lib/line/bot/v2/messaging_api/model/carousel_template.rb @@ -27,15 +27,32 @@ def initialize( ) @type = "carousel" - @columns = columns + @columns = columns.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::MessagingApi::CarouselColumn.create(**item) + else + item + end + end @image_aspect_ratio = image_aspect_ratio @image_size = image_size dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/chat_reference.rb b/lib/line/bot/v2/messaging_api/model/chat_reference.rb index 3d7298c7..a7a5e3e5 100644 --- a/lib/line/bot/v2/messaging_api/model/chat_reference.rb +++ b/lib/line/bot/v2/messaging_api/model/chat_reference.rb @@ -25,9 +25,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/clipboard_action.rb b/lib/line/bot/v2/messaging_api/model/clipboard_action.rb index f049ce57..59cde1f8 100644 --- a/lib/line/bot/v2/messaging_api/model/clipboard_action.rb +++ b/lib/line/bot/v2/messaging_api/model/clipboard_action.rb @@ -31,9 +31,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/clipboard_imagemap_action.rb b/lib/line/bot/v2/messaging_api/model/clipboard_imagemap_action.rb index 8b2e0254..a27f3652 100644 --- a/lib/line/bot/v2/messaging_api/model/clipboard_imagemap_action.rb +++ b/lib/line/bot/v2/messaging_api/model/clipboard_imagemap_action.rb @@ -28,15 +28,26 @@ def initialize( ) @type = "clipboard" - @area = area + @area = area.is_a?(Line::Bot::V2::MessagingApi::ImagemapArea) ? area : Line::Bot::V2::MessagingApi::ImagemapArea.create(**area) @clipboard_text = clipboard_text @label = label dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/confirm_template.rb b/lib/line/bot/v2/messaging_api/model/confirm_template.rb index dc12f3c5..9db14fab 100644 --- a/lib/line/bot/v2/messaging_api/model/confirm_template.rb +++ b/lib/line/bot/v2/messaging_api/model/confirm_template.rb @@ -26,13 +26,30 @@ def initialize( @type = "confirm" @text = text - @actions = actions + @actions = actions.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::MessagingApi::Action.create(**item) + else + item + end + end dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/create_rich_menu_alias_request.rb b/lib/line/bot/v2/messaging_api/model/create_rich_menu_alias_request.rb index cfed39ce..e770f9b6 100644 --- a/lib/line/bot/v2/messaging_api/model/create_rich_menu_alias_request.rb +++ b/lib/line/bot/v2/messaging_api/model/create_rich_menu_alias_request.rb @@ -27,9 +27,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/datetime_picker_action.rb b/lib/line/bot/v2/messaging_api/model/datetime_picker_action.rb index a869bdad..8fb61234 100644 --- a/lib/line/bot/v2/messaging_api/model/datetime_picker_action.rb +++ b/lib/line/bot/v2/messaging_api/model/datetime_picker_action.rb @@ -43,9 +43,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/demographic_filter.rb b/lib/line/bot/v2/messaging_api/model/demographic_filter.rb index 3ccbaaef..e9958bfb 100644 --- a/lib/line/bot/v2/messaging_api/model/demographic_filter.rb +++ b/lib/line/bot/v2/messaging_api/model/demographic_filter.rb @@ -24,9 +24,36 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + klass = detect_class(args[:type]) + return klass.new(**args) if klass + + return new(**args) + end + + private + + def self.detect_class(type) + { + age: Line::Bot::V2::MessagingApi::AgeDemographicFilter, + appType: Line::Bot::V2::MessagingApi::AppTypeDemographicFilter, + area: Line::Bot::V2::MessagingApi::AreaDemographicFilter, + gender: Line::Bot::V2::MessagingApi::GenderDemographicFilter, + operator: Line::Bot::V2::MessagingApi::OperatorDemographicFilter, + subscriptionPeriod: Line::Bot::V2::MessagingApi::SubscriptionPeriodDemographicFilter, + }[type.to_sym] + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/emoji.rb b/lib/line/bot/v2/messaging_api/model/emoji.rb index f98b8f3a..87bd3081 100644 --- a/lib/line/bot/v2/messaging_api/model/emoji.rb +++ b/lib/line/bot/v2/messaging_api/model/emoji.rb @@ -29,9 +29,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/emoji_substitution_object.rb b/lib/line/bot/v2/messaging_api/model/emoji_substitution_object.rb index a47ccc06..88ead32d 100644 --- a/lib/line/bot/v2/messaging_api/model/emoji_substitution_object.rb +++ b/lib/line/bot/v2/messaging_api/model/emoji_substitution_object.rb @@ -32,9 +32,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/error_detail.rb b/lib/line/bot/v2/messaging_api/model/error_detail.rb index 775aa036..0bfcccaf 100644 --- a/lib/line/bot/v2/messaging_api/model/error_detail.rb +++ b/lib/line/bot/v2/messaging_api/model/error_detail.rb @@ -26,9 +26,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/error_response.rb b/lib/line/bot/v2/messaging_api/model/error_response.rb index 06cade73..4b45707d 100644 --- a/lib/line/bot/v2/messaging_api/model/error_response.rb +++ b/lib/line/bot/v2/messaging_api/model/error_response.rb @@ -25,14 +25,37 @@ def initialize( ) @message = message - @details = details - @sent_messages = sent_messages + @details = details&.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::MessagingApi::ErrorDetail.create(**item) + else + item + end + end + @sent_messages = sent_messages&.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::MessagingApi::SentMessage.create(**item) + else + item + end + end dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/filter.rb b/lib/line/bot/v2/messaging_api/model/filter.rb index 38ad0688..185bcac0 100644 --- a/lib/line/bot/v2/messaging_api/model/filter.rb +++ b/lib/line/bot/v2/messaging_api/model/filter.rb @@ -20,13 +20,24 @@ def initialize( **dynamic_attributes ) - @demographic = demographic + @demographic = demographic.is_a?(Line::Bot::V2::MessagingApi::DemographicFilter) || demographic.nil? ? demographic : Line::Bot::V2::MessagingApi::DemographicFilter.create(**demographic) dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/flex_block_style.rb b/lib/line/bot/v2/messaging_api/model/flex_block_style.rb index 28ef0092..a25fc64c 100644 --- a/lib/line/bot/v2/messaging_api/model/flex_block_style.rb +++ b/lib/line/bot/v2/messaging_api/model/flex_block_style.rb @@ -29,9 +29,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/flex_box.rb b/lib/line/bot/v2/messaging_api/model/flex_box.rb index 56988276..8fb0535f 100644 --- a/lib/line/bot/v2/messaging_api/model/flex_box.rb +++ b/lib/line/bot/v2/messaging_api/model/flex_box.rb @@ -77,7 +77,13 @@ def initialize( @layout = layout @flex = flex - @contents = contents + @contents = contents.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::MessagingApi::FlexComponent.create(**item) + else + item + end + end @spacing = spacing @margin = margin @position = position @@ -98,16 +104,27 @@ def initialize( @padding_bottom = padding_bottom @padding_start = padding_start @padding_end = padding_end - @action = action + @action = action.is_a?(Line::Bot::V2::MessagingApi::Action) || action.nil? ? action : Line::Bot::V2::MessagingApi::Action.create(**action) @justify_content = justify_content @align_items = align_items - @background = background + @background = background.is_a?(Line::Bot::V2::MessagingApi::FlexBoxBackground) || background.nil? ? background : Line::Bot::V2::MessagingApi::FlexBoxBackground.create(**background) dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/flex_box_background.rb b/lib/line/bot/v2/messaging_api/model/flex_box_background.rb index 67a278b1..919ecb75 100644 --- a/lib/line/bot/v2/messaging_api/model/flex_box_background.rb +++ b/lib/line/bot/v2/messaging_api/model/flex_box_background.rb @@ -23,9 +23,31 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + klass = detect_class(args[:type]) + return klass.new(**args) if klass + + return new(**args) + end + + private + + def self.detect_class(type) + { + linearGradient: Line::Bot::V2::MessagingApi::FlexBoxLinearGradient, + }[type.to_sym] + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/flex_box_border_width.rb b/lib/line/bot/v2/messaging_api/model/flex_box_border_width.rb index 289518a5..5f2a8ce8 100644 --- a/lib/line/bot/v2/messaging_api/model/flex_box_border_width.rb +++ b/lib/line/bot/v2/messaging_api/model/flex_box_border_width.rb @@ -21,9 +21,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/flex_box_corner_radius.rb b/lib/line/bot/v2/messaging_api/model/flex_box_corner_radius.rb index 0a16693e..beda744f 100644 --- a/lib/line/bot/v2/messaging_api/model/flex_box_corner_radius.rb +++ b/lib/line/bot/v2/messaging_api/model/flex_box_corner_radius.rb @@ -21,9 +21,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/flex_box_linear_gradient.rb b/lib/line/bot/v2/messaging_api/model/flex_box_linear_gradient.rb index 79bf6a67..8f7a1edc 100644 --- a/lib/line/bot/v2/messaging_api/model/flex_box_linear_gradient.rb +++ b/lib/line/bot/v2/messaging_api/model/flex_box_linear_gradient.rb @@ -39,9 +39,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/flex_box_padding.rb b/lib/line/bot/v2/messaging_api/model/flex_box_padding.rb index 4d061966..50dabbbe 100644 --- a/lib/line/bot/v2/messaging_api/model/flex_box_padding.rb +++ b/lib/line/bot/v2/messaging_api/model/flex_box_padding.rb @@ -21,9 +21,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/flex_box_spacing.rb b/lib/line/bot/v2/messaging_api/model/flex_box_spacing.rb index 137b4879..b67d7d6f 100644 --- a/lib/line/bot/v2/messaging_api/model/flex_box_spacing.rb +++ b/lib/line/bot/v2/messaging_api/model/flex_box_spacing.rb @@ -21,9 +21,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/flex_bubble.rb b/lib/line/bot/v2/messaging_api/model/flex_bubble.rb index 7fa21619..739a28a5 100644 --- a/lib/line/bot/v2/messaging_api/model/flex_bubble.rb +++ b/lib/line/bot/v2/messaging_api/model/flex_bubble.rb @@ -38,19 +38,30 @@ def initialize( @type = "bubble" @direction = direction - @styles = styles - @header = header - @hero = hero - @body = body - @footer = footer + @styles = styles.is_a?(Line::Bot::V2::MessagingApi::FlexBubbleStyles) || styles.nil? ? styles : Line::Bot::V2::MessagingApi::FlexBubbleStyles.create(**styles) + @header = header.is_a?(Line::Bot::V2::MessagingApi::FlexBox) || header.nil? ? header : Line::Bot::V2::MessagingApi::FlexBox.create(**header) + @hero = hero.is_a?(Line::Bot::V2::MessagingApi::FlexComponent) || hero.nil? ? hero : Line::Bot::V2::MessagingApi::FlexComponent.create(**hero) + @body = body.is_a?(Line::Bot::V2::MessagingApi::FlexBox) || body.nil? ? body : Line::Bot::V2::MessagingApi::FlexBox.create(**body) + @footer = footer.is_a?(Line::Bot::V2::MessagingApi::FlexBox) || footer.nil? ? footer : Line::Bot::V2::MessagingApi::FlexBox.create(**footer) @size = size - @action = action + @action = action.is_a?(Line::Bot::V2::MessagingApi::Action) || action.nil? ? action : Line::Bot::V2::MessagingApi::Action.create(**action) dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/flex_bubble_styles.rb b/lib/line/bot/v2/messaging_api/model/flex_bubble_styles.rb index 4d459abd..c21a6dab 100644 --- a/lib/line/bot/v2/messaging_api/model/flex_bubble_styles.rb +++ b/lib/line/bot/v2/messaging_api/model/flex_bubble_styles.rb @@ -25,16 +25,27 @@ def initialize( **dynamic_attributes ) - @header = header - @hero = hero - @body = body - @footer = footer + @header = header.is_a?(Line::Bot::V2::MessagingApi::FlexBlockStyle) || header.nil? ? header : Line::Bot::V2::MessagingApi::FlexBlockStyle.create(**header) + @hero = hero.is_a?(Line::Bot::V2::MessagingApi::FlexBlockStyle) || hero.nil? ? hero : Line::Bot::V2::MessagingApi::FlexBlockStyle.create(**hero) + @body = body.is_a?(Line::Bot::V2::MessagingApi::FlexBlockStyle) || body.nil? ? body : Line::Bot::V2::MessagingApi::FlexBlockStyle.create(**body) + @footer = footer.is_a?(Line::Bot::V2::MessagingApi::FlexBlockStyle) || footer.nil? ? footer : Line::Bot::V2::MessagingApi::FlexBlockStyle.create(**footer) dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/flex_button.rb b/lib/line/bot/v2/messaging_api/model/flex_button.rb index fd1b6e82..f8bcc186 100644 --- a/lib/line/bot/v2/messaging_api/model/flex_button.rb +++ b/lib/line/bot/v2/messaging_api/model/flex_button.rb @@ -52,7 +52,7 @@ def initialize( @flex = flex @color = color @style = style - @action = action + @action = action.is_a?(Line::Bot::V2::MessagingApi::Action) ? action : Line::Bot::V2::MessagingApi::Action.create(**action) @gravity = gravity @margin = margin @position = position @@ -66,9 +66,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/flex_carousel.rb b/lib/line/bot/v2/messaging_api/model/flex_carousel.rb index 763f1933..1708482c 100644 --- a/lib/line/bot/v2/messaging_api/model/flex_carousel.rb +++ b/lib/line/bot/v2/messaging_api/model/flex_carousel.rb @@ -23,13 +23,30 @@ def initialize( ) @type = "carousel" - @contents = contents + @contents = contents.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::MessagingApi::FlexBubble.create(**item) + else + item + end + end dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/flex_component.rb b/lib/line/bot/v2/messaging_api/model/flex_component.rb index c38190ce..2a8939e9 100644 --- a/lib/line/bot/v2/messaging_api/model/flex_component.rb +++ b/lib/line/bot/v2/messaging_api/model/flex_component.rb @@ -23,9 +23,39 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + klass = detect_class(args[:type]) + return klass.new(**args) if klass + + return new(**args) + end + + private + + def self.detect_class(type) + { + box: Line::Bot::V2::MessagingApi::FlexBox, + button: Line::Bot::V2::MessagingApi::FlexButton, + filler: Line::Bot::V2::MessagingApi::FlexFiller, + icon: Line::Bot::V2::MessagingApi::FlexIcon, + image: Line::Bot::V2::MessagingApi::FlexImage, + separator: Line::Bot::V2::MessagingApi::FlexSeparator, + span: Line::Bot::V2::MessagingApi::FlexSpan, + text: Line::Bot::V2::MessagingApi::FlexText, + video: Line::Bot::V2::MessagingApi::FlexVideo, + }[type.to_sym] + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/flex_container.rb b/lib/line/bot/v2/messaging_api/model/flex_container.rb index 497e7901..7638f092 100644 --- a/lib/line/bot/v2/messaging_api/model/flex_container.rb +++ b/lib/line/bot/v2/messaging_api/model/flex_container.rb @@ -23,9 +23,32 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + klass = detect_class(args[:type]) + return klass.new(**args) if klass + + return new(**args) + end + + private + + def self.detect_class(type) + { + bubble: Line::Bot::V2::MessagingApi::FlexBubble, + carousel: Line::Bot::V2::MessagingApi::FlexCarousel, + }[type.to_sym] + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/flex_filler.rb b/lib/line/bot/v2/messaging_api/model/flex_filler.rb index 51366977..53b1a00f 100644 --- a/lib/line/bot/v2/messaging_api/model/flex_filler.rb +++ b/lib/line/bot/v2/messaging_api/model/flex_filler.rb @@ -27,9 +27,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/flex_icon.rb b/lib/line/bot/v2/messaging_api/model/flex_icon.rb index 44799b73..d10d0de0 100644 --- a/lib/line/bot/v2/messaging_api/model/flex_icon.rb +++ b/lib/line/bot/v2/messaging_api/model/flex_icon.rb @@ -55,9 +55,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/flex_icon_size.rb b/lib/line/bot/v2/messaging_api/model/flex_icon_size.rb index 75344804..22b1ec2e 100644 --- a/lib/line/bot/v2/messaging_api/model/flex_icon_size.rb +++ b/lib/line/bot/v2/messaging_api/model/flex_icon_size.rb @@ -21,9 +21,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/flex_image.rb b/lib/line/bot/v2/messaging_api/model/flex_image.rb index 5e91590b..f4f52574 100644 --- a/lib/line/bot/v2/messaging_api/model/flex_image.rb +++ b/lib/line/bot/v2/messaging_api/model/flex_image.rb @@ -68,14 +68,25 @@ def initialize( @aspect_ratio = aspect_ratio @aspect_mode = aspect_mode @background_color = background_color - @action = action + @action = action.is_a?(Line::Bot::V2::MessagingApi::Action) || action.nil? ? action : Line::Bot::V2::MessagingApi::Action.create(**action) @animated = animated dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/flex_image_size.rb b/lib/line/bot/v2/messaging_api/model/flex_image_size.rb index 5075d6e3..d9e7c586 100644 --- a/lib/line/bot/v2/messaging_api/model/flex_image_size.rb +++ b/lib/line/bot/v2/messaging_api/model/flex_image_size.rb @@ -21,9 +21,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/flex_margin.rb b/lib/line/bot/v2/messaging_api/model/flex_margin.rb index a8e9663c..40dd008a 100644 --- a/lib/line/bot/v2/messaging_api/model/flex_margin.rb +++ b/lib/line/bot/v2/messaging_api/model/flex_margin.rb @@ -21,9 +21,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/flex_message.rb b/lib/line/bot/v2/messaging_api/model/flex_message.rb index 6136a744..ffa54194 100644 --- a/lib/line/bot/v2/messaging_api/model/flex_message.rb +++ b/lib/line/bot/v2/messaging_api/model/flex_message.rb @@ -30,16 +30,27 @@ def initialize( ) @type = "flex" - @quick_reply = quick_reply - @sender = sender + @quick_reply = quick_reply.is_a?(Line::Bot::V2::MessagingApi::QuickReply) || quick_reply.nil? ? quick_reply : Line::Bot::V2::MessagingApi::QuickReply.create(**quick_reply) + @sender = sender.is_a?(Line::Bot::V2::MessagingApi::Sender) || sender.nil? ? sender : Line::Bot::V2::MessagingApi::Sender.create(**sender) @alt_text = alt_text - @contents = contents + @contents = contents.is_a?(Line::Bot::V2::MessagingApi::FlexContainer) ? contents : Line::Bot::V2::MessagingApi::FlexContainer.create(**contents) dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/flex_offset.rb b/lib/line/bot/v2/messaging_api/model/flex_offset.rb index bab3ebc9..42117197 100644 --- a/lib/line/bot/v2/messaging_api/model/flex_offset.rb +++ b/lib/line/bot/v2/messaging_api/model/flex_offset.rb @@ -21,9 +21,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/flex_separator.rb b/lib/line/bot/v2/messaging_api/model/flex_separator.rb index a28b3b0b..705a98d5 100644 --- a/lib/line/bot/v2/messaging_api/model/flex_separator.rb +++ b/lib/line/bot/v2/messaging_api/model/flex_separator.rb @@ -30,9 +30,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/flex_span.rb b/lib/line/bot/v2/messaging_api/model/flex_span.rb index 624682ed..7fb3f562 100644 --- a/lib/line/bot/v2/messaging_api/model/flex_span.rb +++ b/lib/line/bot/v2/messaging_api/model/flex_span.rb @@ -42,9 +42,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/flex_span_size.rb b/lib/line/bot/v2/messaging_api/model/flex_span_size.rb index c8f3c108..0e2c8696 100644 --- a/lib/line/bot/v2/messaging_api/model/flex_span_size.rb +++ b/lib/line/bot/v2/messaging_api/model/flex_span_size.rb @@ -21,9 +21,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/flex_text.rb b/lib/line/bot/v2/messaging_api/model/flex_text.rb index a1e1b6e8..50ad59c9 100644 --- a/lib/line/bot/v2/messaging_api/model/flex_text.rb +++ b/lib/line/bot/v2/messaging_api/model/flex_text.rb @@ -82,17 +82,34 @@ def initialize( @offset_bottom = offset_bottom @offset_start = offset_start @offset_end = offset_end - @action = action + @action = action.is_a?(Line::Bot::V2::MessagingApi::Action) || action.nil? ? action : Line::Bot::V2::MessagingApi::Action.create(**action) @max_lines = max_lines - @contents = contents + @contents = contents&.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::MessagingApi::FlexSpan.create(**item) + else + item + end + end @adjust_mode = adjust_mode @scaling = scaling dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/flex_text_font_size.rb b/lib/line/bot/v2/messaging_api/model/flex_text_font_size.rb index 9395a5d2..4e7c7a4b 100644 --- a/lib/line/bot/v2/messaging_api/model/flex_text_font_size.rb +++ b/lib/line/bot/v2/messaging_api/model/flex_text_font_size.rb @@ -21,9 +21,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/flex_video.rb b/lib/line/bot/v2/messaging_api/model/flex_video.rb index 7f2c29b2..ab4da235 100644 --- a/lib/line/bot/v2/messaging_api/model/flex_video.rb +++ b/lib/line/bot/v2/messaging_api/model/flex_video.rb @@ -33,15 +33,26 @@ def initialize( @url = url @preview_url = preview_url - @alt_content = alt_content + @alt_content = alt_content.is_a?(Line::Bot::V2::MessagingApi::FlexComponent) ? alt_content : Line::Bot::V2::MessagingApi::FlexComponent.create(**alt_content) @aspect_ratio = aspect_ratio - @action = action + @action = action.is_a?(Line::Bot::V2::MessagingApi::Action) || action.nil? ? action : Line::Bot::V2::MessagingApi::Action.create(**action) dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/gender_demographic.rb b/lib/line/bot/v2/messaging_api/model/gender_demographic.rb index 56e7055d..8bb68d86 100644 --- a/lib/line/bot/v2/messaging_api/model/gender_demographic.rb +++ b/lib/line/bot/v2/messaging_api/model/gender_demographic.rb @@ -20,9 +20,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/gender_demographic_filter.rb b/lib/line/bot/v2/messaging_api/model/gender_demographic_filter.rb index df28e01a..98f36e72 100644 --- a/lib/line/bot/v2/messaging_api/model/gender_demographic_filter.rb +++ b/lib/line/bot/v2/messaging_api/model/gender_demographic_filter.rb @@ -23,13 +23,30 @@ def initialize( ) @type = "gender" - @one_of = one_of + @one_of = one_of&.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::MessagingApi::GenderDemographic.create(**item) + else + item + end + end dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/get_aggregation_unit_name_list_response.rb b/lib/line/bot/v2/messaging_api/model/get_aggregation_unit_name_list_response.rb index 27b6b4f1..b7e28525 100644 --- a/lib/line/bot/v2/messaging_api/model/get_aggregation_unit_name_list_response.rb +++ b/lib/line/bot/v2/messaging_api/model/get_aggregation_unit_name_list_response.rb @@ -22,14 +22,31 @@ def initialize( **dynamic_attributes ) - @custom_aggregation_units = custom_aggregation_units + @custom_aggregation_units = custom_aggregation_units.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::MessagingApi::string.create(**item) + else + item + end + end @_next = _next dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/get_aggregation_unit_usage_response.rb b/lib/line/bot/v2/messaging_api/model/get_aggregation_unit_usage_response.rb index ad33b927..143e5b93 100644 --- a/lib/line/bot/v2/messaging_api/model/get_aggregation_unit_usage_response.rb +++ b/lib/line/bot/v2/messaging_api/model/get_aggregation_unit_usage_response.rb @@ -24,9 +24,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/get_followers_response.rb b/lib/line/bot/v2/messaging_api/model/get_followers_response.rb index 86a357e6..afaf7ed4 100644 --- a/lib/line/bot/v2/messaging_api/model/get_followers_response.rb +++ b/lib/line/bot/v2/messaging_api/model/get_followers_response.rb @@ -22,14 +22,31 @@ def initialize( **dynamic_attributes ) - @user_ids = user_ids + @user_ids = user_ids.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::MessagingApi::string.create(**item) + else + item + end + end @_next = _next dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/get_joined_membership_users_response.rb b/lib/line/bot/v2/messaging_api/model/get_joined_membership_users_response.rb index a41d6c7c..1ac3225e 100644 --- a/lib/line/bot/v2/messaging_api/model/get_joined_membership_users_response.rb +++ b/lib/line/bot/v2/messaging_api/model/get_joined_membership_users_response.rb @@ -23,14 +23,31 @@ def initialize( **dynamic_attributes ) - @user_ids = user_ids + @user_ids = user_ids.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::MessagingApi::string.create(**item) + else + item + end + end @_next = _next dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/get_membership_subscription_response.rb b/lib/line/bot/v2/messaging_api/model/get_membership_subscription_response.rb index 7504ae84..6aac788b 100644 --- a/lib/line/bot/v2/messaging_api/model/get_membership_subscription_response.rb +++ b/lib/line/bot/v2/messaging_api/model/get_membership_subscription_response.rb @@ -21,13 +21,30 @@ def initialize( **dynamic_attributes ) - @subscriptions = subscriptions + @subscriptions = subscriptions.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::MessagingApi::Subscription.create(**item) + else + item + end + end dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/get_message_content_transcoding_response.rb b/lib/line/bot/v2/messaging_api/model/get_message_content_transcoding_response.rb index 58576f3d..921d1a2d 100644 --- a/lib/line/bot/v2/messaging_api/model/get_message_content_transcoding_response.rb +++ b/lib/line/bot/v2/messaging_api/model/get_message_content_transcoding_response.rb @@ -25,9 +25,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/get_webhook_endpoint_response.rb b/lib/line/bot/v2/messaging_api/model/get_webhook_endpoint_response.rb index bdf8b443..c40505b8 100644 --- a/lib/line/bot/v2/messaging_api/model/get_webhook_endpoint_response.rb +++ b/lib/line/bot/v2/messaging_api/model/get_webhook_endpoint_response.rb @@ -27,9 +27,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/group_member_count_response.rb b/lib/line/bot/v2/messaging_api/model/group_member_count_response.rb index beef0ab5..e31723b3 100644 --- a/lib/line/bot/v2/messaging_api/model/group_member_count_response.rb +++ b/lib/line/bot/v2/messaging_api/model/group_member_count_response.rb @@ -24,9 +24,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/group_summary_response.rb b/lib/line/bot/v2/messaging_api/model/group_summary_response.rb index 41ac45ba..a1e4f171 100644 --- a/lib/line/bot/v2/messaging_api/model/group_summary_response.rb +++ b/lib/line/bot/v2/messaging_api/model/group_summary_response.rb @@ -30,9 +30,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/group_user_profile_response.rb b/lib/line/bot/v2/messaging_api/model/group_user_profile_response.rb index 90801eac..7f7a2c47 100644 --- a/lib/line/bot/v2/messaging_api/model/group_user_profile_response.rb +++ b/lib/line/bot/v2/messaging_api/model/group_user_profile_response.rb @@ -30,9 +30,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/image_carousel_column.rb b/lib/line/bot/v2/messaging_api/model/image_carousel_column.rb index d3bc1695..7a48419d 100644 --- a/lib/line/bot/v2/messaging_api/model/image_carousel_column.rb +++ b/lib/line/bot/v2/messaging_api/model/image_carousel_column.rb @@ -22,13 +22,24 @@ def initialize( ) @image_url = image_url - @action = action + @action = action.is_a?(Line::Bot::V2::MessagingApi::Action) ? action : Line::Bot::V2::MessagingApi::Action.create(**action) dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/image_carousel_template.rb b/lib/line/bot/v2/messaging_api/model/image_carousel_template.rb index 25ff2d81..e76edcbd 100644 --- a/lib/line/bot/v2/messaging_api/model/image_carousel_template.rb +++ b/lib/line/bot/v2/messaging_api/model/image_carousel_template.rb @@ -23,13 +23,30 @@ def initialize( ) @type = "image_carousel" - @columns = columns + @columns = columns.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::MessagingApi::ImageCarouselColumn.create(**item) + else + item + end + end dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/image_message.rb b/lib/line/bot/v2/messaging_api/model/image_message.rb index afbe6fde..7d5fc161 100644 --- a/lib/line/bot/v2/messaging_api/model/image_message.rb +++ b/lib/line/bot/v2/messaging_api/model/image_message.rb @@ -30,16 +30,27 @@ def initialize( ) @type = "image" - @quick_reply = quick_reply - @sender = sender + @quick_reply = quick_reply.is_a?(Line::Bot::V2::MessagingApi::QuickReply) || quick_reply.nil? ? quick_reply : Line::Bot::V2::MessagingApi::QuickReply.create(**quick_reply) + @sender = sender.is_a?(Line::Bot::V2::MessagingApi::Sender) || sender.nil? ? sender : Line::Bot::V2::MessagingApi::Sender.create(**sender) @original_content_url = original_content_url @preview_image_url = preview_image_url dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/imagemap_action.rb b/lib/line/bot/v2/messaging_api/model/imagemap_action.rb index 80056ef2..eda3f3ec 100644 --- a/lib/line/bot/v2/messaging_api/model/imagemap_action.rb +++ b/lib/line/bot/v2/messaging_api/model/imagemap_action.rb @@ -23,13 +23,37 @@ def initialize( ) @type = type - @area = area + @area = area.is_a?(Line::Bot::V2::MessagingApi::ImagemapArea) ? area : Line::Bot::V2::MessagingApi::ImagemapArea.create(**area) dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + klass = detect_class(args[:type]) + return klass.new(**args) if klass + + return new(**args) + end + + private + + def self.detect_class(type) + { + clipboard: Line::Bot::V2::MessagingApi::ClipboardImagemapAction, + message: Line::Bot::V2::MessagingApi::MessageImagemapAction, + uri: Line::Bot::V2::MessagingApi::URIImagemapAction, + }[type.to_sym] + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/imagemap_area.rb b/lib/line/bot/v2/messaging_api/model/imagemap_area.rb index 5053840f..a04d0c0f 100644 --- a/lib/line/bot/v2/messaging_api/model/imagemap_area.rb +++ b/lib/line/bot/v2/messaging_api/model/imagemap_area.rb @@ -32,9 +32,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/imagemap_base_size.rb b/lib/line/bot/v2/messaging_api/model/imagemap_base_size.rb index fc26557b..1aac3fd1 100644 --- a/lib/line/bot/v2/messaging_api/model/imagemap_base_size.rb +++ b/lib/line/bot/v2/messaging_api/model/imagemap_base_size.rb @@ -26,9 +26,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/imagemap_external_link.rb b/lib/line/bot/v2/messaging_api/model/imagemap_external_link.rb index 80573dfa..06eb5586 100644 --- a/lib/line/bot/v2/messaging_api/model/imagemap_external_link.rb +++ b/lib/line/bot/v2/messaging_api/model/imagemap_external_link.rb @@ -26,9 +26,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/imagemap_message.rb b/lib/line/bot/v2/messaging_api/model/imagemap_message.rb index 3a900675..9979ac9f 100644 --- a/lib/line/bot/v2/messaging_api/model/imagemap_message.rb +++ b/lib/line/bot/v2/messaging_api/model/imagemap_message.rb @@ -36,19 +36,36 @@ def initialize( ) @type = "imagemap" - @quick_reply = quick_reply - @sender = sender + @quick_reply = quick_reply.is_a?(Line::Bot::V2::MessagingApi::QuickReply) || quick_reply.nil? ? quick_reply : Line::Bot::V2::MessagingApi::QuickReply.create(**quick_reply) + @sender = sender.is_a?(Line::Bot::V2::MessagingApi::Sender) || sender.nil? ? sender : Line::Bot::V2::MessagingApi::Sender.create(**sender) @base_url = base_url @alt_text = alt_text - @base_size = base_size - @actions = actions - @video = video + @base_size = base_size.is_a?(Line::Bot::V2::MessagingApi::ImagemapBaseSize) ? base_size : Line::Bot::V2::MessagingApi::ImagemapBaseSize.create(**base_size) + @actions = actions.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::MessagingApi::ImagemapAction.create(**item) + else + item + end + end + @video = video.is_a?(Line::Bot::V2::MessagingApi::ImagemapVideo) || video.nil? ? video : Line::Bot::V2::MessagingApi::ImagemapVideo.create(**video) dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/imagemap_video.rb b/lib/line/bot/v2/messaging_api/model/imagemap_video.rb index 96292e8c..5a2a4592 100644 --- a/lib/line/bot/v2/messaging_api/model/imagemap_video.rb +++ b/lib/line/bot/v2/messaging_api/model/imagemap_video.rb @@ -27,14 +27,25 @@ def initialize( @original_content_url = original_content_url @preview_image_url = preview_image_url - @area = area - @external_link = external_link + @area = area.is_a?(Line::Bot::V2::MessagingApi::ImagemapArea) || area.nil? ? area : Line::Bot::V2::MessagingApi::ImagemapArea.create(**area) + @external_link = external_link.is_a?(Line::Bot::V2::MessagingApi::ImagemapExternalLink) || external_link.nil? ? external_link : Line::Bot::V2::MessagingApi::ImagemapExternalLink.create(**external_link) dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/issue_link_token_response.rb b/lib/line/bot/v2/messaging_api/model/issue_link_token_response.rb index 8c0ffcd2..745fc3d4 100644 --- a/lib/line/bot/v2/messaging_api/model/issue_link_token_response.rb +++ b/lib/line/bot/v2/messaging_api/model/issue_link_token_response.rb @@ -24,9 +24,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/limit.rb b/lib/line/bot/v2/messaging_api/model/limit.rb index 96dded23..4f9b7a0f 100644 --- a/lib/line/bot/v2/messaging_api/model/limit.rb +++ b/lib/line/bot/v2/messaging_api/model/limit.rb @@ -28,9 +28,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/location_action.rb b/lib/line/bot/v2/messaging_api/model/location_action.rb index 9b4385d7..9d84164d 100644 --- a/lib/line/bot/v2/messaging_api/model/location_action.rb +++ b/lib/line/bot/v2/messaging_api/model/location_action.rb @@ -27,9 +27,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/location_message.rb b/lib/line/bot/v2/messaging_api/model/location_message.rb index f9b446f2..79ae1b57 100644 --- a/lib/line/bot/v2/messaging_api/model/location_message.rb +++ b/lib/line/bot/v2/messaging_api/model/location_message.rb @@ -34,8 +34,8 @@ def initialize( ) @type = "location" - @quick_reply = quick_reply - @sender = sender + @quick_reply = quick_reply.is_a?(Line::Bot::V2::MessagingApi::QuickReply) || quick_reply.nil? ? quick_reply : Line::Bot::V2::MessagingApi::QuickReply.create(**quick_reply) + @sender = sender.is_a?(Line::Bot::V2::MessagingApi::Sender) || sender.nil? ? sender : Line::Bot::V2::MessagingApi::Sender.create(**sender) @title = title @address = address @latitude = latitude @@ -43,9 +43,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/mark_messages_as_read_request.rb b/lib/line/bot/v2/messaging_api/model/mark_messages_as_read_request.rb index 2a64d764..3e383eec 100644 --- a/lib/line/bot/v2/messaging_api/model/mark_messages_as_read_request.rb +++ b/lib/line/bot/v2/messaging_api/model/mark_messages_as_read_request.rb @@ -20,13 +20,24 @@ def initialize( **dynamic_attributes ) - @chat = chat + @chat = chat.is_a?(Line::Bot::V2::MessagingApi::ChatReference) ? chat : Line::Bot::V2::MessagingApi::ChatReference.create(**chat) dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/members_ids_response.rb b/lib/line/bot/v2/messaging_api/model/members_ids_response.rb index c0380818..f031cf2f 100644 --- a/lib/line/bot/v2/messaging_api/model/members_ids_response.rb +++ b/lib/line/bot/v2/messaging_api/model/members_ids_response.rb @@ -21,14 +21,31 @@ def initialize( **dynamic_attributes ) - @member_ids = member_ids + @member_ids = member_ids.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::MessagingApi::string.create(**item) + else + item + end + end @_next = _next dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/membership.rb b/lib/line/bot/v2/messaging_api/model/membership.rb index fd973f3f..025264d0 100644 --- a/lib/line/bot/v2/messaging_api/model/membership.rb +++ b/lib/line/bot/v2/messaging_api/model/membership.rb @@ -40,7 +40,13 @@ def initialize( @membership_id = membership_id @title = title @description = description - @benefits = benefits + @benefits = benefits.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::MessagingApi::string.create(**item) + else + item + end + end @price = price @currency = currency @member_count = member_count @@ -50,9 +56,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/membership_list_response.rb b/lib/line/bot/v2/messaging_api/model/membership_list_response.rb index 9bfdd7ec..f23945c2 100644 --- a/lib/line/bot/v2/messaging_api/model/membership_list_response.rb +++ b/lib/line/bot/v2/messaging_api/model/membership_list_response.rb @@ -20,13 +20,30 @@ def initialize( **dynamic_attributes ) - @memberships = memberships + @memberships = memberships.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::MessagingApi::Membership.create(**item) + else + item + end + end dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/mention_substitution_object.rb b/lib/line/bot/v2/messaging_api/model/mention_substitution_object.rb index 607124c5..b90e9efc 100644 --- a/lib/line/bot/v2/messaging_api/model/mention_substitution_object.rb +++ b/lib/line/bot/v2/messaging_api/model/mention_substitution_object.rb @@ -25,13 +25,24 @@ def initialize( ) @type = "mention" - @mentionee = mentionee + @mentionee = mentionee.is_a?(Line::Bot::V2::MessagingApi::MentionTarget) ? mentionee : Line::Bot::V2::MessagingApi::MentionTarget.create(**mentionee) dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/mention_target.rb b/lib/line/bot/v2/messaging_api/model/mention_target.rb index 591174be..2cafbdaf 100644 --- a/lib/line/bot/v2/messaging_api/model/mention_target.rb +++ b/lib/line/bot/v2/messaging_api/model/mention_target.rb @@ -23,9 +23,32 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + klass = detect_class(args[:type]) + return klass.new(**args) if klass + + return new(**args) + end + + private + + def self.detect_class(type) + { + all: Line::Bot::V2::MessagingApi::AllMentionTarget, + user: Line::Bot::V2::MessagingApi::UserMentionTarget, + }[type.to_sym] + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/message.rb b/lib/line/bot/v2/messaging_api/model/message.rb index 493c2b97..fad2f317 100644 --- a/lib/line/bot/v2/messaging_api/model/message.rb +++ b/lib/line/bot/v2/messaging_api/model/message.rb @@ -25,14 +25,45 @@ def initialize( ) @type = type - @quick_reply = quick_reply - @sender = sender + @quick_reply = quick_reply.is_a?(Line::Bot::V2::MessagingApi::QuickReply) || quick_reply.nil? ? quick_reply : Line::Bot::V2::MessagingApi::QuickReply.create(**quick_reply) + @sender = sender.is_a?(Line::Bot::V2::MessagingApi::Sender) || sender.nil? ? sender : Line::Bot::V2::MessagingApi::Sender.create(**sender) dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + klass = detect_class(args[:type]) + return klass.new(**args) if klass + + return new(**args) + end + + private + + def self.detect_class(type) + { + audio: Line::Bot::V2::MessagingApi::AudioMessage, + flex: Line::Bot::V2::MessagingApi::FlexMessage, + image: Line::Bot::V2::MessagingApi::ImageMessage, + imagemap: Line::Bot::V2::MessagingApi::ImagemapMessage, + location: Line::Bot::V2::MessagingApi::LocationMessage, + sticker: Line::Bot::V2::MessagingApi::StickerMessage, + template: Line::Bot::V2::MessagingApi::TemplateMessage, + text: Line::Bot::V2::MessagingApi::TextMessage, + textV2: Line::Bot::V2::MessagingApi::TextMessageV2, + video: Line::Bot::V2::MessagingApi::VideoMessage, + }[type.to_sym] + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/message_action.rb b/lib/line/bot/v2/messaging_api/model/message_action.rb index 51c17823..3c7ae83c 100644 --- a/lib/line/bot/v2/messaging_api/model/message_action.rb +++ b/lib/line/bot/v2/messaging_api/model/message_action.rb @@ -30,9 +30,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/message_imagemap_action.rb b/lib/line/bot/v2/messaging_api/model/message_imagemap_action.rb index 43694a5a..90fe2a9b 100644 --- a/lib/line/bot/v2/messaging_api/model/message_imagemap_action.rb +++ b/lib/line/bot/v2/messaging_api/model/message_imagemap_action.rb @@ -27,15 +27,26 @@ def initialize( ) @type = "message" - @area = area + @area = area.is_a?(Line::Bot::V2::MessagingApi::ImagemapArea) ? area : Line::Bot::V2::MessagingApi::ImagemapArea.create(**area) @text = text @label = label dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/message_quota_response.rb b/lib/line/bot/v2/messaging_api/model/message_quota_response.rb index 1e16f39f..939163e0 100644 --- a/lib/line/bot/v2/messaging_api/model/message_quota_response.rb +++ b/lib/line/bot/v2/messaging_api/model/message_quota_response.rb @@ -27,9 +27,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/multicast_request.rb b/lib/line/bot/v2/messaging_api/model/multicast_request.rb index caaf2ed7..e36e710c 100644 --- a/lib/line/bot/v2/messaging_api/model/multicast_request.rb +++ b/lib/line/bot/v2/messaging_api/model/multicast_request.rb @@ -26,16 +26,45 @@ def initialize( **dynamic_attributes ) - @messages = messages - @to = to + @messages = messages.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::MessagingApi::Message.create(**item) + else + item + end + end + @to = to.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::MessagingApi::string.create(**item) + else + item + end + end @notification_disabled = notification_disabled - @custom_aggregation_units = custom_aggregation_units + @custom_aggregation_units = custom_aggregation_units&.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::MessagingApi::string.create(**item) + else + item + end + end dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/narrowcast_progress_response.rb b/lib/line/bot/v2/messaging_api/model/narrowcast_progress_response.rb index 2cc74441..0253678f 100644 --- a/lib/line/bot/v2/messaging_api/model/narrowcast_progress_response.rb +++ b/lib/line/bot/v2/messaging_api/model/narrowcast_progress_response.rb @@ -45,9 +45,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/narrowcast_request.rb b/lib/line/bot/v2/messaging_api/model/narrowcast_request.rb index 944c44e1..4dec205d 100644 --- a/lib/line/bot/v2/messaging_api/model/narrowcast_request.rb +++ b/lib/line/bot/v2/messaging_api/model/narrowcast_request.rb @@ -28,17 +28,34 @@ def initialize( **dynamic_attributes ) - @messages = messages - @recipient = recipient - @filter = filter - @limit = limit + @messages = messages.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::MessagingApi::Message.create(**item) + else + item + end + end + @recipient = recipient.is_a?(Line::Bot::V2::MessagingApi::Recipient) || recipient.nil? ? recipient : Line::Bot::V2::MessagingApi::Recipient.create(**recipient) + @filter = filter.is_a?(Line::Bot::V2::MessagingApi::Filter) || filter.nil? ? filter : Line::Bot::V2::MessagingApi::Filter.create(**filter) + @limit = limit.is_a?(Line::Bot::V2::MessagingApi::Limit) || limit.nil? ? limit : Line::Bot::V2::MessagingApi::Limit.create(**limit) @notification_disabled = notification_disabled dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/number_of_messages_response.rb b/lib/line/bot/v2/messaging_api/model/number_of_messages_response.rb index d1533487..400c6abe 100644 --- a/lib/line/bot/v2/messaging_api/model/number_of_messages_response.rb +++ b/lib/line/bot/v2/messaging_api/model/number_of_messages_response.rb @@ -26,9 +26,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/operator_demographic_filter.rb b/lib/line/bot/v2/messaging_api/model/operator_demographic_filter.rb index 4784da45..750232fb 100644 --- a/lib/line/bot/v2/messaging_api/model/operator_demographic_filter.rb +++ b/lib/line/bot/v2/messaging_api/model/operator_demographic_filter.rb @@ -27,15 +27,38 @@ def initialize( ) @type = "operator" - @_and = _and - @_or = _or - @_not = _not + @_and = _and&.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::MessagingApi::DemographicFilter.create(**item) + else + item + end + end + @_or = _or&.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::MessagingApi::DemographicFilter.create(**item) + else + item + end + end + @_not = _not.is_a?(Line::Bot::V2::MessagingApi::DemographicFilter) || _not.nil? ? _not : Line::Bot::V2::MessagingApi::DemographicFilter.create(**_not) dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/operator_recipient.rb b/lib/line/bot/v2/messaging_api/model/operator_recipient.rb index a66f80de..8c017e4a 100644 --- a/lib/line/bot/v2/messaging_api/model/operator_recipient.rb +++ b/lib/line/bot/v2/messaging_api/model/operator_recipient.rb @@ -27,15 +27,38 @@ def initialize( ) @type = "operator" - @_and = _and - @_or = _or - @_not = _not + @_and = _and&.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::MessagingApi::Recipient.create(**item) + else + item + end + end + @_or = _or&.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::MessagingApi::Recipient.create(**item) + else + item + end + end + @_not = _not.is_a?(Line::Bot::V2::MessagingApi::Recipient) || _not.nil? ? _not : Line::Bot::V2::MessagingApi::Recipient.create(**_not) dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/pnp_messages_request.rb b/lib/line/bot/v2/messaging_api/model/pnp_messages_request.rb index 25ef89f3..5a4d309d 100644 --- a/lib/line/bot/v2/messaging_api/model/pnp_messages_request.rb +++ b/lib/line/bot/v2/messaging_api/model/pnp_messages_request.rb @@ -24,15 +24,32 @@ def initialize( **dynamic_attributes ) - @messages = messages + @messages = messages.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::MessagingApi::Message.create(**item) + else + item + end + end @to = to @notification_disabled = notification_disabled dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/postback_action.rb b/lib/line/bot/v2/messaging_api/model/postback_action.rb index 6a64b102..38b35833 100644 --- a/lib/line/bot/v2/messaging_api/model/postback_action.rb +++ b/lib/line/bot/v2/messaging_api/model/postback_action.rb @@ -42,9 +42,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/push_message_request.rb b/lib/line/bot/v2/messaging_api/model/push_message_request.rb index 687bf357..6502d87b 100644 --- a/lib/line/bot/v2/messaging_api/model/push_message_request.rb +++ b/lib/line/bot/v2/messaging_api/model/push_message_request.rb @@ -27,15 +27,38 @@ def initialize( ) @to = to - @messages = messages + @messages = messages.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::MessagingApi::Message.create(**item) + else + item + end + end @notification_disabled = notification_disabled - @custom_aggregation_units = custom_aggregation_units + @custom_aggregation_units = custom_aggregation_units&.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::MessagingApi::string.create(**item) + else + item + end + end dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/push_message_response.rb b/lib/line/bot/v2/messaging_api/model/push_message_response.rb index cd2b4172..880b24b1 100644 --- a/lib/line/bot/v2/messaging_api/model/push_message_response.rb +++ b/lib/line/bot/v2/messaging_api/model/push_message_response.rb @@ -20,13 +20,30 @@ def initialize( **dynamic_attributes ) - @sent_messages = sent_messages + @sent_messages = sent_messages.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::MessagingApi::SentMessage.create(**item) + else + item + end + end dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/quick_reply.rb b/lib/line/bot/v2/messaging_api/model/quick_reply.rb index d0ece5a1..7a6de948 100644 --- a/lib/line/bot/v2/messaging_api/model/quick_reply.rb +++ b/lib/line/bot/v2/messaging_api/model/quick_reply.rb @@ -21,13 +21,30 @@ def initialize( **dynamic_attributes ) - @items = items + @items = items&.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::MessagingApi::QuickReplyItem.create(**item) + else + item + end + end dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/quick_reply_item.rb b/lib/line/bot/v2/messaging_api/model/quick_reply_item.rb index d3a75dee..433bb463 100644 --- a/lib/line/bot/v2/messaging_api/model/quick_reply_item.rb +++ b/lib/line/bot/v2/messaging_api/model/quick_reply_item.rb @@ -25,14 +25,25 @@ def initialize( ) @image_url = image_url - @action = action + @action = action.is_a?(Line::Bot::V2::MessagingApi::Action) || action.nil? ? action : Line::Bot::V2::MessagingApi::Action.create(**action) @type = type dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/quota_consumption_response.rb b/lib/line/bot/v2/messaging_api/model/quota_consumption_response.rb index af709237..135b1402 100644 --- a/lib/line/bot/v2/messaging_api/model/quota_consumption_response.rb +++ b/lib/line/bot/v2/messaging_api/model/quota_consumption_response.rb @@ -24,9 +24,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/quota_type.rb b/lib/line/bot/v2/messaging_api/model/quota_type.rb index 39a97558..8057f8d9 100644 --- a/lib/line/bot/v2/messaging_api/model/quota_type.rb +++ b/lib/line/bot/v2/messaging_api/model/quota_type.rb @@ -22,9 +22,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/recipient.rb b/lib/line/bot/v2/messaging_api/model/recipient.rb index 572c0823..05c00849 100644 --- a/lib/line/bot/v2/messaging_api/model/recipient.rb +++ b/lib/line/bot/v2/messaging_api/model/recipient.rb @@ -24,9 +24,33 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + klass = detect_class(args[:type]) + return klass.new(**args) if klass + + return new(**args) + end + + private + + def self.detect_class(type) + { + audience: Line::Bot::V2::MessagingApi::AudienceRecipient, + operator: Line::Bot::V2::MessagingApi::OperatorRecipient, + redelivery: Line::Bot::V2::MessagingApi::RedeliveryRecipient, + }[type.to_sym] + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/redelivery_recipient.rb b/lib/line/bot/v2/messaging_api/model/redelivery_recipient.rb index adff3864..ee95e20a 100644 --- a/lib/line/bot/v2/messaging_api/model/redelivery_recipient.rb +++ b/lib/line/bot/v2/messaging_api/model/redelivery_recipient.rb @@ -27,9 +27,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/reply_message_request.rb b/lib/line/bot/v2/messaging_api/model/reply_message_request.rb index a60c374e..86c339c8 100644 --- a/lib/line/bot/v2/messaging_api/model/reply_message_request.rb +++ b/lib/line/bot/v2/messaging_api/model/reply_message_request.rb @@ -25,14 +25,31 @@ def initialize( ) @reply_token = reply_token - @messages = messages + @messages = messages.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::MessagingApi::Message.create(**item) + else + item + end + end @notification_disabled = notification_disabled dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/reply_message_response.rb b/lib/line/bot/v2/messaging_api/model/reply_message_response.rb index 90dd74db..849cf788 100644 --- a/lib/line/bot/v2/messaging_api/model/reply_message_response.rb +++ b/lib/line/bot/v2/messaging_api/model/reply_message_response.rb @@ -20,13 +20,30 @@ def initialize( **dynamic_attributes ) - @sent_messages = sent_messages + @sent_messages = sent_messages.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::MessagingApi::SentMessage.create(**item) + else + item + end + end dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/rich_menu_alias_list_response.rb b/lib/line/bot/v2/messaging_api/model/rich_menu_alias_list_response.rb index e8067c34..eeb5f112 100644 --- a/lib/line/bot/v2/messaging_api/model/rich_menu_alias_list_response.rb +++ b/lib/line/bot/v2/messaging_api/model/rich_menu_alias_list_response.rb @@ -20,13 +20,30 @@ def initialize( **dynamic_attributes ) - @aliases = aliases + @aliases = aliases.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::MessagingApi::RichMenuAliasResponse.create(**item) + else + item + end + end dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/rich_menu_alias_response.rb b/lib/line/bot/v2/messaging_api/model/rich_menu_alias_response.rb index ad7aac8d..f752c627 100644 --- a/lib/line/bot/v2/messaging_api/model/rich_menu_alias_response.rb +++ b/lib/line/bot/v2/messaging_api/model/rich_menu_alias_response.rb @@ -26,9 +26,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/rich_menu_area.rb b/lib/line/bot/v2/messaging_api/model/rich_menu_area.rb index 97dfeaaa..350f9220 100644 --- a/lib/line/bot/v2/messaging_api/model/rich_menu_area.rb +++ b/lib/line/bot/v2/messaging_api/model/rich_menu_area.rb @@ -22,14 +22,25 @@ def initialize( **dynamic_attributes ) - @bounds = bounds - @action = action + @bounds = bounds.is_a?(Line::Bot::V2::MessagingApi::RichMenuBounds) || bounds.nil? ? bounds : Line::Bot::V2::MessagingApi::RichMenuBounds.create(**bounds) + @action = action.is_a?(Line::Bot::V2::MessagingApi::Action) || action.nil? ? action : Line::Bot::V2::MessagingApi::Action.create(**action) dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/rich_menu_batch_link_operation.rb b/lib/line/bot/v2/messaging_api/model/rich_menu_batch_link_operation.rb index fc98864a..b5ef3f42 100644 --- a/lib/line/bot/v2/messaging_api/model/rich_menu_batch_link_operation.rb +++ b/lib/line/bot/v2/messaging_api/model/rich_menu_batch_link_operation.rb @@ -31,9 +31,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/rich_menu_batch_operation.rb b/lib/line/bot/v2/messaging_api/model/rich_menu_batch_operation.rb index 66592e4c..8abe84bc 100644 --- a/lib/line/bot/v2/messaging_api/model/rich_menu_batch_operation.rb +++ b/lib/line/bot/v2/messaging_api/model/rich_menu_batch_operation.rb @@ -25,9 +25,33 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + klass = detect_class(args[:type]) + return klass.new(**args) if klass + + return new(**args) + end + + private + + def self.detect_class(type) + { + link: Line::Bot::V2::MessagingApi::RichMenuBatchLinkOperation, + unlinkAll: Line::Bot::V2::MessagingApi::RichMenuBatchUnlinkAllOperation, + unlink: Line::Bot::V2::MessagingApi::RichMenuBatchUnlinkOperation, + }[type.to_sym] + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/rich_menu_batch_progress_phase.rb b/lib/line/bot/v2/messaging_api/model/rich_menu_batch_progress_phase.rb index b6041087..338b6a4b 100644 --- a/lib/line/bot/v2/messaging_api/model/rich_menu_batch_progress_phase.rb +++ b/lib/line/bot/v2/messaging_api/model/rich_menu_batch_progress_phase.rb @@ -21,9 +21,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/rich_menu_batch_progress_response.rb b/lib/line/bot/v2/messaging_api/model/rich_menu_batch_progress_response.rb index b1c92c11..69a0c90d 100644 --- a/lib/line/bot/v2/messaging_api/model/rich_menu_batch_progress_response.rb +++ b/lib/line/bot/v2/messaging_api/model/rich_menu_batch_progress_response.rb @@ -30,9 +30,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/rich_menu_batch_request.rb b/lib/line/bot/v2/messaging_api/model/rich_menu_batch_request.rb index dab6ccfe..beaf935c 100644 --- a/lib/line/bot/v2/messaging_api/model/rich_menu_batch_request.rb +++ b/lib/line/bot/v2/messaging_api/model/rich_menu_batch_request.rb @@ -21,14 +21,31 @@ def initialize( **dynamic_attributes ) - @operations = operations + @operations = operations.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::MessagingApi::RichMenuBatchOperation.create(**item) + else + item + end + end @resume_request_key = resume_request_key dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/rich_menu_batch_unlink_all_operation.rb b/lib/line/bot/v2/messaging_api/model/rich_menu_batch_unlink_all_operation.rb index 7042ad26..e8558ef7 100644 --- a/lib/line/bot/v2/messaging_api/model/rich_menu_batch_unlink_all_operation.rb +++ b/lib/line/bot/v2/messaging_api/model/rich_menu_batch_unlink_all_operation.rb @@ -25,9 +25,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/rich_menu_batch_unlink_operation.rb b/lib/line/bot/v2/messaging_api/model/rich_menu_batch_unlink_operation.rb index 0b79c8c1..69579a5e 100644 --- a/lib/line/bot/v2/messaging_api/model/rich_menu_batch_unlink_operation.rb +++ b/lib/line/bot/v2/messaging_api/model/rich_menu_batch_unlink_operation.rb @@ -28,9 +28,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/rich_menu_bounds.rb b/lib/line/bot/v2/messaging_api/model/rich_menu_bounds.rb index 28b49b91..35066562 100644 --- a/lib/line/bot/v2/messaging_api/model/rich_menu_bounds.rb +++ b/lib/line/bot/v2/messaging_api/model/rich_menu_bounds.rb @@ -34,9 +34,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/rich_menu_bulk_link_request.rb b/lib/line/bot/v2/messaging_api/model/rich_menu_bulk_link_request.rb index 77fec81c..5f7e64d9 100644 --- a/lib/line/bot/v2/messaging_api/model/rich_menu_bulk_link_request.rb +++ b/lib/line/bot/v2/messaging_api/model/rich_menu_bulk_link_request.rb @@ -23,13 +23,30 @@ def initialize( ) @rich_menu_id = rich_menu_id - @user_ids = user_ids + @user_ids = user_ids.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::MessagingApi::string.create(**item) + else + item + end + end dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/rich_menu_bulk_unlink_request.rb b/lib/line/bot/v2/messaging_api/model/rich_menu_bulk_unlink_request.rb index 6cc573b9..653632dd 100644 --- a/lib/line/bot/v2/messaging_api/model/rich_menu_bulk_unlink_request.rb +++ b/lib/line/bot/v2/messaging_api/model/rich_menu_bulk_unlink_request.rb @@ -20,13 +20,30 @@ def initialize( **dynamic_attributes ) - @user_ids = user_ids + @user_ids = user_ids.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::MessagingApi::string.create(**item) + else + item + end + end dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/rich_menu_id_response.rb b/lib/line/bot/v2/messaging_api/model/rich_menu_id_response.rb index e29cafc2..37f6da9a 100644 --- a/lib/line/bot/v2/messaging_api/model/rich_menu_id_response.rb +++ b/lib/line/bot/v2/messaging_api/model/rich_menu_id_response.rb @@ -23,9 +23,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/rich_menu_list_response.rb b/lib/line/bot/v2/messaging_api/model/rich_menu_list_response.rb index 3cf799de..e8c01035 100644 --- a/lib/line/bot/v2/messaging_api/model/rich_menu_list_response.rb +++ b/lib/line/bot/v2/messaging_api/model/rich_menu_list_response.rb @@ -20,13 +20,30 @@ def initialize( **dynamic_attributes ) - @richmenus = richmenus + @richmenus = richmenus.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::MessagingApi::RichMenuResponse.create(**item) + else + item + end + end dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/rich_menu_request.rb b/lib/line/bot/v2/messaging_api/model/rich_menu_request.rb index 454c9f5a..9b063357 100644 --- a/lib/line/bot/v2/messaging_api/model/rich_menu_request.rb +++ b/lib/line/bot/v2/messaging_api/model/rich_menu_request.rb @@ -27,17 +27,34 @@ def initialize( **dynamic_attributes ) - @size = size + @size = size.is_a?(Line::Bot::V2::MessagingApi::RichMenuSize) || size.nil? ? size : Line::Bot::V2::MessagingApi::RichMenuSize.create(**size) @selected = selected @name = name @chat_bar_text = chat_bar_text - @areas = areas + @areas = areas&.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::MessagingApi::RichMenuArea.create(**item) + else + item + end + end dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/rich_menu_response.rb b/lib/line/bot/v2/messaging_api/model/rich_menu_response.rb index 7b6273fa..5f414806 100644 --- a/lib/line/bot/v2/messaging_api/model/rich_menu_response.rb +++ b/lib/line/bot/v2/messaging_api/model/rich_menu_response.rb @@ -30,17 +30,34 @@ def initialize( ) @rich_menu_id = rich_menu_id - @size = size + @size = size.is_a?(Line::Bot::V2::MessagingApi::RichMenuSize) ? size : Line::Bot::V2::MessagingApi::RichMenuSize.create(**size) @selected = selected @name = name @chat_bar_text = chat_bar_text - @areas = areas + @areas = areas.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::MessagingApi::RichMenuArea.create(**item) + else + item + end + end dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/rich_menu_size.rb b/lib/line/bot/v2/messaging_api/model/rich_menu_size.rb index a12c9f19..2a91d4ee 100644 --- a/lib/line/bot/v2/messaging_api/model/rich_menu_size.rb +++ b/lib/line/bot/v2/messaging_api/model/rich_menu_size.rb @@ -27,9 +27,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/rich_menu_switch_action.rb b/lib/line/bot/v2/messaging_api/model/rich_menu_switch_action.rb index 11f9b865..557328ff 100644 --- a/lib/line/bot/v2/messaging_api/model/rich_menu_switch_action.rb +++ b/lib/line/bot/v2/messaging_api/model/rich_menu_switch_action.rb @@ -33,9 +33,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/room_member_count_response.rb b/lib/line/bot/v2/messaging_api/model/room_member_count_response.rb index 416c6ec4..9fbd7b1e 100644 --- a/lib/line/bot/v2/messaging_api/model/room_member_count_response.rb +++ b/lib/line/bot/v2/messaging_api/model/room_member_count_response.rb @@ -24,9 +24,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/room_user_profile_response.rb b/lib/line/bot/v2/messaging_api/model/room_user_profile_response.rb index e3ed0b33..3a64f62f 100644 --- a/lib/line/bot/v2/messaging_api/model/room_user_profile_response.rb +++ b/lib/line/bot/v2/messaging_api/model/room_user_profile_response.rb @@ -30,9 +30,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/sender.rb b/lib/line/bot/v2/messaging_api/model/sender.rb index e217abb0..b42e4b93 100644 --- a/lib/line/bot/v2/messaging_api/model/sender.rb +++ b/lib/line/bot/v2/messaging_api/model/sender.rb @@ -27,9 +27,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/sent_message.rb b/lib/line/bot/v2/messaging_api/model/sent_message.rb index 473c5f42..56c5b020 100644 --- a/lib/line/bot/v2/messaging_api/model/sent_message.rb +++ b/lib/line/bot/v2/messaging_api/model/sent_message.rb @@ -26,9 +26,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/set_webhook_endpoint_request.rb b/lib/line/bot/v2/messaging_api/model/set_webhook_endpoint_request.rb index fcb4956b..4ba21340 100644 --- a/lib/line/bot/v2/messaging_api/model/set_webhook_endpoint_request.rb +++ b/lib/line/bot/v2/messaging_api/model/set_webhook_endpoint_request.rb @@ -24,9 +24,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/show_loading_animation_request.rb b/lib/line/bot/v2/messaging_api/model/show_loading_animation_request.rb index 511836e4..c67165c5 100644 --- a/lib/line/bot/v2/messaging_api/model/show_loading_animation_request.rb +++ b/lib/line/bot/v2/messaging_api/model/show_loading_animation_request.rb @@ -27,9 +27,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/sticker_message.rb b/lib/line/bot/v2/messaging_api/model/sticker_message.rb index c11d999b..a5f70d48 100644 --- a/lib/line/bot/v2/messaging_api/model/sticker_message.rb +++ b/lib/line/bot/v2/messaging_api/model/sticker_message.rb @@ -32,17 +32,28 @@ def initialize( ) @type = "sticker" - @quick_reply = quick_reply - @sender = sender + @quick_reply = quick_reply.is_a?(Line::Bot::V2::MessagingApi::QuickReply) || quick_reply.nil? ? quick_reply : Line::Bot::V2::MessagingApi::QuickReply.create(**quick_reply) + @sender = sender.is_a?(Line::Bot::V2::MessagingApi::Sender) || sender.nil? ? sender : Line::Bot::V2::MessagingApi::Sender.create(**sender) @package_id = package_id @sticker_id = sticker_id @quote_token = quote_token dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/subscribed_membership_plan.rb b/lib/line/bot/v2/messaging_api/model/subscribed_membership_plan.rb index 2d5075ea..c98574a4 100644 --- a/lib/line/bot/v2/messaging_api/model/subscribed_membership_plan.rb +++ b/lib/line/bot/v2/messaging_api/model/subscribed_membership_plan.rb @@ -33,15 +33,32 @@ def initialize( @membership_id = membership_id @title = title @description = description - @benefits = benefits + @benefits = benefits.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::MessagingApi::string.create(**item) + else + item + end + end @price = price @currency = currency dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/subscribed_membership_user.rb b/lib/line/bot/v2/messaging_api/model/subscribed_membership_user.rb index 34126337..5e3364f0 100644 --- a/lib/line/bot/v2/messaging_api/model/subscribed_membership_user.rb +++ b/lib/line/bot/v2/messaging_api/model/subscribed_membership_user.rb @@ -33,9 +33,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/subscription.rb b/lib/line/bot/v2/messaging_api/model/subscription.rb index b38f4821..ec588c74 100644 --- a/lib/line/bot/v2/messaging_api/model/subscription.rb +++ b/lib/line/bot/v2/messaging_api/model/subscription.rb @@ -22,14 +22,25 @@ def initialize( **dynamic_attributes ) - @membership = membership - @user = user + @membership = membership.is_a?(Line::Bot::V2::MessagingApi::SubscribedMembershipPlan) ? membership : Line::Bot::V2::MessagingApi::SubscribedMembershipPlan.create(**membership) + @user = user.is_a?(Line::Bot::V2::MessagingApi::SubscribedMembershipUser) ? user : Line::Bot::V2::MessagingApi::SubscribedMembershipUser.create(**user) dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/subscription_period_demographic.rb b/lib/line/bot/v2/messaging_api/model/subscription_period_demographic.rb index 6c728018..922753cb 100644 --- a/lib/line/bot/v2/messaging_api/model/subscription_period_demographic.rb +++ b/lib/line/bot/v2/messaging_api/model/subscription_period_demographic.rb @@ -20,9 +20,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/subscription_period_demographic_filter.rb b/lib/line/bot/v2/messaging_api/model/subscription_period_demographic_filter.rb index 9053e0c0..bab5e541 100644 --- a/lib/line/bot/v2/messaging_api/model/subscription_period_demographic_filter.rb +++ b/lib/line/bot/v2/messaging_api/model/subscription_period_demographic_filter.rb @@ -30,9 +30,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/substitution_object.rb b/lib/line/bot/v2/messaging_api/model/substitution_object.rb index 7ab1834d..1d7eb0fa 100644 --- a/lib/line/bot/v2/messaging_api/model/substitution_object.rb +++ b/lib/line/bot/v2/messaging_api/model/substitution_object.rb @@ -24,9 +24,32 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + klass = detect_class(args[:type]) + return klass.new(**args) if klass + + return new(**args) + end + + private + + def self.detect_class(type) + { + emoji: Line::Bot::V2::MessagingApi::EmojiSubstitutionObject, + mention: Line::Bot::V2::MessagingApi::MentionSubstitutionObject, + }[type.to_sym] + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/template.rb b/lib/line/bot/v2/messaging_api/model/template.rb index 38aed6d8..4234a160 100644 --- a/lib/line/bot/v2/messaging_api/model/template.rb +++ b/lib/line/bot/v2/messaging_api/model/template.rb @@ -23,9 +23,34 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + klass = detect_class(args[:type]) + return klass.new(**args) if klass + + return new(**args) + end + + private + + def self.detect_class(type) + { + buttons: Line::Bot::V2::MessagingApi::ButtonsTemplate, + carousel: Line::Bot::V2::MessagingApi::CarouselTemplate, + confirm: Line::Bot::V2::MessagingApi::ConfirmTemplate, + image_carousel: Line::Bot::V2::MessagingApi::ImageCarouselTemplate, + }[type.to_sym] + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/template_image_aspect_ratio.rb b/lib/line/bot/v2/messaging_api/model/template_image_aspect_ratio.rb index 28b0fb5f..b842ae16 100644 --- a/lib/line/bot/v2/messaging_api/model/template_image_aspect_ratio.rb +++ b/lib/line/bot/v2/messaging_api/model/template_image_aspect_ratio.rb @@ -21,9 +21,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/template_image_size.rb b/lib/line/bot/v2/messaging_api/model/template_image_size.rb index 15a013c1..0a0e24c9 100644 --- a/lib/line/bot/v2/messaging_api/model/template_image_size.rb +++ b/lib/line/bot/v2/messaging_api/model/template_image_size.rb @@ -21,9 +21,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/template_message.rb b/lib/line/bot/v2/messaging_api/model/template_message.rb index 49a8c4a2..30ef298b 100644 --- a/lib/line/bot/v2/messaging_api/model/template_message.rb +++ b/lib/line/bot/v2/messaging_api/model/template_message.rb @@ -30,16 +30,27 @@ def initialize( ) @type = "template" - @quick_reply = quick_reply - @sender = sender + @quick_reply = quick_reply.is_a?(Line::Bot::V2::MessagingApi::QuickReply) || quick_reply.nil? ? quick_reply : Line::Bot::V2::MessagingApi::QuickReply.create(**quick_reply) + @sender = sender.is_a?(Line::Bot::V2::MessagingApi::Sender) || sender.nil? ? sender : Line::Bot::V2::MessagingApi::Sender.create(**sender) @alt_text = alt_text - @template = template + @template = template.is_a?(Line::Bot::V2::MessagingApi::Template) ? template : Line::Bot::V2::MessagingApi::Template.create(**template) dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/test_webhook_endpoint_request.rb b/lib/line/bot/v2/messaging_api/model/test_webhook_endpoint_request.rb index 0f65e827..925012c4 100644 --- a/lib/line/bot/v2/messaging_api/model/test_webhook_endpoint_request.rb +++ b/lib/line/bot/v2/messaging_api/model/test_webhook_endpoint_request.rb @@ -24,9 +24,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/test_webhook_endpoint_response.rb b/lib/line/bot/v2/messaging_api/model/test_webhook_endpoint_response.rb index 0b343ccd..ec390985 100644 --- a/lib/line/bot/v2/messaging_api/model/test_webhook_endpoint_response.rb +++ b/lib/line/bot/v2/messaging_api/model/test_webhook_endpoint_response.rb @@ -36,9 +36,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/text_message.rb b/lib/line/bot/v2/messaging_api/model/text_message.rb index f8e11a03..e834b037 100644 --- a/lib/line/bot/v2/messaging_api/model/text_message.rb +++ b/lib/line/bot/v2/messaging_api/model/text_message.rb @@ -32,17 +32,34 @@ def initialize( ) @type = "text" - @quick_reply = quick_reply - @sender = sender + @quick_reply = quick_reply.is_a?(Line::Bot::V2::MessagingApi::QuickReply) || quick_reply.nil? ? quick_reply : Line::Bot::V2::MessagingApi::QuickReply.create(**quick_reply) + @sender = sender.is_a?(Line::Bot::V2::MessagingApi::Sender) || sender.nil? ? sender : Line::Bot::V2::MessagingApi::Sender.create(**sender) @text = text - @emojis = emojis + @emojis = emojis&.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::MessagingApi::Emoji.create(**item) + else + item + end + end @quote_token = quote_token dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/text_message_v2.rb b/lib/line/bot/v2/messaging_api/model/text_message_v2.rb index fb890f21..18a4d2f9 100644 --- a/lib/line/bot/v2/messaging_api/model/text_message_v2.rb +++ b/lib/line/bot/v2/messaging_api/model/text_message_v2.rb @@ -32,17 +32,28 @@ def initialize( ) @type = "textV2" - @quick_reply = quick_reply - @sender = sender + @quick_reply = quick_reply.is_a?(Line::Bot::V2::MessagingApi::QuickReply) || quick_reply.nil? ? quick_reply : Line::Bot::V2::MessagingApi::QuickReply.create(**quick_reply) + @sender = sender.is_a?(Line::Bot::V2::MessagingApi::Sender) || sender.nil? ? sender : Line::Bot::V2::MessagingApi::Sender.create(**sender) @text = text @substitution = substitution @quote_token = quote_token dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/update_rich_menu_alias_request.rb b/lib/line/bot/v2/messaging_api/model/update_rich_menu_alias_request.rb index 4a1e5055..fe774c32 100644 --- a/lib/line/bot/v2/messaging_api/model/update_rich_menu_alias_request.rb +++ b/lib/line/bot/v2/messaging_api/model/update_rich_menu_alias_request.rb @@ -24,9 +24,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/uri_action.rb b/lib/line/bot/v2/messaging_api/model/uri_action.rb index 193c2fbc..26125f0c 100644 --- a/lib/line/bot/v2/messaging_api/model/uri_action.rb +++ b/lib/line/bot/v2/messaging_api/model/uri_action.rb @@ -29,13 +29,24 @@ def initialize( @label = label @uri = uri - @alt_uri = alt_uri + @alt_uri = alt_uri.is_a?(Line::Bot::V2::MessagingApi::AltUri) || alt_uri.nil? ? alt_uri : Line::Bot::V2::MessagingApi::AltUri.create(**alt_uri) dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/uri_imagemap_action.rb b/lib/line/bot/v2/messaging_api/model/uri_imagemap_action.rb index 04a8d5a5..82fbe760 100644 --- a/lib/line/bot/v2/messaging_api/model/uri_imagemap_action.rb +++ b/lib/line/bot/v2/messaging_api/model/uri_imagemap_action.rb @@ -27,15 +27,26 @@ def initialize( ) @type = "uri" - @area = area + @area = area.is_a?(Line::Bot::V2::MessagingApi::ImagemapArea) ? area : Line::Bot::V2::MessagingApi::ImagemapArea.create(**area) @link_uri = link_uri @label = label dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/user_mention_target.rb b/lib/line/bot/v2/messaging_api/model/user_mention_target.rb index e8426408..4494aaab 100644 --- a/lib/line/bot/v2/messaging_api/model/user_mention_target.rb +++ b/lib/line/bot/v2/messaging_api/model/user_mention_target.rb @@ -28,9 +28,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/user_profile_response.rb b/lib/line/bot/v2/messaging_api/model/user_profile_response.rb index e3df3d23..52ee06d9 100644 --- a/lib/line/bot/v2/messaging_api/model/user_profile_response.rb +++ b/lib/line/bot/v2/messaging_api/model/user_profile_response.rb @@ -36,9 +36,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/validate_message_request.rb b/lib/line/bot/v2/messaging_api/model/validate_message_request.rb index bd9cf824..bc50dce8 100644 --- a/lib/line/bot/v2/messaging_api/model/validate_message_request.rb +++ b/lib/line/bot/v2/messaging_api/model/validate_message_request.rb @@ -19,13 +19,30 @@ def initialize( **dynamic_attributes ) - @messages = messages + @messages = messages.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::MessagingApi::Message.create(**item) + else + item + end + end dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/messaging_api/model/video_message.rb b/lib/line/bot/v2/messaging_api/model/video_message.rb index 267670c7..83edd0dd 100644 --- a/lib/line/bot/v2/messaging_api/model/video_message.rb +++ b/lib/line/bot/v2/messaging_api/model/video_message.rb @@ -32,17 +32,28 @@ def initialize( ) @type = "video" - @quick_reply = quick_reply - @sender = sender + @quick_reply = quick_reply.is_a?(Line::Bot::V2::MessagingApi::QuickReply) || quick_reply.nil? ? quick_reply : Line::Bot::V2::MessagingApi::QuickReply.create(**quick_reply) + @sender = sender.is_a?(Line::Bot::V2::MessagingApi::Sender) || sender.nil? ? sender : Line::Bot::V2::MessagingApi::Sender.create(**sender) @original_content_url = original_content_url @preview_image_url = preview_image_url @tracking_id = tracking_id dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/module/model/acquire_chat_control_request.rb b/lib/line/bot/v2/module/model/acquire_chat_control_request.rb index a33f43b3..d8238e2a 100644 --- a/lib/line/bot/v2/module/model/acquire_chat_control_request.rb +++ b/lib/line/bot/v2/module/model/acquire_chat_control_request.rb @@ -28,9 +28,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/module/model/detach_module_request.rb b/lib/line/bot/v2/module/model/detach_module_request.rb index 2f35e53e..da22e9a4 100644 --- a/lib/line/bot/v2/module/model/detach_module_request.rb +++ b/lib/line/bot/v2/module/model/detach_module_request.rb @@ -25,9 +25,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/module/model/get_modules_response.rb b/lib/line/bot/v2/module/model/get_modules_response.rb index 212efaa9..128e1a92 100644 --- a/lib/line/bot/v2/module/model/get_modules_response.rb +++ b/lib/line/bot/v2/module/model/get_modules_response.rb @@ -23,14 +23,31 @@ def initialize( **dynamic_attributes ) - @bots = bots + @bots = bots.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::Module::ModuleBot.create(**item) + else + item + end + end @_next = _next dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/module/model/module_bot.rb b/lib/line/bot/v2/module/model/module_bot.rb index 2893a76a..e05620d6 100644 --- a/lib/line/bot/v2/module/model/module_bot.rb +++ b/lib/line/bot/v2/module/model/module_bot.rb @@ -37,9 +37,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/module_attach/model/attach_module_response.rb b/lib/line/bot/v2/module_attach/model/attach_module_response.rb index 0ca70742..8b33840f 100644 --- a/lib/line/bot/v2/module_attach/model/attach_module_response.rb +++ b/lib/line/bot/v2/module_attach/model/attach_module_response.rb @@ -23,13 +23,30 @@ def initialize( ) @bot_id = bot_id - @scopes = scopes + @scopes = scopes.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::ModuleAttach::string.create(**item) + else + item + end + end dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/shop/model/error_response.rb b/lib/line/bot/v2/shop/model/error_response.rb index a7cc546f..feeb3d8f 100644 --- a/lib/line/bot/v2/shop/model/error_response.rb +++ b/lib/line/bot/v2/shop/model/error_response.rb @@ -24,9 +24,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/shop/model/mission_sticker_request.rb b/lib/line/bot/v2/shop/model/mission_sticker_request.rb index 04fe05d6..4cfd4231 100644 --- a/lib/line/bot/v2/shop/model/mission_sticker_request.rb +++ b/lib/line/bot/v2/shop/model/mission_sticker_request.rb @@ -34,9 +34,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/utils.rb b/lib/line/bot/v2/utils.rb index e3c4aa19..6097fcb6 100644 --- a/lib/line/bot/v2/utils.rb +++ b/lib/line/bot/v2/utils.rb @@ -17,6 +17,20 @@ def self.deep_underscore(hash) end end + def self.deep_symbolize(object) + case object + when Hash + object.each_with_object({}) do |(key, value), new_hash| + sym_key = key.is_a?(String) ? key.to_sym : key + new_hash[sym_key] = deep_symbolize(value) + end + when Array + object.map { |element| deep_symbolize(element) } + else + object + end + end + def self.deep_to_hash(object) if object.is_a?(Array) object.map { |item| deep_to_hash(item) } @@ -62,6 +76,30 @@ def self.deep_compact(object) end end + def self.deep_convert_reserved_words(object) + case object + when Hash + object.each_with_object({}) do |(key, value), new_hash| + new_key = if Line::Bot::V2::RESERVED_WORDS.include?(key.to_sym) + "_#{key}" + else + key + end + new_hash[new_key] = deep_convert_reserved_words(value) + end + when Array + object.map { |element| deep_convert_reserved_words(element) } + else + object + end + end + + def self.hash_to_struct(hash) + struct_klass = Struct.new(*hash.keys.map(&:to_sym)) + struct_values = hash.map { |_k, v| v.is_a?(Hash) ? hash_to_struct(v) : v } + struct_klass.new(*struct_values) + end + def self.camelize(str) str.to_s.split('_').inject { |memo, word| memo + word.capitalize } end diff --git a/lib/line/bot/v2/webhook/model/account_link_event.rb b/lib/line/bot/v2/webhook/model/account_link_event.rb index 96e4a93a..2796578e 100644 --- a/lib/line/bot/v2/webhook/model/account_link_event.rb +++ b/lib/line/bot/v2/webhook/model/account_link_event.rb @@ -25,7 +25,6 @@ class AccountLinkEvent < Event attr_accessor :link def initialize( - type:, source: nil, timestamp:, mode:, @@ -37,19 +36,30 @@ def initialize( ) @type = "accountLink" - @source = source + @source = source.is_a?(Line::Bot::V2::Webhook::Source) || source.nil? ? source : Line::Bot::V2::Webhook::Source.create(**source) @timestamp = timestamp @mode = mode @webhook_event_id = webhook_event_id - @delivery_context = delivery_context + @delivery_context = delivery_context.is_a?(Line::Bot::V2::Webhook::DeliveryContext) ? delivery_context : Line::Bot::V2::Webhook::DeliveryContext.create(**delivery_context) @reply_token = reply_token - @link = link + @link = link.is_a?(Line::Bot::V2::Webhook::LinkContent) ? link : Line::Bot::V2::Webhook::LinkContent.create(**link) dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/webhook/model/action_result.rb b/lib/line/bot/v2/webhook/model/action_result.rb index 593ae715..76517604 100644 --- a/lib/line/bot/v2/webhook/model/action_result.rb +++ b/lib/line/bot/v2/webhook/model/action_result.rb @@ -26,9 +26,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/webhook/model/activated_event.rb b/lib/line/bot/v2/webhook/model/activated_event.rb index b593a5a0..5731d409 100644 --- a/lib/line/bot/v2/webhook/model/activated_event.rb +++ b/lib/line/bot/v2/webhook/model/activated_event.rb @@ -24,7 +24,6 @@ class ActivatedEvent < Event attr_accessor :chat_control def initialize( - type:, source: nil, timestamp:, mode:, @@ -35,18 +34,29 @@ def initialize( ) @type = "activated" - @source = source + @source = source.is_a?(Line::Bot::V2::Webhook::Source) || source.nil? ? source : Line::Bot::V2::Webhook::Source.create(**source) @timestamp = timestamp @mode = mode @webhook_event_id = webhook_event_id - @delivery_context = delivery_context - @chat_control = chat_control + @delivery_context = delivery_context.is_a?(Line::Bot::V2::Webhook::DeliveryContext) ? delivery_context : Line::Bot::V2::Webhook::DeliveryContext.create(**delivery_context) + @chat_control = chat_control.is_a?(Line::Bot::V2::Webhook::ChatControl) ? chat_control : Line::Bot::V2::Webhook::ChatControl.create(**chat_control) dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/webhook/model/all_mentionee.rb b/lib/line/bot/v2/webhook/model/all_mentionee.rb index 8bc81481..5a461f8e 100644 --- a/lib/line/bot/v2/webhook/model/all_mentionee.rb +++ b/lib/line/bot/v2/webhook/model/all_mentionee.rb @@ -20,7 +20,6 @@ class AllMentionee < Mentionee attr_accessor :length # The length of the text of the mentioned user. For a mention @example, 8 is the length. def initialize( - type:, index:, length:, **dynamic_attributes @@ -32,9 +31,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/webhook/model/attached_module_content.rb b/lib/line/bot/v2/webhook/model/attached_module_content.rb index eefa877a..fc5021fc 100644 --- a/lib/line/bot/v2/webhook/model/attached_module_content.rb +++ b/lib/line/bot/v2/webhook/model/attached_module_content.rb @@ -19,7 +19,6 @@ class AttachedModuleContent < ModuleContent attr_accessor :scopes # An array of strings indicating the scope permitted by the admin of the LINE Official Account. def initialize( - type:, bot_id:, scopes:, **dynamic_attributes @@ -27,13 +26,30 @@ def initialize( @type = "attached" @bot_id = bot_id - @scopes = scopes + @scopes = scopes.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::Webhook::string.create(**item) + else + item + end + end dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/webhook/model/audio_message_content.rb b/lib/line/bot/v2/webhook/model/audio_message_content.rb index b3a0699a..8675cd39 100644 --- a/lib/line/bot/v2/webhook/model/audio_message_content.rb +++ b/lib/line/bot/v2/webhook/model/audio_message_content.rb @@ -20,7 +20,6 @@ class AudioMessageContent < MessageContent attr_accessor :duration # Length of audio file (milliseconds) def initialize( - type:, id:, content_provider:, duration: nil, @@ -29,14 +28,25 @@ def initialize( @type = "audio" @id = id - @content_provider = content_provider + @content_provider = content_provider.is_a?(Line::Bot::V2::Webhook::ContentProvider) ? content_provider : Line::Bot::V2::Webhook::ContentProvider.create(**content_provider) @duration = duration dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/webhook/model/beacon_content.rb b/lib/line/bot/v2/webhook/model/beacon_content.rb index 3bd60b85..a6fe73d2 100644 --- a/lib/line/bot/v2/webhook/model/beacon_content.rb +++ b/lib/line/bot/v2/webhook/model/beacon_content.rb @@ -29,9 +29,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/webhook/model/beacon_event.rb b/lib/line/bot/v2/webhook/model/beacon_event.rb index 869feff3..aeac6b45 100644 --- a/lib/line/bot/v2/webhook/model/beacon_event.rb +++ b/lib/line/bot/v2/webhook/model/beacon_event.rb @@ -25,7 +25,6 @@ class BeaconEvent < Event attr_accessor :beacon def initialize( - type:, source: nil, timestamp:, mode:, @@ -37,19 +36,30 @@ def initialize( ) @type = "beacon" - @source = source + @source = source.is_a?(Line::Bot::V2::Webhook::Source) || source.nil? ? source : Line::Bot::V2::Webhook::Source.create(**source) @timestamp = timestamp @mode = mode @webhook_event_id = webhook_event_id - @delivery_context = delivery_context + @delivery_context = delivery_context.is_a?(Line::Bot::V2::Webhook::DeliveryContext) ? delivery_context : Line::Bot::V2::Webhook::DeliveryContext.create(**delivery_context) @reply_token = reply_token - @beacon = beacon + @beacon = beacon.is_a?(Line::Bot::V2::Webhook::BeaconContent) ? beacon : Line::Bot::V2::Webhook::BeaconContent.create(**beacon) dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/webhook/model/bot_resumed_event.rb b/lib/line/bot/v2/webhook/model/bot_resumed_event.rb index e7b21a7d..cb820c98 100644 --- a/lib/line/bot/v2/webhook/model/bot_resumed_event.rb +++ b/lib/line/bot/v2/webhook/model/bot_resumed_event.rb @@ -23,7 +23,6 @@ class BotResumedEvent < Event attr_accessor :delivery_context def initialize( - type:, source: nil, timestamp:, mode:, @@ -33,17 +32,28 @@ def initialize( ) @type = "botResumed" - @source = source + @source = source.is_a?(Line::Bot::V2::Webhook::Source) || source.nil? ? source : Line::Bot::V2::Webhook::Source.create(**source) @timestamp = timestamp @mode = mode @webhook_event_id = webhook_event_id - @delivery_context = delivery_context + @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 - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/webhook/model/bot_suspended_event.rb b/lib/line/bot/v2/webhook/model/bot_suspended_event.rb index 3993bed3..462d6005 100644 --- a/lib/line/bot/v2/webhook/model/bot_suspended_event.rb +++ b/lib/line/bot/v2/webhook/model/bot_suspended_event.rb @@ -23,7 +23,6 @@ class BotSuspendedEvent < Event attr_accessor :delivery_context def initialize( - type:, source: nil, timestamp:, mode:, @@ -33,17 +32,28 @@ def initialize( ) @type = "botSuspended" - @source = source + @source = source.is_a?(Line::Bot::V2::Webhook::Source) || source.nil? ? source : Line::Bot::V2::Webhook::Source.create(**source) @timestamp = timestamp @mode = mode @webhook_event_id = webhook_event_id - @delivery_context = delivery_context + @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 - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/webhook/model/callback_request.rb b/lib/line/bot/v2/webhook/model/callback_request.rb index fef57cb2..d0d4975f 100644 --- a/lib/line/bot/v2/webhook/model/callback_request.rb +++ b/lib/line/bot/v2/webhook/model/callback_request.rb @@ -24,13 +24,30 @@ def initialize( ) @destination = destination - @events = events + @events = events.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::Webhook::Event.create(**item) + else + item + end + end dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/webhook/model/chat_control.rb b/lib/line/bot/v2/webhook/model/chat_control.rb index 0b3d8e9f..2e3e4374 100644 --- a/lib/line/bot/v2/webhook/model/chat_control.rb +++ b/lib/line/bot/v2/webhook/model/chat_control.rb @@ -23,9 +23,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/webhook/model/content_provider.rb b/lib/line/bot/v2/webhook/model/content_provider.rb index 41ec5c41..b7634b44 100644 --- a/lib/line/bot/v2/webhook/model/content_provider.rb +++ b/lib/line/bot/v2/webhook/model/content_provider.rb @@ -30,9 +30,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/webhook/model/deactivated_event.rb b/lib/line/bot/v2/webhook/model/deactivated_event.rb index 439a9791..5f30ccb3 100644 --- a/lib/line/bot/v2/webhook/model/deactivated_event.rb +++ b/lib/line/bot/v2/webhook/model/deactivated_event.rb @@ -23,7 +23,6 @@ class DeactivatedEvent < Event attr_accessor :delivery_context def initialize( - type:, source: nil, timestamp:, mode:, @@ -33,17 +32,28 @@ def initialize( ) @type = "deactivated" - @source = source + @source = source.is_a?(Line::Bot::V2::Webhook::Source) || source.nil? ? source : Line::Bot::V2::Webhook::Source.create(**source) @timestamp = timestamp @mode = mode @webhook_event_id = webhook_event_id - @delivery_context = delivery_context + @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 - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/webhook/model/delivery_context.rb b/lib/line/bot/v2/webhook/model/delivery_context.rb index 11a67f67..db82b180 100644 --- a/lib/line/bot/v2/webhook/model/delivery_context.rb +++ b/lib/line/bot/v2/webhook/model/delivery_context.rb @@ -24,9 +24,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/webhook/model/detached_module_content.rb b/lib/line/bot/v2/webhook/model/detached_module_content.rb index 3a0d7247..6c5aca8a 100644 --- a/lib/line/bot/v2/webhook/model/detached_module_content.rb +++ b/lib/line/bot/v2/webhook/model/detached_module_content.rb @@ -19,7 +19,6 @@ class DetachedModuleContent < ModuleContent attr_accessor :reason # Reason for detaching def initialize( - type:, bot_id:, reason:, **dynamic_attributes @@ -31,9 +30,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/webhook/model/emoji.rb b/lib/line/bot/v2/webhook/model/emoji.rb index d6af81d9..c70461b8 100644 --- a/lib/line/bot/v2/webhook/model/emoji.rb +++ b/lib/line/bot/v2/webhook/model/emoji.rb @@ -32,9 +32,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/webhook/model/event.rb b/lib/line/bot/v2/webhook/model/event.rb index 90ed46ef..c1f921f0 100644 --- a/lib/line/bot/v2/webhook/model/event.rb +++ b/lib/line/bot/v2/webhook/model/event.rb @@ -31,17 +31,58 @@ def initialize( ) @type = type - @source = source + @source = source.is_a?(Line::Bot::V2::Webhook::Source) || source.nil? ? source : Line::Bot::V2::Webhook::Source.create(**source) @timestamp = timestamp @mode = mode @webhook_event_id = webhook_event_id - @delivery_context = delivery_context + @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 - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + klass = detect_class(args[:type]) + return klass.new(**args) if klass + + return new(**args) + end + + private + + 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, + message: Line::Bot::V2::Webhook::MessageEvent, + module: Line::Bot::V2::Webhook::ModuleEvent, + delivery: Line::Bot::V2::Webhook::PnpDeliveryCompletionEvent, + postback: Line::Bot::V2::Webhook::PostbackEvent, + things: Line::Bot::V2::Webhook::ThingsEvent, + unfollow: Line::Bot::V2::Webhook::UnfollowEvent, + unsend: Line::Bot::V2::Webhook::UnsendEvent, + videoPlayComplete: Line::Bot::V2::Webhook::VideoPlayCompleteEvent, + }[type.to_sym] + end end end end diff --git a/lib/line/bot/v2/webhook/model/event_mode.rb b/lib/line/bot/v2/webhook/model/event_mode.rb index f2cc52fc..ba86236d 100644 --- a/lib/line/bot/v2/webhook/model/event_mode.rb +++ b/lib/line/bot/v2/webhook/model/event_mode.rb @@ -21,9 +21,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/webhook/model/file_message_content.rb b/lib/line/bot/v2/webhook/model/file_message_content.rb index 59c1adb8..e4e2e4a9 100644 --- a/lib/line/bot/v2/webhook/model/file_message_content.rb +++ b/lib/line/bot/v2/webhook/model/file_message_content.rb @@ -20,7 +20,6 @@ class FileMessageContent < MessageContent attr_accessor :file_size # File size in bytes def initialize( - type:, id:, file_name:, file_size:, @@ -34,9 +33,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/webhook/model/follow_detail.rb b/lib/line/bot/v2/webhook/model/follow_detail.rb index 741462bf..5de55ee5 100644 --- a/lib/line/bot/v2/webhook/model/follow_detail.rb +++ b/lib/line/bot/v2/webhook/model/follow_detail.rb @@ -23,9 +23,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/webhook/model/follow_event.rb b/lib/line/bot/v2/webhook/model/follow_event.rb index 40df4c4b..c495d182 100644 --- a/lib/line/bot/v2/webhook/model/follow_event.rb +++ b/lib/line/bot/v2/webhook/model/follow_event.rb @@ -25,7 +25,6 @@ class FollowEvent < Event attr_accessor :follow def initialize( - type:, source: nil, timestamp:, mode:, @@ -37,19 +36,30 @@ def initialize( ) @type = "follow" - @source = source + @source = source.is_a?(Line::Bot::V2::Webhook::Source) || source.nil? ? source : Line::Bot::V2::Webhook::Source.create(**source) @timestamp = timestamp @mode = mode @webhook_event_id = webhook_event_id - @delivery_context = delivery_context + @delivery_context = delivery_context.is_a?(Line::Bot::V2::Webhook::DeliveryContext) ? delivery_context : Line::Bot::V2::Webhook::DeliveryContext.create(**delivery_context) @reply_token = reply_token - @follow = follow + @follow = follow.is_a?(Line::Bot::V2::Webhook::FollowDetail) ? follow : Line::Bot::V2::Webhook::FollowDetail.create(**follow) dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/webhook/model/group_source.rb b/lib/line/bot/v2/webhook/model/group_source.rb index f3329e15..4958c9bf 100644 --- a/lib/line/bot/v2/webhook/model/group_source.rb +++ b/lib/line/bot/v2/webhook/model/group_source.rb @@ -19,7 +19,6 @@ class GroupSource < Source attr_accessor :user_id # ID of the source user. Only included in message events. Only users of LINE for iOS and LINE for Android are included in userId. def initialize( - type:, group_id:, user_id: nil, **dynamic_attributes @@ -31,9 +30,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/webhook/model/image_message_content.rb b/lib/line/bot/v2/webhook/model/image_message_content.rb index f576d43c..30f4f76b 100644 --- a/lib/line/bot/v2/webhook/model/image_message_content.rb +++ b/lib/line/bot/v2/webhook/model/image_message_content.rb @@ -21,7 +21,6 @@ class ImageMessageContent < MessageContent attr_accessor :quote_token # Quote token to quote this message. def initialize( - type:, id:, content_provider:, image_set: nil, @@ -31,15 +30,26 @@ def initialize( @type = "image" @id = id - @content_provider = content_provider - @image_set = image_set + @content_provider = content_provider.is_a?(Line::Bot::V2::Webhook::ContentProvider) ? content_provider : Line::Bot::V2::Webhook::ContentProvider.create(**content_provider) + @image_set = image_set.is_a?(Line::Bot::V2::Webhook::ImageSet) || image_set.nil? ? image_set : Line::Bot::V2::Webhook::ImageSet.create(**image_set) @quote_token = quote_token dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/webhook/model/image_set.rb b/lib/line/bot/v2/webhook/model/image_set.rb index 75d2c37a..0631201a 100644 --- a/lib/line/bot/v2/webhook/model/image_set.rb +++ b/lib/line/bot/v2/webhook/model/image_set.rb @@ -29,9 +29,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/webhook/model/join_event.rb b/lib/line/bot/v2/webhook/model/join_event.rb index c60a922a..f958fb37 100644 --- a/lib/line/bot/v2/webhook/model/join_event.rb +++ b/lib/line/bot/v2/webhook/model/join_event.rb @@ -24,7 +24,6 @@ class JoinEvent < Event attr_accessor :reply_token # Reply token used to send reply message to this event def initialize( - type:, source: nil, timestamp:, mode:, @@ -35,18 +34,29 @@ def initialize( ) @type = "join" - @source = source + @source = source.is_a?(Line::Bot::V2::Webhook::Source) || source.nil? ? source : Line::Bot::V2::Webhook::Source.create(**source) @timestamp = timestamp @mode = mode @webhook_event_id = webhook_event_id - @delivery_context = delivery_context + @delivery_context = delivery_context.is_a?(Line::Bot::V2::Webhook::DeliveryContext) ? delivery_context : Line::Bot::V2::Webhook::DeliveryContext.create(**delivery_context) @reply_token = reply_token dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/webhook/model/joined_members.rb b/lib/line/bot/v2/webhook/model/joined_members.rb index 20910b71..f498858f 100644 --- a/lib/line/bot/v2/webhook/model/joined_members.rb +++ b/lib/line/bot/v2/webhook/model/joined_members.rb @@ -19,13 +19,30 @@ def initialize( **dynamic_attributes ) - @members = members + @members = members.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::Webhook::UserSource.create(**item) + else + item + end + end dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/webhook/model/joined_membership_content.rb b/lib/line/bot/v2/webhook/model/joined_membership_content.rb index a2a0ca0e..0a53bb3e 100644 --- a/lib/line/bot/v2/webhook/model/joined_membership_content.rb +++ b/lib/line/bot/v2/webhook/model/joined_membership_content.rb @@ -18,7 +18,6 @@ class JoinedMembershipContent < MembershipContent attr_accessor :membership_id # The ID of the membership that the user joined. This is defined for each membership. def initialize( - type:, membership_id:, **dynamic_attributes ) @@ -28,9 +27,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/webhook/model/leave_event.rb b/lib/line/bot/v2/webhook/model/leave_event.rb index fd9095eb..273dcd34 100644 --- a/lib/line/bot/v2/webhook/model/leave_event.rb +++ b/lib/line/bot/v2/webhook/model/leave_event.rb @@ -23,7 +23,6 @@ class LeaveEvent < Event attr_accessor :delivery_context def initialize( - type:, source: nil, timestamp:, mode:, @@ -33,17 +32,28 @@ def initialize( ) @type = "leave" - @source = source + @source = source.is_a?(Line::Bot::V2::Webhook::Source) || source.nil? ? source : Line::Bot::V2::Webhook::Source.create(**source) @timestamp = timestamp @mode = mode @webhook_event_id = webhook_event_id - @delivery_context = delivery_context + @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 - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/webhook/model/left_members.rb b/lib/line/bot/v2/webhook/model/left_members.rb index a0de1808..51e35c1c 100644 --- a/lib/line/bot/v2/webhook/model/left_members.rb +++ b/lib/line/bot/v2/webhook/model/left_members.rb @@ -19,13 +19,30 @@ def initialize( **dynamic_attributes ) - @members = members + @members = members.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::Webhook::UserSource.create(**item) + else + item + end + end dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/webhook/model/left_membership_content.rb b/lib/line/bot/v2/webhook/model/left_membership_content.rb index 97060f5b..10a680a9 100644 --- a/lib/line/bot/v2/webhook/model/left_membership_content.rb +++ b/lib/line/bot/v2/webhook/model/left_membership_content.rb @@ -18,7 +18,6 @@ class LeftMembershipContent < MembershipContent attr_accessor :membership_id # The ID of the membership that the user left. This is defined for each membership. def initialize( - type:, membership_id:, **dynamic_attributes ) @@ -28,9 +27,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/webhook/model/link_content.rb b/lib/line/bot/v2/webhook/model/link_content.rb index 11e892fd..2ca4dea1 100644 --- a/lib/line/bot/v2/webhook/model/link_content.rb +++ b/lib/line/bot/v2/webhook/model/link_content.rb @@ -27,9 +27,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/webhook/model/link_things_content.rb b/lib/line/bot/v2/webhook/model/link_things_content.rb index 02b91578..39df1906 100644 --- a/lib/line/bot/v2/webhook/model/link_things_content.rb +++ b/lib/line/bot/v2/webhook/model/link_things_content.rb @@ -18,7 +18,6 @@ class LinkThingsContent < ThingsContent attr_accessor :device_id # Device ID of the device that has been linked with LINE. def initialize( - type:, device_id:, **dynamic_attributes ) @@ -28,9 +27,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/webhook/model/location_message_content.rb b/lib/line/bot/v2/webhook/model/location_message_content.rb index ecca8dbb..c0dd1dcc 100644 --- a/lib/line/bot/v2/webhook/model/location_message_content.rb +++ b/lib/line/bot/v2/webhook/model/location_message_content.rb @@ -22,7 +22,6 @@ class LocationMessageContent < MessageContent attr_accessor :longitude # Longitude def initialize( - type:, id:, title: nil, address: nil, @@ -40,9 +39,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/webhook/model/member_joined_event.rb b/lib/line/bot/v2/webhook/model/member_joined_event.rb index 13052dd4..cf3545c9 100644 --- a/lib/line/bot/v2/webhook/model/member_joined_event.rb +++ b/lib/line/bot/v2/webhook/model/member_joined_event.rb @@ -25,7 +25,6 @@ class MemberJoinedEvent < Event attr_accessor :joined def initialize( - type:, source: nil, timestamp:, mode:, @@ -37,19 +36,30 @@ def initialize( ) @type = "memberJoined" - @source = source + @source = source.is_a?(Line::Bot::V2::Webhook::Source) || source.nil? ? source : Line::Bot::V2::Webhook::Source.create(**source) @timestamp = timestamp @mode = mode @webhook_event_id = webhook_event_id - @delivery_context = delivery_context + @delivery_context = delivery_context.is_a?(Line::Bot::V2::Webhook::DeliveryContext) ? delivery_context : Line::Bot::V2::Webhook::DeliveryContext.create(**delivery_context) @reply_token = reply_token - @joined = joined + @joined = joined.is_a?(Line::Bot::V2::Webhook::JoinedMembers) ? joined : Line::Bot::V2::Webhook::JoinedMembers.create(**joined) dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/webhook/model/member_left_event.rb b/lib/line/bot/v2/webhook/model/member_left_event.rb index 065b3332..16382b06 100644 --- a/lib/line/bot/v2/webhook/model/member_left_event.rb +++ b/lib/line/bot/v2/webhook/model/member_left_event.rb @@ -24,7 +24,6 @@ class MemberLeftEvent < Event attr_accessor :left def initialize( - type:, source: nil, timestamp:, mode:, @@ -35,18 +34,29 @@ def initialize( ) @type = "memberLeft" - @source = source + @source = source.is_a?(Line::Bot::V2::Webhook::Source) || source.nil? ? source : Line::Bot::V2::Webhook::Source.create(**source) @timestamp = timestamp @mode = mode @webhook_event_id = webhook_event_id - @delivery_context = delivery_context - @left = left + @delivery_context = delivery_context.is_a?(Line::Bot::V2::Webhook::DeliveryContext) ? delivery_context : Line::Bot::V2::Webhook::DeliveryContext.create(**delivery_context) + @left = left.is_a?(Line::Bot::V2::Webhook::LeftMembers) ? left : Line::Bot::V2::Webhook::LeftMembers.create(**left) dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/webhook/model/membership_content.rb b/lib/line/bot/v2/webhook/model/membership_content.rb index b9e3df7d..f638a1f6 100644 --- a/lib/line/bot/v2/webhook/model/membership_content.rb +++ b/lib/line/bot/v2/webhook/model/membership_content.rb @@ -24,9 +24,33 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + klass = detect_class(args[:type]) + return klass.new(**args) if klass + + return new(**args) + end + + private + + def self.detect_class(type) + { + joined: Line::Bot::V2::Webhook::JoinedMembershipContent, + left: Line::Bot::V2::Webhook::LeftMembershipContent, + renewed: Line::Bot::V2::Webhook::RenewedMembershipContent, + }[type.to_sym] + end end end end diff --git a/lib/line/bot/v2/webhook/model/membership_event.rb b/lib/line/bot/v2/webhook/model/membership_event.rb index b4aa2155..39c2df49 100644 --- a/lib/line/bot/v2/webhook/model/membership_event.rb +++ b/lib/line/bot/v2/webhook/model/membership_event.rb @@ -25,7 +25,6 @@ class MembershipEvent < Event attr_accessor :membership def initialize( - type:, source: nil, timestamp:, mode:, @@ -37,19 +36,30 @@ def initialize( ) @type = "membership" - @source = source + @source = source.is_a?(Line::Bot::V2::Webhook::Source) || source.nil? ? source : Line::Bot::V2::Webhook::Source.create(**source) @timestamp = timestamp @mode = mode @webhook_event_id = webhook_event_id - @delivery_context = delivery_context + @delivery_context = delivery_context.is_a?(Line::Bot::V2::Webhook::DeliveryContext) ? delivery_context : Line::Bot::V2::Webhook::DeliveryContext.create(**delivery_context) @reply_token = reply_token - @membership = membership + @membership = membership.is_a?(Line::Bot::V2::Webhook::MembershipContent) ? membership : Line::Bot::V2::Webhook::MembershipContent.create(**membership) dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/webhook/model/mention.rb b/lib/line/bot/v2/webhook/model/mention.rb index 3566cc81..5328b164 100644 --- a/lib/line/bot/v2/webhook/model/mention.rb +++ b/lib/line/bot/v2/webhook/model/mention.rb @@ -19,13 +19,30 @@ def initialize( **dynamic_attributes ) - @mentionees = mentionees + @mentionees = mentionees.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::Webhook::Mentionee.create(**item) + else + item + end + end dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/webhook/model/mentionee.rb b/lib/line/bot/v2/webhook/model/mentionee.rb index cf3c4461..a11b0aaf 100644 --- a/lib/line/bot/v2/webhook/model/mentionee.rb +++ b/lib/line/bot/v2/webhook/model/mentionee.rb @@ -30,9 +30,32 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + klass = detect_class(args[:type]) + return klass.new(**args) if klass + + return new(**args) + end + + private + + def self.detect_class(type) + { + all: Line::Bot::V2::Webhook::AllMentionee, + user: Line::Bot::V2::Webhook::UserMentionee, + }[type.to_sym] + end end end end diff --git a/lib/line/bot/v2/webhook/model/message_content.rb b/lib/line/bot/v2/webhook/model/message_content.rb index 0863678d..ba0f05be 100644 --- a/lib/line/bot/v2/webhook/model/message_content.rb +++ b/lib/line/bot/v2/webhook/model/message_content.rb @@ -27,9 +27,37 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + klass = detect_class(args[:type]) + return klass.new(**args) if klass + + return new(**args) + end + + private + + def self.detect_class(type) + { + audio: Line::Bot::V2::Webhook::AudioMessageContent, + file: Line::Bot::V2::Webhook::FileMessageContent, + image: Line::Bot::V2::Webhook::ImageMessageContent, + location: Line::Bot::V2::Webhook::LocationMessageContent, + sticker: Line::Bot::V2::Webhook::StickerMessageContent, + text: Line::Bot::V2::Webhook::TextMessageContent, + video: Line::Bot::V2::Webhook::VideoMessageContent, + }[type.to_sym] + end end end end diff --git a/lib/line/bot/v2/webhook/model/message_event.rb b/lib/line/bot/v2/webhook/model/message_event.rb index 14ee63a7..a37593db 100644 --- a/lib/line/bot/v2/webhook/model/message_event.rb +++ b/lib/line/bot/v2/webhook/model/message_event.rb @@ -25,7 +25,6 @@ class MessageEvent < Event attr_accessor :message def initialize( - type:, source: nil, timestamp:, mode:, @@ -37,19 +36,30 @@ def initialize( ) @type = "message" - @source = source + @source = source.is_a?(Line::Bot::V2::Webhook::Source) || source.nil? ? source : Line::Bot::V2::Webhook::Source.create(**source) @timestamp = timestamp @mode = mode @webhook_event_id = webhook_event_id - @delivery_context = delivery_context + @delivery_context = delivery_context.is_a?(Line::Bot::V2::Webhook::DeliveryContext) ? delivery_context : Line::Bot::V2::Webhook::DeliveryContext.create(**delivery_context) @reply_token = reply_token - @message = message + @message = message.is_a?(Line::Bot::V2::Webhook::MessageContent) ? message : Line::Bot::V2::Webhook::MessageContent.create(**message) dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/webhook/model/module_content.rb b/lib/line/bot/v2/webhook/model/module_content.rb index 95bab378..c939e3c1 100644 --- a/lib/line/bot/v2/webhook/model/module_content.rb +++ b/lib/line/bot/v2/webhook/model/module_content.rb @@ -23,9 +23,32 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + klass = detect_class(args[:type]) + return klass.new(**args) if klass + + return new(**args) + end + + private + + def self.detect_class(type) + { + attached: Line::Bot::V2::Webhook::AttachedModuleContent, + detached: Line::Bot::V2::Webhook::DetachedModuleContent, + }[type.to_sym] + end end end end diff --git a/lib/line/bot/v2/webhook/model/module_event.rb b/lib/line/bot/v2/webhook/model/module_event.rb index 82060f5b..b050ca71 100644 --- a/lib/line/bot/v2/webhook/model/module_event.rb +++ b/lib/line/bot/v2/webhook/model/module_event.rb @@ -24,7 +24,6 @@ class ModuleEvent < Event attr_accessor :_module def initialize( - type:, source: nil, timestamp:, mode:, @@ -35,18 +34,29 @@ def initialize( ) @type = "module" - @source = source + @source = source.is_a?(Line::Bot::V2::Webhook::Source) || source.nil? ? source : Line::Bot::V2::Webhook::Source.create(**source) @timestamp = timestamp @mode = mode @webhook_event_id = webhook_event_id - @delivery_context = delivery_context - @_module = _module + @delivery_context = delivery_context.is_a?(Line::Bot::V2::Webhook::DeliveryContext) ? delivery_context : Line::Bot::V2::Webhook::DeliveryContext.create(**delivery_context) + @_module = _module.is_a?(Line::Bot::V2::Webhook::ModuleContent) ? _module : Line::Bot::V2::Webhook::ModuleContent.create(**_module) dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/webhook/model/pnp_delivery.rb b/lib/line/bot/v2/webhook/model/pnp_delivery.rb index 04277bf0..43c09d9d 100644 --- a/lib/line/bot/v2/webhook/model/pnp_delivery.rb +++ b/lib/line/bot/v2/webhook/model/pnp_delivery.rb @@ -24,9 +24,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/webhook/model/pnp_delivery_completion_event.rb b/lib/line/bot/v2/webhook/model/pnp_delivery_completion_event.rb index 29e5e07f..10f74570 100644 --- a/lib/line/bot/v2/webhook/model/pnp_delivery_completion_event.rb +++ b/lib/line/bot/v2/webhook/model/pnp_delivery_completion_event.rb @@ -24,7 +24,6 @@ class PnpDeliveryCompletionEvent < Event attr_accessor :delivery def initialize( - type:, source: nil, timestamp:, mode:, @@ -35,18 +34,29 @@ def initialize( ) @type = "delivery" - @source = source + @source = source.is_a?(Line::Bot::V2::Webhook::Source) || source.nil? ? source : Line::Bot::V2::Webhook::Source.create(**source) @timestamp = timestamp @mode = mode @webhook_event_id = webhook_event_id - @delivery_context = delivery_context - @delivery = delivery + @delivery_context = delivery_context.is_a?(Line::Bot::V2::Webhook::DeliveryContext) ? delivery_context : Line::Bot::V2::Webhook::DeliveryContext.create(**delivery_context) + @delivery = delivery.is_a?(Line::Bot::V2::Webhook::PnpDelivery) ? delivery : Line::Bot::V2::Webhook::PnpDelivery.create(**delivery) dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/webhook/model/postback_content.rb b/lib/line/bot/v2/webhook/model/postback_content.rb index 9bd9c17f..daef42da 100644 --- a/lib/line/bot/v2/webhook/model/postback_content.rb +++ b/lib/line/bot/v2/webhook/model/postback_content.rb @@ -26,9 +26,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/webhook/model/postback_event.rb b/lib/line/bot/v2/webhook/model/postback_event.rb index ee5dd94d..369ca43b 100644 --- a/lib/line/bot/v2/webhook/model/postback_event.rb +++ b/lib/line/bot/v2/webhook/model/postback_event.rb @@ -25,7 +25,6 @@ class PostbackEvent < Event attr_accessor :postback def initialize( - type:, source: nil, timestamp:, mode:, @@ -37,19 +36,30 @@ def initialize( ) @type = "postback" - @source = source + @source = source.is_a?(Line::Bot::V2::Webhook::Source) || source.nil? ? source : Line::Bot::V2::Webhook::Source.create(**source) @timestamp = timestamp @mode = mode @webhook_event_id = webhook_event_id - @delivery_context = delivery_context + @delivery_context = delivery_context.is_a?(Line::Bot::V2::Webhook::DeliveryContext) ? delivery_context : Line::Bot::V2::Webhook::DeliveryContext.create(**delivery_context) @reply_token = reply_token - @postback = postback + @postback = postback.is_a?(Line::Bot::V2::Webhook::PostbackContent) ? postback : Line::Bot::V2::Webhook::PostbackContent.create(**postback) dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/webhook/model/renewed_membership_content.rb b/lib/line/bot/v2/webhook/model/renewed_membership_content.rb index 6c2b2013..f2544e5c 100644 --- a/lib/line/bot/v2/webhook/model/renewed_membership_content.rb +++ b/lib/line/bot/v2/webhook/model/renewed_membership_content.rb @@ -18,7 +18,6 @@ class RenewedMembershipContent < MembershipContent attr_accessor :membership_id # The ID of the membership that the user renewed. This is defined for each membership. def initialize( - type:, membership_id:, **dynamic_attributes ) @@ -28,9 +27,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/webhook/model/room_source.rb b/lib/line/bot/v2/webhook/model/room_source.rb index cb6e88fc..3332a08f 100644 --- a/lib/line/bot/v2/webhook/model/room_source.rb +++ b/lib/line/bot/v2/webhook/model/room_source.rb @@ -19,7 +19,6 @@ class RoomSource < Source attr_accessor :room_id # Room ID of the source multi-person chat def initialize( - type:, user_id: nil, room_id:, **dynamic_attributes @@ -31,9 +30,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/webhook/model/scenario_result.rb b/lib/line/bot/v2/webhook/model/scenario_result.rb index a11ede5b..c67161a8 100644 --- a/lib/line/bot/v2/webhook/model/scenario_result.rb +++ b/lib/line/bot/v2/webhook/model/scenario_result.rb @@ -39,15 +39,32 @@ def initialize( @start_time = start_time @end_time = end_time @result_code = result_code - @action_results = action_results + @action_results = action_results&.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::Webhook::ActionResult.create(**item) + else + item + end + end @ble_notification_payload = ble_notification_payload @error_reason = error_reason dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/webhook/model/scenario_result_things_content.rb b/lib/line/bot/v2/webhook/model/scenario_result_things_content.rb index 866f2f1c..8f638020 100644 --- a/lib/line/bot/v2/webhook/model/scenario_result_things_content.rb +++ b/lib/line/bot/v2/webhook/model/scenario_result_things_content.rb @@ -19,7 +19,6 @@ class ScenarioResultThingsContent < ThingsContent attr_accessor :result def initialize( - type:, device_id:, result:, **dynamic_attributes @@ -27,13 +26,24 @@ def initialize( @type = "scenarioResult" @device_id = device_id - @result = result + @result = result.is_a?(Line::Bot::V2::Webhook::ScenarioResult) ? result : Line::Bot::V2::Webhook::ScenarioResult.create(**result) dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/webhook/model/source.rb b/lib/line/bot/v2/webhook/model/source.rb index f4dbb5ad..1c11551c 100644 --- a/lib/line/bot/v2/webhook/model/source.rb +++ b/lib/line/bot/v2/webhook/model/source.rb @@ -25,9 +25,33 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + klass = detect_class(args[:type]) + return klass.new(**args) if klass + + return new(**args) + end + + private + + def self.detect_class(type) + { + group: Line::Bot::V2::Webhook::GroupSource, + room: Line::Bot::V2::Webhook::RoomSource, + user: Line::Bot::V2::Webhook::UserSource, + }[type.to_sym] + end end end end diff --git a/lib/line/bot/v2/webhook/model/sticker_message_content.rb b/lib/line/bot/v2/webhook/model/sticker_message_content.rb index 018a6667..20fbcafc 100644 --- a/lib/line/bot/v2/webhook/model/sticker_message_content.rb +++ b/lib/line/bot/v2/webhook/model/sticker_message_content.rb @@ -26,7 +26,6 @@ class StickerMessageContent < MessageContent attr_accessor :quoted_message_id # Message ID of a quoted message. Only included when the received message quotes a past message. def initialize( - type:, id:, package_id:, sticker_id:, @@ -43,16 +42,33 @@ def initialize( @package_id = package_id @sticker_id = sticker_id @sticker_resource_type = sticker_resource_type - @keywords = keywords + @keywords = keywords&.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::Webhook::string.create(**item) + else + item + end + end @text = text @quote_token = quote_token @quoted_message_id = quoted_message_id dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/webhook/model/text_message_content.rb b/lib/line/bot/v2/webhook/model/text_message_content.rb index 511c0da7..a937943e 100644 --- a/lib/line/bot/v2/webhook/model/text_message_content.rb +++ b/lib/line/bot/v2/webhook/model/text_message_content.rb @@ -23,7 +23,6 @@ class TextMessageContent < MessageContent attr_accessor :quoted_message_id # Message ID of a quoted message. Only included when the received message quotes a past message. def initialize( - type:, id:, text:, emojis: nil, @@ -36,16 +35,33 @@ def initialize( @id = id @text = text - @emojis = emojis - @mention = mention + @emojis = emojis&.map do |item| + if item.is_a?(Hash) + Line::Bot::V2::Webhook::Emoji.create(**item) + else + item + end + end + @mention = mention.is_a?(Line::Bot::V2::Webhook::Mention) || mention.nil? ? mention : Line::Bot::V2::Webhook::Mention.create(**mention) @quote_token = quote_token @quoted_message_id = quoted_message_id dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/webhook/model/things_content.rb b/lib/line/bot/v2/webhook/model/things_content.rb index f33db2f7..12ef8b4c 100644 --- a/lib/line/bot/v2/webhook/model/things_content.rb +++ b/lib/line/bot/v2/webhook/model/things_content.rb @@ -23,9 +23,33 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + klass = detect_class(args[:type]) + return klass.new(**args) if klass + + return new(**args) + end + + private + + def self.detect_class(type) + { + link: Line::Bot::V2::Webhook::LinkThingsContent, + scenarioResult: Line::Bot::V2::Webhook::ScenarioResultThingsContent, + unlink: Line::Bot::V2::Webhook::UnlinkThingsContent, + }[type.to_sym] + end end end end diff --git a/lib/line/bot/v2/webhook/model/things_event.rb b/lib/line/bot/v2/webhook/model/things_event.rb index beb2b837..0fbdc9e5 100644 --- a/lib/line/bot/v2/webhook/model/things_event.rb +++ b/lib/line/bot/v2/webhook/model/things_event.rb @@ -25,7 +25,6 @@ class ThingsEvent < Event attr_accessor :things def initialize( - type:, source: nil, timestamp:, mode:, @@ -37,19 +36,30 @@ def initialize( ) @type = "things" - @source = source + @source = source.is_a?(Line::Bot::V2::Webhook::Source) || source.nil? ? source : Line::Bot::V2::Webhook::Source.create(**source) @timestamp = timestamp @mode = mode @webhook_event_id = webhook_event_id - @delivery_context = delivery_context + @delivery_context = delivery_context.is_a?(Line::Bot::V2::Webhook::DeliveryContext) ? delivery_context : Line::Bot::V2::Webhook::DeliveryContext.create(**delivery_context) @reply_token = reply_token - @things = things + @things = things.is_a?(Line::Bot::V2::Webhook::ThingsContent) ? things : Line::Bot::V2::Webhook::ThingsContent.create(**things) dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/webhook/model/unfollow_event.rb b/lib/line/bot/v2/webhook/model/unfollow_event.rb index 5c3b4440..1e4ef1fb 100644 --- a/lib/line/bot/v2/webhook/model/unfollow_event.rb +++ b/lib/line/bot/v2/webhook/model/unfollow_event.rb @@ -23,7 +23,6 @@ class UnfollowEvent < Event attr_accessor :delivery_context def initialize( - type:, source: nil, timestamp:, mode:, @@ -33,17 +32,28 @@ def initialize( ) @type = "unfollow" - @source = source + @source = source.is_a?(Line::Bot::V2::Webhook::Source) || source.nil? ? source : Line::Bot::V2::Webhook::Source.create(**source) @timestamp = timestamp @mode = mode @webhook_event_id = webhook_event_id - @delivery_context = delivery_context + @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 - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/webhook/model/unlink_things_content.rb b/lib/line/bot/v2/webhook/model/unlink_things_content.rb index eab33ac4..d6f8b2d0 100644 --- a/lib/line/bot/v2/webhook/model/unlink_things_content.rb +++ b/lib/line/bot/v2/webhook/model/unlink_things_content.rb @@ -18,7 +18,6 @@ class UnlinkThingsContent < ThingsContent attr_accessor :device_id # Device ID of the device that has been linked with LINE. def initialize( - type:, device_id:, **dynamic_attributes ) @@ -28,9 +27,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/webhook/model/unsend_detail.rb b/lib/line/bot/v2/webhook/model/unsend_detail.rb index fa76b382..d972fcd4 100644 --- a/lib/line/bot/v2/webhook/model/unsend_detail.rb +++ b/lib/line/bot/v2/webhook/model/unsend_detail.rb @@ -23,9 +23,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/webhook/model/unsend_event.rb b/lib/line/bot/v2/webhook/model/unsend_event.rb index 482a4094..e2b0e4d1 100644 --- a/lib/line/bot/v2/webhook/model/unsend_event.rb +++ b/lib/line/bot/v2/webhook/model/unsend_event.rb @@ -24,7 +24,6 @@ class UnsendEvent < Event attr_accessor :unsend def initialize( - type:, source: nil, timestamp:, mode:, @@ -35,18 +34,29 @@ def initialize( ) @type = "unsend" - @source = source + @source = source.is_a?(Line::Bot::V2::Webhook::Source) || source.nil? ? source : Line::Bot::V2::Webhook::Source.create(**source) @timestamp = timestamp @mode = mode @webhook_event_id = webhook_event_id - @delivery_context = delivery_context - @unsend = unsend + @delivery_context = delivery_context.is_a?(Line::Bot::V2::Webhook::DeliveryContext) ? delivery_context : Line::Bot::V2::Webhook::DeliveryContext.create(**delivery_context) + @unsend = unsend.is_a?(Line::Bot::V2::Webhook::UnsendDetail) ? unsend : Line::Bot::V2::Webhook::UnsendDetail.create(**unsend) dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/webhook/model/user_mentionee.rb b/lib/line/bot/v2/webhook/model/user_mentionee.rb index c47ee912..0a424d12 100644 --- a/lib/line/bot/v2/webhook/model/user_mentionee.rb +++ b/lib/line/bot/v2/webhook/model/user_mentionee.rb @@ -22,7 +22,6 @@ class UserMentionee < Mentionee attr_accessor :is_self # Whether the mentioned user is the bot that receives the webhook. def initialize( - type:, index:, length:, user_id: nil, @@ -38,9 +37,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/webhook/model/user_source.rb b/lib/line/bot/v2/webhook/model/user_source.rb index 46f74da2..b331f6f1 100644 --- a/lib/line/bot/v2/webhook/model/user_source.rb +++ b/lib/line/bot/v2/webhook/model/user_source.rb @@ -18,7 +18,6 @@ class UserSource < Source attr_accessor :user_id # ID of the source user def initialize( - type:, user_id: nil, **dynamic_attributes ) @@ -28,9 +27,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/webhook/model/video_message_content.rb b/lib/line/bot/v2/webhook/model/video_message_content.rb index f0fa4fc0..a0e78088 100644 --- a/lib/line/bot/v2/webhook/model/video_message_content.rb +++ b/lib/line/bot/v2/webhook/model/video_message_content.rb @@ -21,7 +21,6 @@ class VideoMessageContent < MessageContent attr_accessor :quote_token # Quote token to quote this message. def initialize( - type:, id:, duration: nil, content_provider:, @@ -32,14 +31,25 @@ def initialize( @id = id @duration = duration - @content_provider = content_provider + @content_provider = content_provider.is_a?(Line::Bot::V2::Webhook::ContentProvider) ? content_provider : Line::Bot::V2::Webhook::ContentProvider.create(**content_provider) @quote_token = quote_token dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/webhook/model/video_play_complete.rb b/lib/line/bot/v2/webhook/model/video_play_complete.rb index 01081ab5..d5f8ff86 100644 --- a/lib/line/bot/v2/webhook/model/video_play_complete.rb +++ b/lib/line/bot/v2/webhook/model/video_play_complete.rb @@ -23,9 +23,20 @@ def initialize( dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/webhook/model/video_play_complete_event.rb b/lib/line/bot/v2/webhook/model/video_play_complete_event.rb index 02e88f64..33d72ddd 100644 --- a/lib/line/bot/v2/webhook/model/video_play_complete_event.rb +++ b/lib/line/bot/v2/webhook/model/video_play_complete_event.rb @@ -25,7 +25,6 @@ class VideoPlayCompleteEvent < Event attr_accessor :video_play_complete def initialize( - type:, source: nil, timestamp:, mode:, @@ -37,19 +36,30 @@ def initialize( ) @type = "videoPlayComplete" - @source = source + @source = source.is_a?(Line::Bot::V2::Webhook::Source) || source.nil? ? source : Line::Bot::V2::Webhook::Source.create(**source) @timestamp = timestamp @mode = mode @webhook_event_id = webhook_event_id - @delivery_context = delivery_context + @delivery_context = delivery_context.is_a?(Line::Bot::V2::Webhook::DeliveryContext) ? delivery_context : Line::Bot::V2::Webhook::DeliveryContext.create(**delivery_context) @reply_token = reply_token - @video_play_complete = video_play_complete + @video_play_complete = video_play_complete.is_a?(Line::Bot::V2::Webhook::VideoPlayComplete) ? video_play_complete : Line::Bot::V2::Webhook::VideoPlayComplete.create(**video_play_complete) dynamic_attributes.each do |key, value| self.class.attr_accessor key - instance_variable_set("@#{key}", value) + + 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 + + def self.create(args) + return new(**args) + end end end end diff --git a/lib/line/bot/v2/webhook_parser.rb b/lib/line/bot/v2/webhook_parser.rb index b9d07003..22818647 100644 --- a/lib/line/bot/v2/webhook_parser.rb +++ b/lib/line/bot/v2/webhook_parser.rb @@ -21,11 +21,11 @@ def initialize(channel_secret:) # The unmodified request body (exactly as received). # @param signature [String] # The value of the 'X-LINE-Signature' header. - # @return [Array] + # @return [Array] # An array of event objects. Recognized events become instances of classes - # under `Line::Bot::V2::Webhook::*Event`; otherwise, they're returned as `Struct`. - # `Struct` is returned as fallback only when the event class is not defined in line-bot-sdk library. - # When you update the SDK, you may not need to handle `Struct` anymore. + # under `Line::Bot::V2::Webhook::*Event`; + # `Line::Bot::V2::Webhook::Event` is returned as fallback only when the event class is not defined in line-bot-sdk library. + # When you update the SDK, you may not need to handle `Line::Bot::V2::Webhook::Event` anymore. # @raise [InvalidSignatureError] # If the signature fails verification. # @@ -58,19 +58,11 @@ def parse(body, signature) data = JSON.parse(body.chomp, symbolize_names: true) data = Line::Bot::V2::Utils.deep_underscore(data) + data = Line::Bot::V2::Utils.deep_convert_reserved_words(data) + data = Line::Bot::V2::Utils.deep_symbolize(data) data[:events].map do |event| - event_class_name = determine_class_name(:events, event) - event_class = begin - Object.const_get(event_class_name) - rescue StandardError - nil - end - - # If there is no specific webhook class, leave the value as is - event_instance = event_class ? create_instance(event_class, event) : event - - deep_hash_to_struct(event_instance) + Line::Bot::V2::Webhook::Event.create(**event) end end @@ -96,133 +88,6 @@ def secure_compare(a, b) b.each_byte { |byte| res |= byte ^ l.shift } res == 0 end - - def create_instance(klass, attributes) - keyword_args = {} - - attributes.each do |key, value| - if value.is_a?(Hash) - nested_class_name = determine_class_name(key, value) - if nested_class_name - nested_klass = Object.const_get(nested_class_name) - value = create_instance(nested_klass, value) - end - elsif value.is_a?(Array) - value = value.map do |item| - nested_class_name = determine_class_name(key, item) - if nested_class_name - nested_klass = Object.const_get(nested_class_name) - create_instance(nested_klass, item) - else - item - end - end - end - - # CodeGen add _ prefix to reserved words - # see: https://github.com/OpenAPITools/openapi-generator/blob/master/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractRubyCodegen.java - if Line::Bot::V2::RESERVED_WORDS.include?(key) - keyword_args["_#{key}".to_sym] = value - else - keyword_args[key] = value - end - end - - begin - klass.new(**keyword_args) - rescue ArgumentError => e - attributes # Return the original hash if unknown keyword error occurs - end - end - - # TODO: Derive classes from rbs information or define attribute/class mappings for each class and derive classes from them. - def determine_class_name(key, value) - class_name = if key == :events && value.is_a?(Hash) && value[:type] == 'delivery' - 'PnpDeliveryCompletionEvent' - elsif key == :message && value.is_a?(Hash) && value[:type] - pascalize(value[:type]) + 'MessageContent' - elsif key == :mentionees && value.is_a?(Hash) && value[:type] - pascalize(value[:type]) + 'Mentionee' - elsif key == :module && value.is_a?(Hash) && value[:type] - pascalize(value[:type]) + 'ModuleContent' - elsif key == :things && value.is_a?(Hash) && value[:type] - pascalize(value[:type]) + 'ThingsContent' - elsif value.is_a?(Hash) && value[:type] && ['user', 'group', 'room'].include?(value[:type]) - pascalize(value[:type]) + 'Source' - elsif key == :result && value.is_a?(Hash) && value[:result_code] - 'ScenarioResult' - elsif key == :content_provider # This has type, but there is no typed ContentProvider - 'ContentProvider' - elsif key == :_module # This has type, but there is no typed ModuleContent - 'ModuleContent' - elsif key == :unsend - 'UnsendDetail' - elsif key == :follow - 'FollowDetail' - elsif key == :joined - 'JoinedMembers' - elsif key == :left - 'LeftMembers' - elsif key == :postback - 'PostbackContent' - elsif key == :beacon - 'BeaconContent' - elsif key == :link - 'LinkContent' - elsif key == :delivery - 'PnpDelivery' - elsif value.is_a?(Hash) && value[:type] # Event etc. - pascalize(value[:type]) + singularize(pascalize(key)) - elsif value.is_a?(Array) && key.to_s.end_with?('s') - pascalize(singularize(key)) - else - singularize(pascalize(key)) - end - - full_class_name = "Line::Bot::V2::Webhook::#{class_name}" - Object.const_defined?(full_class_name) ? full_class_name : nil - end - - def pascalize(str) - str.to_s.gsub(/(?:^|_)([a-z])/) { ::Regexp.last_match(1).upcase } - end - - def singularize(str) - str = str.to_s - - if str.end_with?('ies') - str.sub(/ies$/, 'y') - elsif str.end_with?('ves') - str.sub(/ves$/, 'f') - elsif str.end_with?('oes') || str.end_with?('xes') || str.end_with?('ses') - str.sub(/es$/, '') - elsif str.end_with?('s') - str.sub(/s$/, '') - else - str - end - end - - def deep_hash_to_struct(obj) - case obj - when Hash - keys = obj.keys.map(&:to_sym) - struct_class = Struct.new(*keys) - struct_class.new(*obj.values.map { |value| deep_hash_to_struct(value) }) - when Array - obj.map { |item| deep_hash_to_struct(item) } - else - if obj.respond_to?(:instance_variables) - obj.instance_variables.each do |var| - value = obj.instance_variable_get(var) - if value.is_a?(Hash) || value.is_a?(Array) || value.respond_to?(:instance_variables) - obj.instance_variable_set(var, deep_hash_to_struct(value)) - end - end - end - obj - end - end end end end diff --git a/sig/line/bot/v2/channel_access_token/model/channel_access_token_key_ids_response.rbs b/sig/line/bot/v2/channel_access_token/model/channel_access_token_key_ids_response.rbs index c578231a..b3c65150 100644 --- a/sig/line/bot/v2/channel_access_token/model/channel_access_token_key_ids_response.rbs +++ b/sig/line/bot/v2/channel_access_token/model/channel_access_token_key_ids_response.rbs @@ -19,6 +19,8 @@ module Line def initialize: ( kids: Array[String] ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> ChannelAccessTokenKeyIdsResponse end end end diff --git a/sig/line/bot/v2/channel_access_token/model/error_response.rbs b/sig/line/bot/v2/channel_access_token/model/error_response.rbs index 6c91afb7..effa5bdb 100644 --- a/sig/line/bot/v2/channel_access_token/model/error_response.rbs +++ b/sig/line/bot/v2/channel_access_token/model/error_response.rbs @@ -20,6 +20,8 @@ module Line error: String?, error_description: String? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> ErrorResponse end end end diff --git a/sig/line/bot/v2/channel_access_token/model/issue_channel_access_token_response.rbs b/sig/line/bot/v2/channel_access_token/model/issue_channel_access_token_response.rbs index 7096a6de..3097aa18 100644 --- a/sig/line/bot/v2/channel_access_token/model/issue_channel_access_token_response.rbs +++ b/sig/line/bot/v2/channel_access_token/model/issue_channel_access_token_response.rbs @@ -25,6 +25,8 @@ module Line token_type: String, key_id: String ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> IssueChannelAccessTokenResponse end end end diff --git a/sig/line/bot/v2/channel_access_token/model/issue_short_lived_channel_access_token_response.rbs b/sig/line/bot/v2/channel_access_token/model/issue_short_lived_channel_access_token_response.rbs index c983c77b..22a9a3fd 100644 --- a/sig/line/bot/v2/channel_access_token/model/issue_short_lived_channel_access_token_response.rbs +++ b/sig/line/bot/v2/channel_access_token/model/issue_short_lived_channel_access_token_response.rbs @@ -23,6 +23,8 @@ module Line expires_in: Integer, token_type: String ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> IssueShortLivedChannelAccessTokenResponse end end end diff --git a/sig/line/bot/v2/channel_access_token/model/issue_stateless_channel_access_token_response.rbs b/sig/line/bot/v2/channel_access_token/model/issue_stateless_channel_access_token_response.rbs index 7878bc1a..2bc9019e 100644 --- a/sig/line/bot/v2/channel_access_token/model/issue_stateless_channel_access_token_response.rbs +++ b/sig/line/bot/v2/channel_access_token/model/issue_stateless_channel_access_token_response.rbs @@ -23,6 +23,8 @@ module Line expires_in: Integer, token_type: String ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> IssueStatelessChannelAccessTokenResponse end end end diff --git a/sig/line/bot/v2/channel_access_token/model/verify_channel_access_token_response.rbs b/sig/line/bot/v2/channel_access_token/model/verify_channel_access_token_response.rbs index fa7b3a7e..33562a4c 100644 --- a/sig/line/bot/v2/channel_access_token/model/verify_channel_access_token_response.rbs +++ b/sig/line/bot/v2/channel_access_token/model/verify_channel_access_token_response.rbs @@ -22,6 +22,8 @@ module Line expires_in: Integer, scope: String? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> VerifyChannelAccessTokenResponse end end end diff --git a/sig/line/bot/v2/insight/model/age_tile.rbs b/sig/line/bot/v2/insight/model/age_tile.rbs index c776e167..4be4defa 100644 --- a/sig/line/bot/v2/insight/model/age_tile.rbs +++ b/sig/line/bot/v2/insight/model/age_tile.rbs @@ -19,6 +19,8 @@ module Line age: 'from0to14'|'from15to19'|'from20to24'|'from25to29'|'from30to34'|'from35to39'|'from40to44'|'from45to49'|'from50'|'from50to54'|'from55to59'|'from60to64'|'from65to69'|'from70'|'unknown'?, percentage: Float? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> AgeTile end end end diff --git a/sig/line/bot/v2/insight/model/app_type_tile.rbs b/sig/line/bot/v2/insight/model/app_type_tile.rbs index 066a49f3..485d06d9 100644 --- a/sig/line/bot/v2/insight/model/app_type_tile.rbs +++ b/sig/line/bot/v2/insight/model/app_type_tile.rbs @@ -19,6 +19,8 @@ module Line app_type: 'ios'|'android'|'others'?, percentage: Float? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> AppTypeTile end end end diff --git a/sig/line/bot/v2/insight/model/area_tile.rbs b/sig/line/bot/v2/insight/model/area_tile.rbs index 7ec0a10c..d4fd65aa 100644 --- a/sig/line/bot/v2/insight/model/area_tile.rbs +++ b/sig/line/bot/v2/insight/model/area_tile.rbs @@ -19,6 +19,8 @@ module Line area: String?, percentage: Float? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> AreaTile end end end diff --git a/sig/line/bot/v2/insight/model/error_detail.rbs b/sig/line/bot/v2/insight/model/error_detail.rbs index 3e816697..4193b304 100644 --- a/sig/line/bot/v2/insight/model/error_detail.rbs +++ b/sig/line/bot/v2/insight/model/error_detail.rbs @@ -19,6 +19,8 @@ module Line message: String?, property: String? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> ErrorDetail end end end diff --git a/sig/line/bot/v2/insight/model/error_response.rbs b/sig/line/bot/v2/insight/model/error_response.rbs index 5b757be5..3a46766d 100644 --- a/sig/line/bot/v2/insight/model/error_response.rbs +++ b/sig/line/bot/v2/insight/model/error_response.rbs @@ -20,6 +20,8 @@ module Line message: String, details: Array[ErrorDetail]? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> ErrorResponse end end end diff --git a/sig/line/bot/v2/insight/model/gender_tile.rbs b/sig/line/bot/v2/insight/model/gender_tile.rbs index 2d1d1a89..7d1a45ec 100644 --- a/sig/line/bot/v2/insight/model/gender_tile.rbs +++ b/sig/line/bot/v2/insight/model/gender_tile.rbs @@ -19,6 +19,8 @@ module Line gender: 'male'|'female'|'unknown'?, percentage: Float? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> GenderTile end end end diff --git a/sig/line/bot/v2/insight/model/get_friends_demographics_response.rbs b/sig/line/bot/v2/insight/model/get_friends_demographics_response.rbs index d1799a48..5ba1454c 100644 --- a/sig/line/bot/v2/insight/model/get_friends_demographics_response.rbs +++ b/sig/line/bot/v2/insight/model/get_friends_demographics_response.rbs @@ -29,6 +29,8 @@ module Line app_types: Array[AppTypeTile]?, subscription_periods: Array[SubscriptionPeriodTile]? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> GetFriendsDemographicsResponse end end end diff --git a/sig/line/bot/v2/insight/model/get_message_event_response.rbs b/sig/line/bot/v2/insight/model/get_message_event_response.rbs index 9cac0311..8de54eaf 100644 --- a/sig/line/bot/v2/insight/model/get_message_event_response.rbs +++ b/sig/line/bot/v2/insight/model/get_message_event_response.rbs @@ -23,6 +23,8 @@ module Line messages: Array[GetMessageEventResponseMessage]?, clicks: Array[GetMessageEventResponseClick]? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> GetMessageEventResponse end end end diff --git a/sig/line/bot/v2/insight/model/get_message_event_response_click.rbs b/sig/line/bot/v2/insight/model/get_message_event_response_click.rbs index 30721e16..2ae8167f 100644 --- a/sig/line/bot/v2/insight/model/get_message_event_response_click.rbs +++ b/sig/line/bot/v2/insight/model/get_message_event_response_click.rbs @@ -25,6 +25,8 @@ module Line unique_click: Integer?, unique_click_of_request: Integer? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> GetMessageEventResponseClick end end end diff --git a/sig/line/bot/v2/insight/model/get_message_event_response_message.rbs b/sig/line/bot/v2/insight/model/get_message_event_response_message.rbs index 5110fdec..b3ca9566 100644 --- a/sig/line/bot/v2/insight/model/get_message_event_response_message.rbs +++ b/sig/line/bot/v2/insight/model/get_message_event_response_message.rbs @@ -39,6 +39,8 @@ module Line unique_media_played75_percent: Integer?, unique_media_played100_percent: Integer? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> GetMessageEventResponseMessage end end end diff --git a/sig/line/bot/v2/insight/model/get_message_event_response_overview.rbs b/sig/line/bot/v2/insight/model/get_message_event_response_overview.rbs index b32213bd..527485d4 100644 --- a/sig/line/bot/v2/insight/model/get_message_event_response_overview.rbs +++ b/sig/line/bot/v2/insight/model/get_message_event_response_overview.rbs @@ -30,6 +30,8 @@ module Line unique_media_played: Integer?, unique_media_played100_percent: Integer? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> GetMessageEventResponseOverview end end end diff --git a/sig/line/bot/v2/insight/model/get_number_of_followers_response.rbs b/sig/line/bot/v2/insight/model/get_number_of_followers_response.rbs index 7b678fd8..27b81b46 100644 --- a/sig/line/bot/v2/insight/model/get_number_of_followers_response.rbs +++ b/sig/line/bot/v2/insight/model/get_number_of_followers_response.rbs @@ -25,6 +25,8 @@ module Line targeted_reaches: Integer?, blocks: Integer? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> GetNumberOfFollowersResponse end end end diff --git a/sig/line/bot/v2/insight/model/get_number_of_message_deliveries_response.rbs b/sig/line/bot/v2/insight/model/get_number_of_message_deliveries_response.rbs index d4e786a0..c2c8cdee 100644 --- a/sig/line/bot/v2/insight/model/get_number_of_message_deliveries_response.rbs +++ b/sig/line/bot/v2/insight/model/get_number_of_message_deliveries_response.rbs @@ -39,6 +39,8 @@ module Line api_narrowcast: Integer?, api_reply: Integer? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> GetNumberOfMessageDeliveriesResponse end end end diff --git a/sig/line/bot/v2/insight/model/get_statistics_per_unit_response.rbs b/sig/line/bot/v2/insight/model/get_statistics_per_unit_response.rbs index e793b9b2..94153d0a 100644 --- a/sig/line/bot/v2/insight/model/get_statistics_per_unit_response.rbs +++ b/sig/line/bot/v2/insight/model/get_statistics_per_unit_response.rbs @@ -23,6 +23,8 @@ module Line messages: Array[GetStatisticsPerUnitResponseMessage], clicks: Array[GetStatisticsPerUnitResponseClick] ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> GetStatisticsPerUnitResponse end end end diff --git a/sig/line/bot/v2/insight/model/get_statistics_per_unit_response_click.rbs b/sig/line/bot/v2/insight/model/get_statistics_per_unit_response_click.rbs index 0d734607..3da30cf1 100644 --- a/sig/line/bot/v2/insight/model/get_statistics_per_unit_response_click.rbs +++ b/sig/line/bot/v2/insight/model/get_statistics_per_unit_response_click.rbs @@ -26,6 +26,8 @@ module Line unique_click: Integer?, unique_click_of_request: Integer? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> GetStatisticsPerUnitResponseClick end end end diff --git a/sig/line/bot/v2/insight/model/get_statistics_per_unit_response_message.rbs b/sig/line/bot/v2/insight/model/get_statistics_per_unit_response_message.rbs index 7327d8dc..da735a71 100644 --- a/sig/line/bot/v2/insight/model/get_statistics_per_unit_response_message.rbs +++ b/sig/line/bot/v2/insight/model/get_statistics_per_unit_response_message.rbs @@ -42,6 +42,8 @@ module Line unique_media_played75_percent: Integer?, unique_media_played100_percent: Integer? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> GetStatisticsPerUnitResponseMessage end end end diff --git a/sig/line/bot/v2/insight/model/get_statistics_per_unit_response_overview.rbs b/sig/line/bot/v2/insight/model/get_statistics_per_unit_response_overview.rbs index a5975412..8b419464 100644 --- a/sig/line/bot/v2/insight/model/get_statistics_per_unit_response_overview.rbs +++ b/sig/line/bot/v2/insight/model/get_statistics_per_unit_response_overview.rbs @@ -25,6 +25,8 @@ module Line unique_media_played: Integer?, unique_media_played100_percent: Integer? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> GetStatisticsPerUnitResponseOverview end end end diff --git a/sig/line/bot/v2/insight/model/subscription_period_tile.rbs b/sig/line/bot/v2/insight/model/subscription_period_tile.rbs index af456eda..16607502 100644 --- a/sig/line/bot/v2/insight/model/subscription_period_tile.rbs +++ b/sig/line/bot/v2/insight/model/subscription_period_tile.rbs @@ -19,6 +19,8 @@ module Line subscription_period: 'within7days'|'within30days'|'within90days'|'within180days'|'within365days'|'over365days'|'unknown'?, percentage: Float? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> SubscriptionPeriodTile end end end diff --git a/sig/line/bot/v2/liff/model/add_liff_app_request.rbs b/sig/line/bot/v2/liff/model/add_liff_app_request.rbs index c14fbd7c..c9168c96 100644 --- a/sig/line/bot/v2/liff/model/add_liff_app_request.rbs +++ b/sig/line/bot/v2/liff/model/add_liff_app_request.rbs @@ -28,6 +28,8 @@ module Line scope: Array['openid'|'email'|'profile'|'chat_message.write']?, bot_prompt: 'normal'|'aggressive'|'none'? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> AddLiffAppRequest end end end diff --git a/sig/line/bot/v2/liff/model/add_liff_app_response.rbs b/sig/line/bot/v2/liff/model/add_liff_app_response.rbs index 2b0cbf1c..2234b764 100644 --- a/sig/line/bot/v2/liff/model/add_liff_app_response.rbs +++ b/sig/line/bot/v2/liff/model/add_liff_app_response.rbs @@ -17,6 +17,8 @@ module Line def initialize: ( liff_id: String ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> AddLiffAppResponse end end end diff --git a/sig/line/bot/v2/liff/model/get_all_liff_apps_response.rbs b/sig/line/bot/v2/liff/model/get_all_liff_apps_response.rbs index 3880f3e0..dccf6120 100644 --- a/sig/line/bot/v2/liff/model/get_all_liff_apps_response.rbs +++ b/sig/line/bot/v2/liff/model/get_all_liff_apps_response.rbs @@ -17,6 +17,8 @@ module Line def initialize: ( apps: Array[LiffApp]? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> GetAllLiffAppsResponse end end end diff --git a/sig/line/bot/v2/liff/model/liff_app.rbs b/sig/line/bot/v2/liff/model/liff_app.rbs index 1aa828bb..359fd306 100644 --- a/sig/line/bot/v2/liff/model/liff_app.rbs +++ b/sig/line/bot/v2/liff/model/liff_app.rbs @@ -29,6 +29,8 @@ module Line scope: Array['openid'|'email'|'profile'|'chat_message.write']?, bot_prompt: 'normal'|'aggressive'|'none'? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> LiffApp end end end diff --git a/sig/line/bot/v2/liff/model/liff_features.rbs b/sig/line/bot/v2/liff/model/liff_features.rbs index e928a9f7..5d06b715 100644 --- a/sig/line/bot/v2/liff/model/liff_features.rbs +++ b/sig/line/bot/v2/liff/model/liff_features.rbs @@ -19,6 +19,8 @@ module Line ble: bool?, qr_code: bool? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> LiffFeatures end end end diff --git a/sig/line/bot/v2/liff/model/liff_view.rbs b/sig/line/bot/v2/liff/model/liff_view.rbs index 7b919730..b79c10ea 100644 --- a/sig/line/bot/v2/liff/model/liff_view.rbs +++ b/sig/line/bot/v2/liff/model/liff_view.rbs @@ -22,6 +22,8 @@ module Line url: String, module_mode: bool? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> LiffView end end end diff --git a/sig/line/bot/v2/liff/model/update_liff_app_request.rbs b/sig/line/bot/v2/liff/model/update_liff_app_request.rbs index 4af72932..5cd9676a 100644 --- a/sig/line/bot/v2/liff/model/update_liff_app_request.rbs +++ b/sig/line/bot/v2/liff/model/update_liff_app_request.rbs @@ -28,6 +28,8 @@ module Line scope: Array['openid'|'email'|'profile'|'chat_message.write']?, bot_prompt: 'normal'|'aggressive'|'none'? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> UpdateLiffAppRequest end end end diff --git a/sig/line/bot/v2/liff/model/update_liff_view.rbs b/sig/line/bot/v2/liff/model/update_liff_view.rbs index d33c39ce..fc723a4c 100644 --- a/sig/line/bot/v2/liff/model/update_liff_view.rbs +++ b/sig/line/bot/v2/liff/model/update_liff_view.rbs @@ -22,6 +22,8 @@ module Line url: String?, module_mode: bool? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> UpdateLiffView end end end diff --git a/sig/line/bot/v2/manage_audience/model/adaccount.rbs b/sig/line/bot/v2/manage_audience/model/adaccount.rbs index 6b7e8d1f..97a334ae 100644 --- a/sig/line/bot/v2/manage_audience/model/adaccount.rbs +++ b/sig/line/bot/v2/manage_audience/model/adaccount.rbs @@ -18,6 +18,8 @@ module Line def initialize: ( name: String? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> Adaccount end end end diff --git a/sig/line/bot/v2/manage_audience/model/add_audience_to_audience_group_request.rbs b/sig/line/bot/v2/manage_audience/model/add_audience_to_audience_group_request.rbs index cad6d8fd..fd1280ff 100644 --- a/sig/line/bot/v2/manage_audience/model/add_audience_to_audience_group_request.rbs +++ b/sig/line/bot/v2/manage_audience/model/add_audience_to_audience_group_request.rbs @@ -23,6 +23,8 @@ module Line upload_description: String?, audiences: Array[Audience]? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> AddAudienceToAudienceGroupRequest end end end diff --git a/sig/line/bot/v2/manage_audience/model/audience.rbs b/sig/line/bot/v2/manage_audience/model/audience.rbs index 417d392e..773cacfb 100644 --- a/sig/line/bot/v2/manage_audience/model/audience.rbs +++ b/sig/line/bot/v2/manage_audience/model/audience.rbs @@ -18,6 +18,8 @@ module Line def initialize: ( id: String? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> Audience end end end diff --git a/sig/line/bot/v2/manage_audience/model/audience_group.rbs b/sig/line/bot/v2/manage_audience/model/audience_group.rbs index 8d1293a6..726d5b34 100644 --- a/sig/line/bot/v2/manage_audience/model/audience_group.rbs +++ b/sig/line/bot/v2/manage_audience/model/audience_group.rbs @@ -40,6 +40,8 @@ module Line permission: 'READ'|'READ_WRITE'?, create_route: 'OA_MANAGER'|'MESSAGING_API'|'POINT_AD'|'AD_MANAGER'? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> AudienceGroup end end end diff --git a/sig/line/bot/v2/manage_audience/model/audience_group_job.rbs b/sig/line/bot/v2/manage_audience/model/audience_group_job.rbs index 3e92c3f1..8f9b5c76 100644 --- a/sig/line/bot/v2/manage_audience/model/audience_group_job.rbs +++ b/sig/line/bot/v2/manage_audience/model/audience_group_job.rbs @@ -33,6 +33,8 @@ module Line audience_count: Integer?, created: Integer? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> AudienceGroupJob end end end diff --git a/sig/line/bot/v2/manage_audience/model/create_audience_group_request.rbs b/sig/line/bot/v2/manage_audience/model/create_audience_group_request.rbs index 19386d37..f001a84a 100644 --- a/sig/line/bot/v2/manage_audience/model/create_audience_group_request.rbs +++ b/sig/line/bot/v2/manage_audience/model/create_audience_group_request.rbs @@ -25,6 +25,8 @@ module Line upload_description: String?, audiences: Array[Audience]? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> CreateAudienceGroupRequest end end end diff --git a/sig/line/bot/v2/manage_audience/model/create_audience_group_response.rbs b/sig/line/bot/v2/manage_audience/model/create_audience_group_response.rbs index 156c9dff..a42a8019 100644 --- a/sig/line/bot/v2/manage_audience/model/create_audience_group_response.rbs +++ b/sig/line/bot/v2/manage_audience/model/create_audience_group_response.rbs @@ -33,6 +33,8 @@ module Line expire_timestamp: Float?, is_ifa_audience: bool? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> CreateAudienceGroupResponse end end end diff --git a/sig/line/bot/v2/manage_audience/model/create_click_based_audience_group_request.rbs b/sig/line/bot/v2/manage_audience/model/create_click_based_audience_group_request.rbs index 5e89843d..05eb71ad 100644 --- a/sig/line/bot/v2/manage_audience/model/create_click_based_audience_group_request.rbs +++ b/sig/line/bot/v2/manage_audience/model/create_click_based_audience_group_request.rbs @@ -23,6 +23,8 @@ module Line request_id: String?, click_url: String? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> CreateClickBasedAudienceGroupRequest end end end diff --git a/sig/line/bot/v2/manage_audience/model/create_click_based_audience_group_response.rbs b/sig/line/bot/v2/manage_audience/model/create_click_based_audience_group_response.rbs index 20667c79..ade7755f 100644 --- a/sig/line/bot/v2/manage_audience/model/create_click_based_audience_group_response.rbs +++ b/sig/line/bot/v2/manage_audience/model/create_click_based_audience_group_response.rbs @@ -37,6 +37,8 @@ module Line expire_timestamp: Integer?, is_ifa_audience: bool? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> CreateClickBasedAudienceGroupResponse end end end diff --git a/sig/line/bot/v2/manage_audience/model/create_imp_based_audience_group_request.rbs b/sig/line/bot/v2/manage_audience/model/create_imp_based_audience_group_request.rbs index 5753ed9f..8488f486 100644 --- a/sig/line/bot/v2/manage_audience/model/create_imp_based_audience_group_request.rbs +++ b/sig/line/bot/v2/manage_audience/model/create_imp_based_audience_group_request.rbs @@ -21,6 +21,8 @@ module Line description: String?, request_id: String? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> CreateImpBasedAudienceGroupRequest end end end diff --git a/sig/line/bot/v2/manage_audience/model/create_imp_based_audience_group_response.rbs b/sig/line/bot/v2/manage_audience/model/create_imp_based_audience_group_response.rbs index 2f7659f3..ccde813a 100644 --- a/sig/line/bot/v2/manage_audience/model/create_imp_based_audience_group_response.rbs +++ b/sig/line/bot/v2/manage_audience/model/create_imp_based_audience_group_response.rbs @@ -27,6 +27,8 @@ module Line created: Integer?, request_id: String? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> CreateImpBasedAudienceGroupResponse end end end diff --git a/sig/line/bot/v2/manage_audience/model/detailed_owner.rbs b/sig/line/bot/v2/manage_audience/model/detailed_owner.rbs index e379d0ed..6e70ed34 100644 --- a/sig/line/bot/v2/manage_audience/model/detailed_owner.rbs +++ b/sig/line/bot/v2/manage_audience/model/detailed_owner.rbs @@ -22,6 +22,8 @@ module Line id: String?, name: String? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> DetailedOwner end end end diff --git a/sig/line/bot/v2/manage_audience/model/error_detail.rbs b/sig/line/bot/v2/manage_audience/model/error_detail.rbs index b9838780..adadf298 100644 --- a/sig/line/bot/v2/manage_audience/model/error_detail.rbs +++ b/sig/line/bot/v2/manage_audience/model/error_detail.rbs @@ -19,6 +19,8 @@ module Line message: String?, property: String? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> ErrorDetail end end end diff --git a/sig/line/bot/v2/manage_audience/model/error_response.rbs b/sig/line/bot/v2/manage_audience/model/error_response.rbs index f476a15f..8befc0a0 100644 --- a/sig/line/bot/v2/manage_audience/model/error_response.rbs +++ b/sig/line/bot/v2/manage_audience/model/error_response.rbs @@ -20,6 +20,8 @@ module Line message: String, details: Array[ErrorDetail]? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> ErrorResponse end end end diff --git a/sig/line/bot/v2/manage_audience/model/get_audience_data_response.rbs b/sig/line/bot/v2/manage_audience/model/get_audience_data_response.rbs index 63d917c1..ebc7fa42 100644 --- a/sig/line/bot/v2/manage_audience/model/get_audience_data_response.rbs +++ b/sig/line/bot/v2/manage_audience/model/get_audience_data_response.rbs @@ -23,6 +23,8 @@ module Line jobs: Array[AudienceGroupJob]?, adaccount: Adaccount? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> GetAudienceDataResponse end end end diff --git a/sig/line/bot/v2/manage_audience/model/get_audience_group_authority_level_response.rbs b/sig/line/bot/v2/manage_audience/model/get_audience_group_authority_level_response.rbs index 768c1cfa..11398192 100644 --- a/sig/line/bot/v2/manage_audience/model/get_audience_group_authority_level_response.rbs +++ b/sig/line/bot/v2/manage_audience/model/get_audience_group_authority_level_response.rbs @@ -19,6 +19,8 @@ module Line def initialize: ( authority_level: 'PUBLIC'|'PRIVATE'? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> GetAudienceGroupAuthorityLevelResponse end end end diff --git a/sig/line/bot/v2/manage_audience/model/get_audience_groups_response.rbs b/sig/line/bot/v2/manage_audience/model/get_audience_groups_response.rbs index 59c9bb5f..530c9a33 100644 --- a/sig/line/bot/v2/manage_audience/model/get_audience_groups_response.rbs +++ b/sig/line/bot/v2/manage_audience/model/get_audience_groups_response.rbs @@ -29,6 +29,8 @@ module Line page: Integer?, size: Integer? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> GetAudienceGroupsResponse end end end diff --git a/sig/line/bot/v2/manage_audience/model/get_shared_audience_data_response.rbs b/sig/line/bot/v2/manage_audience/model/get_shared_audience_data_response.rbs index 19cca14c..01174144 100644 --- a/sig/line/bot/v2/manage_audience/model/get_shared_audience_data_response.rbs +++ b/sig/line/bot/v2/manage_audience/model/get_shared_audience_data_response.rbs @@ -23,6 +23,8 @@ module Line jobs: Array[AudienceGroupJob]?, owner: DetailedOwner? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> GetSharedAudienceDataResponse end end end diff --git a/sig/line/bot/v2/manage_audience/model/get_shared_audience_groups_response.rbs b/sig/line/bot/v2/manage_audience/model/get_shared_audience_groups_response.rbs index 05298617..b2d93b27 100644 --- a/sig/line/bot/v2/manage_audience/model/get_shared_audience_groups_response.rbs +++ b/sig/line/bot/v2/manage_audience/model/get_shared_audience_groups_response.rbs @@ -29,6 +29,8 @@ module Line page: Integer?, size: Integer? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> GetSharedAudienceGroupsResponse end end end diff --git a/sig/line/bot/v2/manage_audience/model/update_audience_group_authority_level_request.rbs b/sig/line/bot/v2/manage_audience/model/update_audience_group_authority_level_request.rbs index e1743685..2ae7a59d 100644 --- a/sig/line/bot/v2/manage_audience/model/update_audience_group_authority_level_request.rbs +++ b/sig/line/bot/v2/manage_audience/model/update_audience_group_authority_level_request.rbs @@ -19,6 +19,8 @@ module Line def initialize: ( authority_level: 'PUBLIC'|'PRIVATE'? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> UpdateAudienceGroupAuthorityLevelRequest end end end diff --git a/sig/line/bot/v2/manage_audience/model/update_audience_group_description_request.rbs b/sig/line/bot/v2/manage_audience/model/update_audience_group_description_request.rbs index c7658db6..deb4edeb 100644 --- a/sig/line/bot/v2/manage_audience/model/update_audience_group_description_request.rbs +++ b/sig/line/bot/v2/manage_audience/model/update_audience_group_description_request.rbs @@ -19,6 +19,8 @@ module Line def initialize: ( description: String? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> UpdateAudienceGroupDescriptionRequest end end end diff --git a/sig/line/bot/v2/messaging_api/model/action.rbs b/sig/line/bot/v2/messaging_api/model/action.rbs index 1f2adf0e..6dfe0a91 100644 --- a/sig/line/bot/v2/messaging_api/model/action.rbs +++ b/sig/line/bot/v2/messaging_api/model/action.rbs @@ -21,6 +21,12 @@ module Line type: String?, label: String? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> Action + + private + + def self.detect_class: (type: String) -> Class end end end diff --git a/sig/line/bot/v2/messaging_api/model/age_demographic_filter.rbs b/sig/line/bot/v2/messaging_api/model/age_demographic_filter.rbs index 75912835..08368775 100644 --- a/sig/line/bot/v2/messaging_api/model/age_demographic_filter.rbs +++ b/sig/line/bot/v2/messaging_api/model/age_demographic_filter.rbs @@ -20,6 +20,8 @@ module Line gte: 'age_15'|'age_20'|'age_25'|'age_30'|'age_35'|'age_40'|'age_45'|'age_50'|'age_55'|'age_60'|'age_65'|'age_70'?, lt: 'age_15'|'age_20'|'age_25'|'age_30'|'age_35'|'age_40'|'age_45'|'age_50'|'age_55'|'age_60'|'age_65'|'age_70'? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> AgeDemographicFilter end end end diff --git a/sig/line/bot/v2/messaging_api/model/all_mention_target.rbs b/sig/line/bot/v2/messaging_api/model/all_mention_target.rbs index a5522d3d..9816b011 100644 --- a/sig/line/bot/v2/messaging_api/model/all_mention_target.rbs +++ b/sig/line/bot/v2/messaging_api/model/all_mention_target.rbs @@ -18,6 +18,8 @@ module Line def initialize: ( ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> AllMentionTarget end end end diff --git a/sig/line/bot/v2/messaging_api/model/alt_uri.rbs b/sig/line/bot/v2/messaging_api/model/alt_uri.rbs index 93a821d3..612b1c08 100644 --- a/sig/line/bot/v2/messaging_api/model/alt_uri.rbs +++ b/sig/line/bot/v2/messaging_api/model/alt_uri.rbs @@ -17,6 +17,8 @@ module Line def initialize: ( desktop: String? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> AltUri end end end diff --git a/sig/line/bot/v2/messaging_api/model/app_type_demographic_filter.rbs b/sig/line/bot/v2/messaging_api/model/app_type_demographic_filter.rbs index 8a2188e9..d655b939 100644 --- a/sig/line/bot/v2/messaging_api/model/app_type_demographic_filter.rbs +++ b/sig/line/bot/v2/messaging_api/model/app_type_demographic_filter.rbs @@ -18,6 +18,8 @@ module Line def initialize: ( one_of: Array['ios'|'android']? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> AppTypeDemographicFilter end end end diff --git a/sig/line/bot/v2/messaging_api/model/area_demographic_filter.rbs b/sig/line/bot/v2/messaging_api/model/area_demographic_filter.rbs index a9295220..5f25fa73 100644 --- a/sig/line/bot/v2/messaging_api/model/area_demographic_filter.rbs +++ b/sig/line/bot/v2/messaging_api/model/area_demographic_filter.rbs @@ -18,6 +18,8 @@ module Line def initialize: ( one_of: Array['jp_01'|'jp_02'|'jp_03'|'jp_04'|'jp_05'|'jp_06'|'jp_07'|'jp_08'|'jp_09'|'jp_10'|'jp_11'|'jp_12'|'jp_13'|'jp_14'|'jp_15'|'jp_16'|'jp_17'|'jp_18'|'jp_19'|'jp_20'|'jp_21'|'jp_22'|'jp_23'|'jp_24'|'jp_25'|'jp_26'|'jp_27'|'jp_28'|'jp_29'|'jp_30'|'jp_31'|'jp_32'|'jp_33'|'jp_34'|'jp_35'|'jp_36'|'jp_37'|'jp_38'|'jp_39'|'jp_40'|'jp_41'|'jp_42'|'jp_43'|'jp_44'|'jp_45'|'jp_46'|'jp_47'|'tw_01'|'tw_02'|'tw_03'|'tw_04'|'tw_05'|'tw_06'|'tw_07'|'tw_08'|'tw_09'|'tw_10'|'tw_11'|'tw_12'|'tw_13'|'tw_14'|'tw_15'|'tw_16'|'tw_17'|'tw_18'|'tw_19'|'tw_20'|'tw_21'|'tw_22'|'th_01'|'th_02'|'th_03'|'th_04'|'th_05'|'th_06'|'th_07'|'th_08'|'id_01'|'id_02'|'id_03'|'id_04'|'id_05'|'id_06'|'id_07'|'id_08'|'id_09'|'id_10'|'id_11'|'id_12']? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> AreaDemographicFilter end end end diff --git a/sig/line/bot/v2/messaging_api/model/audience_recipient.rbs b/sig/line/bot/v2/messaging_api/model/audience_recipient.rbs index 049549ef..95d88c7d 100644 --- a/sig/line/bot/v2/messaging_api/model/audience_recipient.rbs +++ b/sig/line/bot/v2/messaging_api/model/audience_recipient.rbs @@ -18,6 +18,8 @@ module Line def initialize: ( audience_group_id: Integer? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> AudienceRecipient end end end diff --git a/sig/line/bot/v2/messaging_api/model/audio_message.rbs b/sig/line/bot/v2/messaging_api/model/audio_message.rbs index 58884263..301f0e79 100644 --- a/sig/line/bot/v2/messaging_api/model/audio_message.rbs +++ b/sig/line/bot/v2/messaging_api/model/audio_message.rbs @@ -25,6 +25,8 @@ module Line original_content_url: String, duration: Integer ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> AudioMessage end end end diff --git a/sig/line/bot/v2/messaging_api/model/bot_info_response.rbs b/sig/line/bot/v2/messaging_api/model/bot_info_response.rbs index adb6be6b..c87a08ae 100644 --- a/sig/line/bot/v2/messaging_api/model/bot_info_response.rbs +++ b/sig/line/bot/v2/messaging_api/model/bot_info_response.rbs @@ -30,6 +30,8 @@ module Line chat_mode: 'chat'|'bot', mark_as_read_mode: 'auto'|'manual' ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> BotInfoResponse end end end diff --git a/sig/line/bot/v2/messaging_api/model/broadcast_request.rbs b/sig/line/bot/v2/messaging_api/model/broadcast_request.rbs index a27dbc96..deac8320 100644 --- a/sig/line/bot/v2/messaging_api/model/broadcast_request.rbs +++ b/sig/line/bot/v2/messaging_api/model/broadcast_request.rbs @@ -20,6 +20,8 @@ module Line messages: Array[Message], notification_disabled: bool? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> BroadcastRequest end end end diff --git a/sig/line/bot/v2/messaging_api/model/buttons_template.rbs b/sig/line/bot/v2/messaging_api/model/buttons_template.rbs index f04ab5f6..99ac9bdb 100644 --- a/sig/line/bot/v2/messaging_api/model/buttons_template.rbs +++ b/sig/line/bot/v2/messaging_api/model/buttons_template.rbs @@ -32,6 +32,8 @@ module Line default_action: Action?, actions: Array[Action] ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> ButtonsTemplate end end end diff --git a/sig/line/bot/v2/messaging_api/model/camera_action.rbs b/sig/line/bot/v2/messaging_api/model/camera_action.rbs index 01712c42..10450f57 100644 --- a/sig/line/bot/v2/messaging_api/model/camera_action.rbs +++ b/sig/line/bot/v2/messaging_api/model/camera_action.rbs @@ -18,6 +18,8 @@ module Line def initialize: ( label: String? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> CameraAction end end end diff --git a/sig/line/bot/v2/messaging_api/model/camera_roll_action.rbs b/sig/line/bot/v2/messaging_api/model/camera_roll_action.rbs index 9df30df3..550b2b4a 100644 --- a/sig/line/bot/v2/messaging_api/model/camera_roll_action.rbs +++ b/sig/line/bot/v2/messaging_api/model/camera_roll_action.rbs @@ -18,6 +18,8 @@ module Line def initialize: ( label: String? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> CameraRollAction end end end diff --git a/sig/line/bot/v2/messaging_api/model/carousel_column.rbs b/sig/line/bot/v2/messaging_api/model/carousel_column.rbs index b760bd35..2a38d2ec 100644 --- a/sig/line/bot/v2/messaging_api/model/carousel_column.rbs +++ b/sig/line/bot/v2/messaging_api/model/carousel_column.rbs @@ -28,6 +28,8 @@ module Line default_action: Action?, actions: Array[Action] ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> CarouselColumn end end end diff --git a/sig/line/bot/v2/messaging_api/model/carousel_template.rbs b/sig/line/bot/v2/messaging_api/model/carousel_template.rbs index dddae23f..9ad6cae2 100644 --- a/sig/line/bot/v2/messaging_api/model/carousel_template.rbs +++ b/sig/line/bot/v2/messaging_api/model/carousel_template.rbs @@ -22,6 +22,8 @@ module Line image_aspect_ratio: String?, image_size: String? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> CarouselTemplate end end end diff --git a/sig/line/bot/v2/messaging_api/model/chat_reference.rbs b/sig/line/bot/v2/messaging_api/model/chat_reference.rbs index c77ec5b9..5f0ac016 100644 --- a/sig/line/bot/v2/messaging_api/model/chat_reference.rbs +++ b/sig/line/bot/v2/messaging_api/model/chat_reference.rbs @@ -19,6 +19,8 @@ module Line def initialize: ( user_id: String ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> ChatReference end end end diff --git a/sig/line/bot/v2/messaging_api/model/clipboard_action.rbs b/sig/line/bot/v2/messaging_api/model/clipboard_action.rbs index 934dc279..d48436e8 100644 --- a/sig/line/bot/v2/messaging_api/model/clipboard_action.rbs +++ b/sig/line/bot/v2/messaging_api/model/clipboard_action.rbs @@ -21,6 +21,8 @@ module Line label: String?, clipboard_text: String ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> ClipboardAction end end end diff --git a/sig/line/bot/v2/messaging_api/model/clipboard_imagemap_action.rbs b/sig/line/bot/v2/messaging_api/model/clipboard_imagemap_action.rbs index c7fc6a05..7f569d0d 100644 --- a/sig/line/bot/v2/messaging_api/model/clipboard_imagemap_action.rbs +++ b/sig/line/bot/v2/messaging_api/model/clipboard_imagemap_action.rbs @@ -23,6 +23,8 @@ module Line clipboard_text: String, label: String? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> ClipboardImagemapAction end end end diff --git a/sig/line/bot/v2/messaging_api/model/confirm_template.rbs b/sig/line/bot/v2/messaging_api/model/confirm_template.rbs index 9d0aca29..c9bd1b53 100644 --- a/sig/line/bot/v2/messaging_api/model/confirm_template.rbs +++ b/sig/line/bot/v2/messaging_api/model/confirm_template.rbs @@ -20,6 +20,8 @@ module Line text: String, actions: Array[Action] ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> ConfirmTemplate end end end diff --git a/sig/line/bot/v2/messaging_api/model/create_rich_menu_alias_request.rbs b/sig/line/bot/v2/messaging_api/model/create_rich_menu_alias_request.rbs index 73e8b8f2..0edf6e04 100644 --- a/sig/line/bot/v2/messaging_api/model/create_rich_menu_alias_request.rbs +++ b/sig/line/bot/v2/messaging_api/model/create_rich_menu_alias_request.rbs @@ -20,6 +20,8 @@ module Line rich_menu_alias_id: String, rich_menu_id: String ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> CreateRichMenuAliasRequest end end end diff --git a/sig/line/bot/v2/messaging_api/model/datetime_picker_action.rbs b/sig/line/bot/v2/messaging_api/model/datetime_picker_action.rbs index a423a688..30352666 100644 --- a/sig/line/bot/v2/messaging_api/model/datetime_picker_action.rbs +++ b/sig/line/bot/v2/messaging_api/model/datetime_picker_action.rbs @@ -29,6 +29,8 @@ module Line max: String?, min: String? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> DatetimePickerAction end end end diff --git a/sig/line/bot/v2/messaging_api/model/demographic_filter.rbs b/sig/line/bot/v2/messaging_api/model/demographic_filter.rbs index 2bcd58a6..c7b966e5 100644 --- a/sig/line/bot/v2/messaging_api/model/demographic_filter.rbs +++ b/sig/line/bot/v2/messaging_api/model/demographic_filter.rbs @@ -18,6 +18,12 @@ module Line def initialize: ( type: String? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> DemographicFilter + + private + + def self.detect_class: (type: String) -> Class end end end diff --git a/sig/line/bot/v2/messaging_api/model/emoji.rbs b/sig/line/bot/v2/messaging_api/model/emoji.rbs index 5538e9bd..96f43098 100644 --- a/sig/line/bot/v2/messaging_api/model/emoji.rbs +++ b/sig/line/bot/v2/messaging_api/model/emoji.rbs @@ -21,6 +21,8 @@ module Line product_id: String?, emoji_id: String? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> Emoji end end end diff --git a/sig/line/bot/v2/messaging_api/model/emoji_substitution_object.rbs b/sig/line/bot/v2/messaging_api/model/emoji_substitution_object.rbs index 5ff1a3ef..bb7bb327 100644 --- a/sig/line/bot/v2/messaging_api/model/emoji_substitution_object.rbs +++ b/sig/line/bot/v2/messaging_api/model/emoji_substitution_object.rbs @@ -22,6 +22,8 @@ module Line product_id: String, emoji_id: String ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> EmojiSubstitutionObject end end end diff --git a/sig/line/bot/v2/messaging_api/model/error_detail.rbs b/sig/line/bot/v2/messaging_api/model/error_detail.rbs index 143fde56..b833e6ac 100644 --- a/sig/line/bot/v2/messaging_api/model/error_detail.rbs +++ b/sig/line/bot/v2/messaging_api/model/error_detail.rbs @@ -19,6 +19,8 @@ module Line message: String?, property: String? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> ErrorDetail end end end diff --git a/sig/line/bot/v2/messaging_api/model/error_response.rbs b/sig/line/bot/v2/messaging_api/model/error_response.rbs index 467cd09c..88b95a09 100644 --- a/sig/line/bot/v2/messaging_api/model/error_response.rbs +++ b/sig/line/bot/v2/messaging_api/model/error_response.rbs @@ -22,6 +22,8 @@ module Line details: Array[ErrorDetail]?, sent_messages: Array[SentMessage]? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> ErrorResponse end end end diff --git a/sig/line/bot/v2/messaging_api/model/filter.rbs b/sig/line/bot/v2/messaging_api/model/filter.rbs index bd119a14..80466039 100644 --- a/sig/line/bot/v2/messaging_api/model/filter.rbs +++ b/sig/line/bot/v2/messaging_api/model/filter.rbs @@ -18,6 +18,8 @@ module Line def initialize: ( demographic: DemographicFilter? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> Filter end end end diff --git a/sig/line/bot/v2/messaging_api/model/flex_block_style.rbs b/sig/line/bot/v2/messaging_api/model/flex_block_style.rbs index a72dc353..812cfceb 100644 --- a/sig/line/bot/v2/messaging_api/model/flex_block_style.rbs +++ b/sig/line/bot/v2/messaging_api/model/flex_block_style.rbs @@ -21,6 +21,8 @@ module Line separator: bool?, separator_color: String? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> FlexBlockStyle end end end diff --git a/sig/line/bot/v2/messaging_api/model/flex_box.rbs b/sig/line/bot/v2/messaging_api/model/flex_box.rbs index 69beb533..4cae789f 100644 --- a/sig/line/bot/v2/messaging_api/model/flex_box.rbs +++ b/sig/line/bot/v2/messaging_api/model/flex_box.rbs @@ -70,6 +70,8 @@ module Line align_items: 'center'|'flex-start'|'flex-end'?, background: FlexBoxBackground? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> FlexBox end end end diff --git a/sig/line/bot/v2/messaging_api/model/flex_box_background.rbs b/sig/line/bot/v2/messaging_api/model/flex_box_background.rbs index a03f249d..48817b19 100644 --- a/sig/line/bot/v2/messaging_api/model/flex_box_background.rbs +++ b/sig/line/bot/v2/messaging_api/model/flex_box_background.rbs @@ -17,6 +17,12 @@ module Line def initialize: ( type: String ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> FlexBoxBackground + + private + + def self.detect_class: (type: String) -> Class end end end diff --git a/sig/line/bot/v2/messaging_api/model/flex_box_linear_gradient.rbs b/sig/line/bot/v2/messaging_api/model/flex_box_linear_gradient.rbs index af500499..2be46ac1 100644 --- a/sig/line/bot/v2/messaging_api/model/flex_box_linear_gradient.rbs +++ b/sig/line/bot/v2/messaging_api/model/flex_box_linear_gradient.rbs @@ -26,6 +26,8 @@ module Line center_color: String?, center_position: String? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> FlexBoxLinearGradient end end end diff --git a/sig/line/bot/v2/messaging_api/model/flex_bubble.rbs b/sig/line/bot/v2/messaging_api/model/flex_bubble.rbs index a5c7a577..4f7dfe2a 100644 --- a/sig/line/bot/v2/messaging_api/model/flex_bubble.rbs +++ b/sig/line/bot/v2/messaging_api/model/flex_bubble.rbs @@ -32,6 +32,8 @@ module Line size: 'nano'|'micro'|'deca'|'hecto'|'kilo'|'mega'|'giga'?, action: Action? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> FlexBubble end end end diff --git a/sig/line/bot/v2/messaging_api/model/flex_bubble_styles.rbs b/sig/line/bot/v2/messaging_api/model/flex_bubble_styles.rbs index 505b1ecd..585e3ad4 100644 --- a/sig/line/bot/v2/messaging_api/model/flex_bubble_styles.rbs +++ b/sig/line/bot/v2/messaging_api/model/flex_bubble_styles.rbs @@ -23,6 +23,8 @@ module Line body: FlexBlockStyle?, footer: FlexBlockStyle? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> FlexBubbleStyles end end end diff --git a/sig/line/bot/v2/messaging_api/model/flex_button.rbs b/sig/line/bot/v2/messaging_api/model/flex_button.rbs index 26869ef4..6c9ee6ac 100644 --- a/sig/line/bot/v2/messaging_api/model/flex_button.rbs +++ b/sig/line/bot/v2/messaging_api/model/flex_button.rbs @@ -44,6 +44,8 @@ module Line adjust_mode: 'shrink-to-fit'?, scaling: bool? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> FlexButton end end end diff --git a/sig/line/bot/v2/messaging_api/model/flex_carousel.rbs b/sig/line/bot/v2/messaging_api/model/flex_carousel.rbs index 44a8a953..d707d0b6 100644 --- a/sig/line/bot/v2/messaging_api/model/flex_carousel.rbs +++ b/sig/line/bot/v2/messaging_api/model/flex_carousel.rbs @@ -18,6 +18,8 @@ module Line def initialize: ( contents: Array[FlexBubble] ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> FlexCarousel end end end diff --git a/sig/line/bot/v2/messaging_api/model/flex_component.rbs b/sig/line/bot/v2/messaging_api/model/flex_component.rbs index 26cbb429..5226d4c5 100644 --- a/sig/line/bot/v2/messaging_api/model/flex_component.rbs +++ b/sig/line/bot/v2/messaging_api/model/flex_component.rbs @@ -17,6 +17,12 @@ module Line def initialize: ( type: String ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> FlexComponent + + private + + def self.detect_class: (type: String) -> Class end end end diff --git a/sig/line/bot/v2/messaging_api/model/flex_container.rbs b/sig/line/bot/v2/messaging_api/model/flex_container.rbs index b62b81fd..099aef04 100644 --- a/sig/line/bot/v2/messaging_api/model/flex_container.rbs +++ b/sig/line/bot/v2/messaging_api/model/flex_container.rbs @@ -17,6 +17,12 @@ module Line def initialize: ( type: String ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> FlexContainer + + private + + def self.detect_class: (type: String) -> Class end end end diff --git a/sig/line/bot/v2/messaging_api/model/flex_filler.rbs b/sig/line/bot/v2/messaging_api/model/flex_filler.rbs index 25ce9ceb..8e79cc79 100644 --- a/sig/line/bot/v2/messaging_api/model/flex_filler.rbs +++ b/sig/line/bot/v2/messaging_api/model/flex_filler.rbs @@ -18,6 +18,8 @@ module Line def initialize: ( flex: Integer? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> FlexFiller end end end diff --git a/sig/line/bot/v2/messaging_api/model/flex_icon.rbs b/sig/line/bot/v2/messaging_api/model/flex_icon.rbs index d59832f8..d7331599 100644 --- a/sig/line/bot/v2/messaging_api/model/flex_icon.rbs +++ b/sig/line/bot/v2/messaging_api/model/flex_icon.rbs @@ -37,6 +37,8 @@ module Line offset_end: String?, scaling: bool? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> FlexIcon end end end diff --git a/sig/line/bot/v2/messaging_api/model/flex_image.rbs b/sig/line/bot/v2/messaging_api/model/flex_image.rbs index 8251bc3a..9324a3ce 100644 --- a/sig/line/bot/v2/messaging_api/model/flex_image.rbs +++ b/sig/line/bot/v2/messaging_api/model/flex_image.rbs @@ -49,6 +49,8 @@ module Line action: Action?, animated: bool? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> FlexImage end end end diff --git a/sig/line/bot/v2/messaging_api/model/flex_message.rbs b/sig/line/bot/v2/messaging_api/model/flex_message.rbs index e8cda8e7..b7df8641 100644 --- a/sig/line/bot/v2/messaging_api/model/flex_message.rbs +++ b/sig/line/bot/v2/messaging_api/model/flex_message.rbs @@ -25,6 +25,8 @@ module Line alt_text: String, contents: FlexContainer ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> FlexMessage end end end diff --git a/sig/line/bot/v2/messaging_api/model/flex_separator.rbs b/sig/line/bot/v2/messaging_api/model/flex_separator.rbs index 3cd81bbf..f5459a8f 100644 --- a/sig/line/bot/v2/messaging_api/model/flex_separator.rbs +++ b/sig/line/bot/v2/messaging_api/model/flex_separator.rbs @@ -20,6 +20,8 @@ module Line margin: String?, color: String? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> FlexSeparator end end end diff --git a/sig/line/bot/v2/messaging_api/model/flex_span.rbs b/sig/line/bot/v2/messaging_api/model/flex_span.rbs index 0d2d3e4f..d131e1a7 100644 --- a/sig/line/bot/v2/messaging_api/model/flex_span.rbs +++ b/sig/line/bot/v2/messaging_api/model/flex_span.rbs @@ -28,6 +28,8 @@ module Line style: 'normal'|'italic'?, decoration: 'none'|'underline'|'line-through'? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> FlexSpan end end end diff --git a/sig/line/bot/v2/messaging_api/model/flex_text.rbs b/sig/line/bot/v2/messaging_api/model/flex_text.rbs index 90933558..36b1288e 100644 --- a/sig/line/bot/v2/messaging_api/model/flex_text.rbs +++ b/sig/line/bot/v2/messaging_api/model/flex_text.rbs @@ -60,6 +60,8 @@ module Line adjust_mode: 'shrink-to-fit'?, scaling: bool? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> FlexText end end end diff --git a/sig/line/bot/v2/messaging_api/model/flex_video.rbs b/sig/line/bot/v2/messaging_api/model/flex_video.rbs index 42a9c7e4..a004a42b 100644 --- a/sig/line/bot/v2/messaging_api/model/flex_video.rbs +++ b/sig/line/bot/v2/messaging_api/model/flex_video.rbs @@ -26,6 +26,8 @@ module Line aspect_ratio: String?, action: Action? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> FlexVideo end end end diff --git a/sig/line/bot/v2/messaging_api/model/gender_demographic_filter.rbs b/sig/line/bot/v2/messaging_api/model/gender_demographic_filter.rbs index c2bf15f0..2262d94d 100644 --- a/sig/line/bot/v2/messaging_api/model/gender_demographic_filter.rbs +++ b/sig/line/bot/v2/messaging_api/model/gender_demographic_filter.rbs @@ -18,6 +18,8 @@ module Line def initialize: ( one_of: Array['male'|'female']? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> GenderDemographicFilter end end end diff --git a/sig/line/bot/v2/messaging_api/model/get_aggregation_unit_name_list_response.rbs b/sig/line/bot/v2/messaging_api/model/get_aggregation_unit_name_list_response.rbs index aa79c86d..f552b770 100644 --- a/sig/line/bot/v2/messaging_api/model/get_aggregation_unit_name_list_response.rbs +++ b/sig/line/bot/v2/messaging_api/model/get_aggregation_unit_name_list_response.rbs @@ -20,6 +20,8 @@ module Line custom_aggregation_units: Array[String], _next: String? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> GetAggregationUnitNameListResponse end end end diff --git a/sig/line/bot/v2/messaging_api/model/get_aggregation_unit_usage_response.rbs b/sig/line/bot/v2/messaging_api/model/get_aggregation_unit_usage_response.rbs index 31ff3495..86d2d94c 100644 --- a/sig/line/bot/v2/messaging_api/model/get_aggregation_unit_usage_response.rbs +++ b/sig/line/bot/v2/messaging_api/model/get_aggregation_unit_usage_response.rbs @@ -18,6 +18,8 @@ module Line def initialize: ( num_of_custom_aggregation_units: Integer ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> GetAggregationUnitUsageResponse end end end diff --git a/sig/line/bot/v2/messaging_api/model/get_followers_response.rbs b/sig/line/bot/v2/messaging_api/model/get_followers_response.rbs index ef6224dc..f11ce08b 100644 --- a/sig/line/bot/v2/messaging_api/model/get_followers_response.rbs +++ b/sig/line/bot/v2/messaging_api/model/get_followers_response.rbs @@ -20,6 +20,8 @@ module Line user_ids: Array[String], _next: String? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> GetFollowersResponse end end end diff --git a/sig/line/bot/v2/messaging_api/model/get_joined_membership_users_response.rbs b/sig/line/bot/v2/messaging_api/model/get_joined_membership_users_response.rbs index c52093f4..d048e1d3 100644 --- a/sig/line/bot/v2/messaging_api/model/get_joined_membership_users_response.rbs +++ b/sig/line/bot/v2/messaging_api/model/get_joined_membership_users_response.rbs @@ -21,6 +21,8 @@ module Line user_ids: Array[String], _next: String? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> GetJoinedMembershipUsersResponse end end end diff --git a/sig/line/bot/v2/messaging_api/model/get_membership_subscription_response.rbs b/sig/line/bot/v2/messaging_api/model/get_membership_subscription_response.rbs index c9432ec2..6a9c7dbd 100644 --- a/sig/line/bot/v2/messaging_api/model/get_membership_subscription_response.rbs +++ b/sig/line/bot/v2/messaging_api/model/get_membership_subscription_response.rbs @@ -19,6 +19,8 @@ module Line def initialize: ( subscriptions: Array[Subscription] ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> GetMembershipSubscriptionResponse end end end diff --git a/sig/line/bot/v2/messaging_api/model/get_message_content_transcoding_response.rbs b/sig/line/bot/v2/messaging_api/model/get_message_content_transcoding_response.rbs index b4732de2..e05ae238 100644 --- a/sig/line/bot/v2/messaging_api/model/get_message_content_transcoding_response.rbs +++ b/sig/line/bot/v2/messaging_api/model/get_message_content_transcoding_response.rbs @@ -19,6 +19,8 @@ module Line def initialize: ( status: 'processing'|'succeeded'|'failed' ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> GetMessageContentTranscodingResponse end end end diff --git a/sig/line/bot/v2/messaging_api/model/get_webhook_endpoint_response.rbs b/sig/line/bot/v2/messaging_api/model/get_webhook_endpoint_response.rbs index b5a042a6..a53f676b 100644 --- a/sig/line/bot/v2/messaging_api/model/get_webhook_endpoint_response.rbs +++ b/sig/line/bot/v2/messaging_api/model/get_webhook_endpoint_response.rbs @@ -20,6 +20,8 @@ module Line endpoint: String, active: bool ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> GetWebhookEndpointResponse end end end diff --git a/sig/line/bot/v2/messaging_api/model/group_member_count_response.rbs b/sig/line/bot/v2/messaging_api/model/group_member_count_response.rbs index 386a0c84..fa0db363 100644 --- a/sig/line/bot/v2/messaging_api/model/group_member_count_response.rbs +++ b/sig/line/bot/v2/messaging_api/model/group_member_count_response.rbs @@ -18,6 +18,8 @@ module Line def initialize: ( count: Integer ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> GroupMemberCountResponse end end end diff --git a/sig/line/bot/v2/messaging_api/model/group_summary_response.rbs b/sig/line/bot/v2/messaging_api/model/group_summary_response.rbs index fd0834f5..a4b9b8dc 100644 --- a/sig/line/bot/v2/messaging_api/model/group_summary_response.rbs +++ b/sig/line/bot/v2/messaging_api/model/group_summary_response.rbs @@ -22,6 +22,8 @@ module Line group_name: String, picture_url: String? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> GroupSummaryResponse end end end diff --git a/sig/line/bot/v2/messaging_api/model/group_user_profile_response.rbs b/sig/line/bot/v2/messaging_api/model/group_user_profile_response.rbs index f0d90da9..3d74cf14 100644 --- a/sig/line/bot/v2/messaging_api/model/group_user_profile_response.rbs +++ b/sig/line/bot/v2/messaging_api/model/group_user_profile_response.rbs @@ -22,6 +22,8 @@ module Line user_id: String, picture_url: String? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> GroupUserProfileResponse end end end diff --git a/sig/line/bot/v2/messaging_api/model/image_carousel_column.rbs b/sig/line/bot/v2/messaging_api/model/image_carousel_column.rbs index c1bb01bf..602e332f 100644 --- a/sig/line/bot/v2/messaging_api/model/image_carousel_column.rbs +++ b/sig/line/bot/v2/messaging_api/model/image_carousel_column.rbs @@ -19,6 +19,8 @@ module Line image_url: String, action: Action ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> ImageCarouselColumn end end end diff --git a/sig/line/bot/v2/messaging_api/model/image_carousel_template.rbs b/sig/line/bot/v2/messaging_api/model/image_carousel_template.rbs index d1e8dd8a..ac9b15d9 100644 --- a/sig/line/bot/v2/messaging_api/model/image_carousel_template.rbs +++ b/sig/line/bot/v2/messaging_api/model/image_carousel_template.rbs @@ -18,6 +18,8 @@ module Line def initialize: ( columns: Array[ImageCarouselColumn] ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> ImageCarouselTemplate end end end diff --git a/sig/line/bot/v2/messaging_api/model/image_message.rbs b/sig/line/bot/v2/messaging_api/model/image_message.rbs index f40548de..d306b0fc 100644 --- a/sig/line/bot/v2/messaging_api/model/image_message.rbs +++ b/sig/line/bot/v2/messaging_api/model/image_message.rbs @@ -25,6 +25,8 @@ module Line original_content_url: String, preview_image_url: String ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> ImageMessage end end end diff --git a/sig/line/bot/v2/messaging_api/model/imagemap_action.rbs b/sig/line/bot/v2/messaging_api/model/imagemap_action.rbs index cafc7a2d..f5748486 100644 --- a/sig/line/bot/v2/messaging_api/model/imagemap_action.rbs +++ b/sig/line/bot/v2/messaging_api/model/imagemap_action.rbs @@ -20,6 +20,12 @@ module Line type: String, area: ImagemapArea ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> ImagemapAction + + private + + def self.detect_class: (type: String) -> Class end end end diff --git a/sig/line/bot/v2/messaging_api/model/imagemap_area.rbs b/sig/line/bot/v2/messaging_api/model/imagemap_area.rbs index b10daffd..09ad3315 100644 --- a/sig/line/bot/v2/messaging_api/model/imagemap_area.rbs +++ b/sig/line/bot/v2/messaging_api/model/imagemap_area.rbs @@ -23,6 +23,8 @@ module Line width: Integer, height: Integer ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> ImagemapArea end end end diff --git a/sig/line/bot/v2/messaging_api/model/imagemap_base_size.rbs b/sig/line/bot/v2/messaging_api/model/imagemap_base_size.rbs index e8d02d82..760976ab 100644 --- a/sig/line/bot/v2/messaging_api/model/imagemap_base_size.rbs +++ b/sig/line/bot/v2/messaging_api/model/imagemap_base_size.rbs @@ -19,6 +19,8 @@ module Line height: Integer, width: Integer ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> ImagemapBaseSize end end end diff --git a/sig/line/bot/v2/messaging_api/model/imagemap_external_link.rbs b/sig/line/bot/v2/messaging_api/model/imagemap_external_link.rbs index 340f6fbb..7a9e8673 100644 --- a/sig/line/bot/v2/messaging_api/model/imagemap_external_link.rbs +++ b/sig/line/bot/v2/messaging_api/model/imagemap_external_link.rbs @@ -19,6 +19,8 @@ module Line link_uri: String?, label: String? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> ImagemapExternalLink end end end diff --git a/sig/line/bot/v2/messaging_api/model/imagemap_message.rbs b/sig/line/bot/v2/messaging_api/model/imagemap_message.rbs index 165582a9..a533d65b 100644 --- a/sig/line/bot/v2/messaging_api/model/imagemap_message.rbs +++ b/sig/line/bot/v2/messaging_api/model/imagemap_message.rbs @@ -31,6 +31,8 @@ module Line actions: Array[ImagemapAction], video: ImagemapVideo? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> ImagemapMessage end end end diff --git a/sig/line/bot/v2/messaging_api/model/imagemap_video.rbs b/sig/line/bot/v2/messaging_api/model/imagemap_video.rbs index 27892d8e..b0171972 100644 --- a/sig/line/bot/v2/messaging_api/model/imagemap_video.rbs +++ b/sig/line/bot/v2/messaging_api/model/imagemap_video.rbs @@ -23,6 +23,8 @@ module Line area: ImagemapArea?, external_link: ImagemapExternalLink? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> ImagemapVideo end end end diff --git a/sig/line/bot/v2/messaging_api/model/issue_link_token_response.rbs b/sig/line/bot/v2/messaging_api/model/issue_link_token_response.rbs index e53f18cb..f13eb0a2 100644 --- a/sig/line/bot/v2/messaging_api/model/issue_link_token_response.rbs +++ b/sig/line/bot/v2/messaging_api/model/issue_link_token_response.rbs @@ -18,6 +18,8 @@ module Line def initialize: ( link_token: String ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> IssueLinkTokenResponse end end end diff --git a/sig/line/bot/v2/messaging_api/model/limit.rbs b/sig/line/bot/v2/messaging_api/model/limit.rbs index 3ca781c9..72f59906 100644 --- a/sig/line/bot/v2/messaging_api/model/limit.rbs +++ b/sig/line/bot/v2/messaging_api/model/limit.rbs @@ -21,6 +21,8 @@ module Line max: Integer?, up_to_remaining_quota: bool? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> Limit end end end diff --git a/sig/line/bot/v2/messaging_api/model/location_action.rbs b/sig/line/bot/v2/messaging_api/model/location_action.rbs index 754c7182..882a401f 100644 --- a/sig/line/bot/v2/messaging_api/model/location_action.rbs +++ b/sig/line/bot/v2/messaging_api/model/location_action.rbs @@ -18,6 +18,8 @@ module Line def initialize: ( label: String? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> LocationAction end end end diff --git a/sig/line/bot/v2/messaging_api/model/location_message.rbs b/sig/line/bot/v2/messaging_api/model/location_message.rbs index 93319cc3..6f7b4ee6 100644 --- a/sig/line/bot/v2/messaging_api/model/location_message.rbs +++ b/sig/line/bot/v2/messaging_api/model/location_message.rbs @@ -29,6 +29,8 @@ module Line latitude: Float, longitude: Float ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> LocationMessage end end end diff --git a/sig/line/bot/v2/messaging_api/model/mark_messages_as_read_request.rbs b/sig/line/bot/v2/messaging_api/model/mark_messages_as_read_request.rbs index 2704c905..db159558 100644 --- a/sig/line/bot/v2/messaging_api/model/mark_messages_as_read_request.rbs +++ b/sig/line/bot/v2/messaging_api/model/mark_messages_as_read_request.rbs @@ -18,6 +18,8 @@ module Line def initialize: ( chat: ChatReference ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> MarkMessagesAsReadRequest end end end diff --git a/sig/line/bot/v2/messaging_api/model/members_ids_response.rbs b/sig/line/bot/v2/messaging_api/model/members_ids_response.rbs index 722e4034..170a23e3 100644 --- a/sig/line/bot/v2/messaging_api/model/members_ids_response.rbs +++ b/sig/line/bot/v2/messaging_api/model/members_ids_response.rbs @@ -19,6 +19,8 @@ module Line member_ids: Array[String], _next: String? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> MembersIdsResponse end end end diff --git a/sig/line/bot/v2/messaging_api/model/membership.rbs b/sig/line/bot/v2/messaging_api/model/membership.rbs index 0bf7631b..cb8c122a 100644 --- a/sig/line/bot/v2/messaging_api/model/membership.rbs +++ b/sig/line/bot/v2/messaging_api/model/membership.rbs @@ -35,6 +35,8 @@ module Line is_in_app_purchase: bool, is_published: bool ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> Membership end end end diff --git a/sig/line/bot/v2/messaging_api/model/membership_list_response.rbs b/sig/line/bot/v2/messaging_api/model/membership_list_response.rbs index 2c4d44f5..8f24cdfc 100644 --- a/sig/line/bot/v2/messaging_api/model/membership_list_response.rbs +++ b/sig/line/bot/v2/messaging_api/model/membership_list_response.rbs @@ -18,6 +18,8 @@ module Line def initialize: ( memberships: Array[Membership] ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> MembershipListResponse end end end diff --git a/sig/line/bot/v2/messaging_api/model/mention_substitution_object.rbs b/sig/line/bot/v2/messaging_api/model/mention_substitution_object.rbs index 1160c095..892779f6 100644 --- a/sig/line/bot/v2/messaging_api/model/mention_substitution_object.rbs +++ b/sig/line/bot/v2/messaging_api/model/mention_substitution_object.rbs @@ -20,6 +20,8 @@ module Line def initialize: ( mentionee: MentionTarget ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> MentionSubstitutionObject end end end diff --git a/sig/line/bot/v2/messaging_api/model/mention_target.rbs b/sig/line/bot/v2/messaging_api/model/mention_target.rbs index 4add65da..126c28e1 100644 --- a/sig/line/bot/v2/messaging_api/model/mention_target.rbs +++ b/sig/line/bot/v2/messaging_api/model/mention_target.rbs @@ -17,6 +17,12 @@ module Line def initialize: ( type: String ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> MentionTarget + + private + + def self.detect_class: (type: String) -> Class end end end diff --git a/sig/line/bot/v2/messaging_api/model/message.rbs b/sig/line/bot/v2/messaging_api/model/message.rbs index 757667a7..766c2df6 100644 --- a/sig/line/bot/v2/messaging_api/model/message.rbs +++ b/sig/line/bot/v2/messaging_api/model/message.rbs @@ -22,6 +22,12 @@ module Line quick_reply: QuickReply?, sender: Sender? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> Message + + private + + def self.detect_class: (type: String) -> Class end end end diff --git a/sig/line/bot/v2/messaging_api/model/message_action.rbs b/sig/line/bot/v2/messaging_api/model/message_action.rbs index 7bb262af..94e4c677 100644 --- a/sig/line/bot/v2/messaging_api/model/message_action.rbs +++ b/sig/line/bot/v2/messaging_api/model/message_action.rbs @@ -20,6 +20,8 @@ module Line label: String?, text: String? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> MessageAction end end end diff --git a/sig/line/bot/v2/messaging_api/model/message_imagemap_action.rbs b/sig/line/bot/v2/messaging_api/model/message_imagemap_action.rbs index 0a59f223..78c861ba 100644 --- a/sig/line/bot/v2/messaging_api/model/message_imagemap_action.rbs +++ b/sig/line/bot/v2/messaging_api/model/message_imagemap_action.rbs @@ -22,6 +22,8 @@ module Line text: String, label: String? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> MessageImagemapAction end end end diff --git a/sig/line/bot/v2/messaging_api/model/message_quota_response.rbs b/sig/line/bot/v2/messaging_api/model/message_quota_response.rbs index 2777a6ce..4a69c91e 100644 --- a/sig/line/bot/v2/messaging_api/model/message_quota_response.rbs +++ b/sig/line/bot/v2/messaging_api/model/message_quota_response.rbs @@ -20,6 +20,8 @@ module Line type: 'none'|'limited', value: Integer? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> MessageQuotaResponse end end end diff --git a/sig/line/bot/v2/messaging_api/model/multicast_request.rbs b/sig/line/bot/v2/messaging_api/model/multicast_request.rbs index db07ecc1..722a0b43 100644 --- a/sig/line/bot/v2/messaging_api/model/multicast_request.rbs +++ b/sig/line/bot/v2/messaging_api/model/multicast_request.rbs @@ -24,6 +24,8 @@ module Line notification_disabled: bool?, custom_aggregation_units: Array[String]? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> MulticastRequest end end end diff --git a/sig/line/bot/v2/messaging_api/model/narrowcast_progress_response.rbs b/sig/line/bot/v2/messaging_api/model/narrowcast_progress_response.rbs index 0150fd42..e1497bd2 100644 --- a/sig/line/bot/v2/messaging_api/model/narrowcast_progress_response.rbs +++ b/sig/line/bot/v2/messaging_api/model/narrowcast_progress_response.rbs @@ -32,6 +32,8 @@ module Line accepted_time: String, completed_time: String? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> NarrowcastProgressResponse end end end diff --git a/sig/line/bot/v2/messaging_api/model/narrowcast_request.rbs b/sig/line/bot/v2/messaging_api/model/narrowcast_request.rbs index f2a2b5e4..0927edc8 100644 --- a/sig/line/bot/v2/messaging_api/model/narrowcast_request.rbs +++ b/sig/line/bot/v2/messaging_api/model/narrowcast_request.rbs @@ -26,6 +26,8 @@ module Line limit: Limit?, notification_disabled: bool? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> NarrowcastRequest end end end diff --git a/sig/line/bot/v2/messaging_api/model/number_of_messages_response.rbs b/sig/line/bot/v2/messaging_api/model/number_of_messages_response.rbs index 9aceb171..33c53d38 100644 --- a/sig/line/bot/v2/messaging_api/model/number_of_messages_response.rbs +++ b/sig/line/bot/v2/messaging_api/model/number_of_messages_response.rbs @@ -19,6 +19,8 @@ module Line status: 'ready'|'unready'|'unavailable_for_privacy'|'out_of_service', success: Integer? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> NumberOfMessagesResponse end end end diff --git a/sig/line/bot/v2/messaging_api/model/operator_demographic_filter.rbs b/sig/line/bot/v2/messaging_api/model/operator_demographic_filter.rbs index b59301b8..671f5f9d 100644 --- a/sig/line/bot/v2/messaging_api/model/operator_demographic_filter.rbs +++ b/sig/line/bot/v2/messaging_api/model/operator_demographic_filter.rbs @@ -22,6 +22,8 @@ module Line _or: Array[DemographicFilter]?, _not: DemographicFilter? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> OperatorDemographicFilter end end end diff --git a/sig/line/bot/v2/messaging_api/model/operator_recipient.rbs b/sig/line/bot/v2/messaging_api/model/operator_recipient.rbs index a94f980f..deadf89c 100644 --- a/sig/line/bot/v2/messaging_api/model/operator_recipient.rbs +++ b/sig/line/bot/v2/messaging_api/model/operator_recipient.rbs @@ -22,6 +22,8 @@ module Line _or: Array[Recipient]?, _not: Recipient? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> OperatorRecipient end end end diff --git a/sig/line/bot/v2/messaging_api/model/pnp_messages_request.rbs b/sig/line/bot/v2/messaging_api/model/pnp_messages_request.rbs index 2c4bbed6..3c16aa4e 100644 --- a/sig/line/bot/v2/messaging_api/model/pnp_messages_request.rbs +++ b/sig/line/bot/v2/messaging_api/model/pnp_messages_request.rbs @@ -22,6 +22,8 @@ module Line to: String, notification_disabled: bool? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> PnpMessagesRequest end end end diff --git a/sig/line/bot/v2/messaging_api/model/postback_action.rbs b/sig/line/bot/v2/messaging_api/model/postback_action.rbs index 9f4b8d44..f07ea414 100644 --- a/sig/line/bot/v2/messaging_api/model/postback_action.rbs +++ b/sig/line/bot/v2/messaging_api/model/postback_action.rbs @@ -28,6 +28,8 @@ module Line input_option: 'closeRichMenu'|'openRichMenu'|'openKeyboard'|'openVoice'?, fill_in_text: String? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> PostbackAction end end end diff --git a/sig/line/bot/v2/messaging_api/model/push_message_request.rbs b/sig/line/bot/v2/messaging_api/model/push_message_request.rbs index 5b34e147..c0de6132 100644 --- a/sig/line/bot/v2/messaging_api/model/push_message_request.rbs +++ b/sig/line/bot/v2/messaging_api/model/push_message_request.rbs @@ -24,6 +24,8 @@ module Line notification_disabled: bool?, custom_aggregation_units: Array[String]? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> PushMessageRequest end end end diff --git a/sig/line/bot/v2/messaging_api/model/push_message_response.rbs b/sig/line/bot/v2/messaging_api/model/push_message_response.rbs index 1bcfe6d2..d835f2e0 100644 --- a/sig/line/bot/v2/messaging_api/model/push_message_response.rbs +++ b/sig/line/bot/v2/messaging_api/model/push_message_response.rbs @@ -18,6 +18,8 @@ module Line def initialize: ( sent_messages: Array[SentMessage] ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> PushMessageResponse end end end diff --git a/sig/line/bot/v2/messaging_api/model/quick_reply.rbs b/sig/line/bot/v2/messaging_api/model/quick_reply.rbs index 48cedf45..71dc03bc 100644 --- a/sig/line/bot/v2/messaging_api/model/quick_reply.rbs +++ b/sig/line/bot/v2/messaging_api/model/quick_reply.rbs @@ -19,6 +19,8 @@ module Line def initialize: ( items: Array[QuickReplyItem]? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> QuickReply end end end diff --git a/sig/line/bot/v2/messaging_api/model/quick_reply_item.rbs b/sig/line/bot/v2/messaging_api/model/quick_reply_item.rbs index e3f57b5e..d6d8d50f 100644 --- a/sig/line/bot/v2/messaging_api/model/quick_reply_item.rbs +++ b/sig/line/bot/v2/messaging_api/model/quick_reply_item.rbs @@ -22,6 +22,8 @@ module Line action: Action?, type: String? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> QuickReplyItem end end end diff --git a/sig/line/bot/v2/messaging_api/model/quota_consumption_response.rbs b/sig/line/bot/v2/messaging_api/model/quota_consumption_response.rbs index 71224f68..8f8a086a 100644 --- a/sig/line/bot/v2/messaging_api/model/quota_consumption_response.rbs +++ b/sig/line/bot/v2/messaging_api/model/quota_consumption_response.rbs @@ -18,6 +18,8 @@ module Line def initialize: ( total_usage: Integer ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> QuotaConsumptionResponse end end end diff --git a/sig/line/bot/v2/messaging_api/model/recipient.rbs b/sig/line/bot/v2/messaging_api/model/recipient.rbs index 3a903754..7e750adf 100644 --- a/sig/line/bot/v2/messaging_api/model/recipient.rbs +++ b/sig/line/bot/v2/messaging_api/model/recipient.rbs @@ -18,6 +18,12 @@ module Line def initialize: ( type: String? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> Recipient + + private + + def self.detect_class: (type: String) -> Class end end end diff --git a/sig/line/bot/v2/messaging_api/model/redelivery_recipient.rbs b/sig/line/bot/v2/messaging_api/model/redelivery_recipient.rbs index a8cdbf06..fc4567da 100644 --- a/sig/line/bot/v2/messaging_api/model/redelivery_recipient.rbs +++ b/sig/line/bot/v2/messaging_api/model/redelivery_recipient.rbs @@ -18,6 +18,8 @@ module Line def initialize: ( request_id: String? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> RedeliveryRecipient end end end diff --git a/sig/line/bot/v2/messaging_api/model/reply_message_request.rbs b/sig/line/bot/v2/messaging_api/model/reply_message_request.rbs index e0a4dd9c..1560b117 100644 --- a/sig/line/bot/v2/messaging_api/model/reply_message_request.rbs +++ b/sig/line/bot/v2/messaging_api/model/reply_message_request.rbs @@ -22,6 +22,8 @@ module Line messages: Array[Message], notification_disabled: bool? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> ReplyMessageRequest end end end diff --git a/sig/line/bot/v2/messaging_api/model/reply_message_response.rbs b/sig/line/bot/v2/messaging_api/model/reply_message_response.rbs index 743a3b3a..65dd9cbd 100644 --- a/sig/line/bot/v2/messaging_api/model/reply_message_response.rbs +++ b/sig/line/bot/v2/messaging_api/model/reply_message_response.rbs @@ -18,6 +18,8 @@ module Line def initialize: ( sent_messages: Array[SentMessage] ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> ReplyMessageResponse end end end diff --git a/sig/line/bot/v2/messaging_api/model/rich_menu_alias_list_response.rbs b/sig/line/bot/v2/messaging_api/model/rich_menu_alias_list_response.rbs index c3288b2a..62365ddf 100644 --- a/sig/line/bot/v2/messaging_api/model/rich_menu_alias_list_response.rbs +++ b/sig/line/bot/v2/messaging_api/model/rich_menu_alias_list_response.rbs @@ -18,6 +18,8 @@ module Line def initialize: ( aliases: Array[RichMenuAliasResponse] ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> RichMenuAliasListResponse end end end diff --git a/sig/line/bot/v2/messaging_api/model/rich_menu_alias_response.rbs b/sig/line/bot/v2/messaging_api/model/rich_menu_alias_response.rbs index 044276dd..3fe4ec9b 100644 --- a/sig/line/bot/v2/messaging_api/model/rich_menu_alias_response.rbs +++ b/sig/line/bot/v2/messaging_api/model/rich_menu_alias_response.rbs @@ -19,6 +19,8 @@ module Line rich_menu_alias_id: String, rich_menu_id: String ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> RichMenuAliasResponse end end end diff --git a/sig/line/bot/v2/messaging_api/model/rich_menu_area.rbs b/sig/line/bot/v2/messaging_api/model/rich_menu_area.rbs index 6b59bdf4..449306eb 100644 --- a/sig/line/bot/v2/messaging_api/model/rich_menu_area.rbs +++ b/sig/line/bot/v2/messaging_api/model/rich_menu_area.rbs @@ -20,6 +20,8 @@ module Line bounds: RichMenuBounds?, action: Action? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> RichMenuArea end end end diff --git a/sig/line/bot/v2/messaging_api/model/rich_menu_batch_link_operation.rbs b/sig/line/bot/v2/messaging_api/model/rich_menu_batch_link_operation.rbs index 760ccc6c..e5dcd1ff 100644 --- a/sig/line/bot/v2/messaging_api/model/rich_menu_batch_link_operation.rbs +++ b/sig/line/bot/v2/messaging_api/model/rich_menu_batch_link_operation.rbs @@ -21,6 +21,8 @@ module Line from: String, to: String ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> RichMenuBatchLinkOperation end end end diff --git a/sig/line/bot/v2/messaging_api/model/rich_menu_batch_operation.rbs b/sig/line/bot/v2/messaging_api/model/rich_menu_batch_operation.rbs index faa8f19c..a23be490 100644 --- a/sig/line/bot/v2/messaging_api/model/rich_menu_batch_operation.rbs +++ b/sig/line/bot/v2/messaging_api/model/rich_menu_batch_operation.rbs @@ -19,6 +19,12 @@ module Line def initialize: ( type: String ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> RichMenuBatchOperation + + private + + def self.detect_class: (type: String) -> Class end end end diff --git a/sig/line/bot/v2/messaging_api/model/rich_menu_batch_progress_response.rbs b/sig/line/bot/v2/messaging_api/model/rich_menu_batch_progress_response.rbs index 6c70d04a..4e2b98ac 100644 --- a/sig/line/bot/v2/messaging_api/model/rich_menu_batch_progress_response.rbs +++ b/sig/line/bot/v2/messaging_api/model/rich_menu_batch_progress_response.rbs @@ -22,6 +22,8 @@ module Line accepted_time: String, completed_time: String? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> RichMenuBatchProgressResponse end end end diff --git a/sig/line/bot/v2/messaging_api/model/rich_menu_batch_request.rbs b/sig/line/bot/v2/messaging_api/model/rich_menu_batch_request.rbs index 8c30d02d..b13c43c8 100644 --- a/sig/line/bot/v2/messaging_api/model/rich_menu_batch_request.rbs +++ b/sig/line/bot/v2/messaging_api/model/rich_menu_batch_request.rbs @@ -19,6 +19,8 @@ module Line operations: Array[RichMenuBatchOperation], resume_request_key: String? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> RichMenuBatchRequest end end end diff --git a/sig/line/bot/v2/messaging_api/model/rich_menu_batch_unlink_all_operation.rbs b/sig/line/bot/v2/messaging_api/model/rich_menu_batch_unlink_all_operation.rbs index cd03964e..f80c7594 100644 --- a/sig/line/bot/v2/messaging_api/model/rich_menu_batch_unlink_all_operation.rbs +++ b/sig/line/bot/v2/messaging_api/model/rich_menu_batch_unlink_all_operation.rbs @@ -18,6 +18,8 @@ module Line def initialize: ( ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> RichMenuBatchUnlinkAllOperation end end end diff --git a/sig/line/bot/v2/messaging_api/model/rich_menu_batch_unlink_operation.rbs b/sig/line/bot/v2/messaging_api/model/rich_menu_batch_unlink_operation.rbs index e964f54f..4024edbd 100644 --- a/sig/line/bot/v2/messaging_api/model/rich_menu_batch_unlink_operation.rbs +++ b/sig/line/bot/v2/messaging_api/model/rich_menu_batch_unlink_operation.rbs @@ -19,6 +19,8 @@ module Line def initialize: ( from: String ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> RichMenuBatchUnlinkOperation end end end diff --git a/sig/line/bot/v2/messaging_api/model/rich_menu_bounds.rbs b/sig/line/bot/v2/messaging_api/model/rich_menu_bounds.rbs index 2e378a46..488c9643 100644 --- a/sig/line/bot/v2/messaging_api/model/rich_menu_bounds.rbs +++ b/sig/line/bot/v2/messaging_api/model/rich_menu_bounds.rbs @@ -25,6 +25,8 @@ module Line width: Integer?, height: Integer? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> RichMenuBounds end end end diff --git a/sig/line/bot/v2/messaging_api/model/rich_menu_bulk_link_request.rbs b/sig/line/bot/v2/messaging_api/model/rich_menu_bulk_link_request.rbs index e389d21d..14ad825d 100644 --- a/sig/line/bot/v2/messaging_api/model/rich_menu_bulk_link_request.rbs +++ b/sig/line/bot/v2/messaging_api/model/rich_menu_bulk_link_request.rbs @@ -20,6 +20,8 @@ module Line rich_menu_id: String, user_ids: Array[String] ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> RichMenuBulkLinkRequest end end end diff --git a/sig/line/bot/v2/messaging_api/model/rich_menu_bulk_unlink_request.rbs b/sig/line/bot/v2/messaging_api/model/rich_menu_bulk_unlink_request.rbs index a85a857c..8002d504 100644 --- a/sig/line/bot/v2/messaging_api/model/rich_menu_bulk_unlink_request.rbs +++ b/sig/line/bot/v2/messaging_api/model/rich_menu_bulk_unlink_request.rbs @@ -18,6 +18,8 @@ module Line def initialize: ( user_ids: Array[String] ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> RichMenuBulkUnlinkRequest end end end diff --git a/sig/line/bot/v2/messaging_api/model/rich_menu_id_response.rbs b/sig/line/bot/v2/messaging_api/model/rich_menu_id_response.rbs index 3b20c1ac..f57e00ef 100644 --- a/sig/line/bot/v2/messaging_api/model/rich_menu_id_response.rbs +++ b/sig/line/bot/v2/messaging_api/model/rich_menu_id_response.rbs @@ -17,6 +17,8 @@ module Line def initialize: ( rich_menu_id: String ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> RichMenuIdResponse end end end diff --git a/sig/line/bot/v2/messaging_api/model/rich_menu_list_response.rbs b/sig/line/bot/v2/messaging_api/model/rich_menu_list_response.rbs index a5652332..372775bb 100644 --- a/sig/line/bot/v2/messaging_api/model/rich_menu_list_response.rbs +++ b/sig/line/bot/v2/messaging_api/model/rich_menu_list_response.rbs @@ -18,6 +18,8 @@ module Line def initialize: ( richmenus: Array[RichMenuResponse] ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> RichMenuListResponse end end end diff --git a/sig/line/bot/v2/messaging_api/model/rich_menu_request.rbs b/sig/line/bot/v2/messaging_api/model/rich_menu_request.rbs index b0835441..21adbb60 100644 --- a/sig/line/bot/v2/messaging_api/model/rich_menu_request.rbs +++ b/sig/line/bot/v2/messaging_api/model/rich_menu_request.rbs @@ -25,6 +25,8 @@ module Line chat_bar_text: String?, areas: Array[RichMenuArea]? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> RichMenuRequest end end end diff --git a/sig/line/bot/v2/messaging_api/model/rich_menu_response.rbs b/sig/line/bot/v2/messaging_api/model/rich_menu_response.rbs index 8d97fbe7..070d16b7 100644 --- a/sig/line/bot/v2/messaging_api/model/rich_menu_response.rbs +++ b/sig/line/bot/v2/messaging_api/model/rich_menu_response.rbs @@ -27,6 +27,8 @@ module Line chat_bar_text: String, areas: Array[RichMenuArea] ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> RichMenuResponse end end end diff --git a/sig/line/bot/v2/messaging_api/model/rich_menu_size.rbs b/sig/line/bot/v2/messaging_api/model/rich_menu_size.rbs index 4e7795fb..10818bc3 100644 --- a/sig/line/bot/v2/messaging_api/model/rich_menu_size.rbs +++ b/sig/line/bot/v2/messaging_api/model/rich_menu_size.rbs @@ -20,6 +20,8 @@ module Line width: Integer?, height: Integer? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> RichMenuSize end end end diff --git a/sig/line/bot/v2/messaging_api/model/rich_menu_switch_action.rbs b/sig/line/bot/v2/messaging_api/model/rich_menu_switch_action.rbs index c4f3b94e..ba3e313e 100644 --- a/sig/line/bot/v2/messaging_api/model/rich_menu_switch_action.rbs +++ b/sig/line/bot/v2/messaging_api/model/rich_menu_switch_action.rbs @@ -22,6 +22,8 @@ module Line data: String?, rich_menu_alias_id: String? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> RichMenuSwitchAction end end end diff --git a/sig/line/bot/v2/messaging_api/model/room_member_count_response.rbs b/sig/line/bot/v2/messaging_api/model/room_member_count_response.rbs index 22ffc4be..bf34e47d 100644 --- a/sig/line/bot/v2/messaging_api/model/room_member_count_response.rbs +++ b/sig/line/bot/v2/messaging_api/model/room_member_count_response.rbs @@ -18,6 +18,8 @@ module Line def initialize: ( count: Integer ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> RoomMemberCountResponse end end end diff --git a/sig/line/bot/v2/messaging_api/model/room_user_profile_response.rbs b/sig/line/bot/v2/messaging_api/model/room_user_profile_response.rbs index d03bf013..0804f12c 100644 --- a/sig/line/bot/v2/messaging_api/model/room_user_profile_response.rbs +++ b/sig/line/bot/v2/messaging_api/model/room_user_profile_response.rbs @@ -22,6 +22,8 @@ module Line user_id: String, picture_url: String? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> RoomUserProfileResponse end end end diff --git a/sig/line/bot/v2/messaging_api/model/sender.rbs b/sig/line/bot/v2/messaging_api/model/sender.rbs index b43c0f6c..db3a8a21 100644 --- a/sig/line/bot/v2/messaging_api/model/sender.rbs +++ b/sig/line/bot/v2/messaging_api/model/sender.rbs @@ -20,6 +20,8 @@ module Line name: String?, icon_url: String? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> Sender end end end diff --git a/sig/line/bot/v2/messaging_api/model/sent_message.rbs b/sig/line/bot/v2/messaging_api/model/sent_message.rbs index 01876c0b..15786c5f 100644 --- a/sig/line/bot/v2/messaging_api/model/sent_message.rbs +++ b/sig/line/bot/v2/messaging_api/model/sent_message.rbs @@ -19,6 +19,8 @@ module Line id: String, quote_token: String? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> SentMessage end end end diff --git a/sig/line/bot/v2/messaging_api/model/set_webhook_endpoint_request.rbs b/sig/line/bot/v2/messaging_api/model/set_webhook_endpoint_request.rbs index 0761f318..f72618cd 100644 --- a/sig/line/bot/v2/messaging_api/model/set_webhook_endpoint_request.rbs +++ b/sig/line/bot/v2/messaging_api/model/set_webhook_endpoint_request.rbs @@ -18,6 +18,8 @@ module Line def initialize: ( endpoint: String ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> SetWebhookEndpointRequest end end end diff --git a/sig/line/bot/v2/messaging_api/model/show_loading_animation_request.rbs b/sig/line/bot/v2/messaging_api/model/show_loading_animation_request.rbs index e0f580f9..62e63ec1 100644 --- a/sig/line/bot/v2/messaging_api/model/show_loading_animation_request.rbs +++ b/sig/line/bot/v2/messaging_api/model/show_loading_animation_request.rbs @@ -20,6 +20,8 @@ module Line chat_id: String, loading_seconds: Integer? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> ShowLoadingAnimationRequest end end end diff --git a/sig/line/bot/v2/messaging_api/model/sticker_message.rbs b/sig/line/bot/v2/messaging_api/model/sticker_message.rbs index b924d3b3..b1e16405 100644 --- a/sig/line/bot/v2/messaging_api/model/sticker_message.rbs +++ b/sig/line/bot/v2/messaging_api/model/sticker_message.rbs @@ -27,6 +27,8 @@ module Line sticker_id: String, quote_token: String? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> StickerMessage end end end diff --git a/sig/line/bot/v2/messaging_api/model/subscribed_membership_plan.rbs b/sig/line/bot/v2/messaging_api/model/subscribed_membership_plan.rbs index 8c870c0b..68375326 100644 --- a/sig/line/bot/v2/messaging_api/model/subscribed_membership_plan.rbs +++ b/sig/line/bot/v2/messaging_api/model/subscribed_membership_plan.rbs @@ -28,6 +28,8 @@ module Line price: Float, currency: 'JPY'|'TWD'|'THB' ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> SubscribedMembershipPlan end end end diff --git a/sig/line/bot/v2/messaging_api/model/subscribed_membership_user.rbs b/sig/line/bot/v2/messaging_api/model/subscribed_membership_user.rbs index f440f3be..40585c17 100644 --- a/sig/line/bot/v2/messaging_api/model/subscribed_membership_user.rbs +++ b/sig/line/bot/v2/messaging_api/model/subscribed_membership_user.rbs @@ -24,6 +24,8 @@ module Line next_billing_date: String, total_subscription_months: Integer ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> SubscribedMembershipUser end end end diff --git a/sig/line/bot/v2/messaging_api/model/subscription.rbs b/sig/line/bot/v2/messaging_api/model/subscription.rbs index 5876a1ca..09cc2910 100644 --- a/sig/line/bot/v2/messaging_api/model/subscription.rbs +++ b/sig/line/bot/v2/messaging_api/model/subscription.rbs @@ -20,6 +20,8 @@ module Line membership: SubscribedMembershipPlan, user: SubscribedMembershipUser ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> Subscription end end end diff --git a/sig/line/bot/v2/messaging_api/model/subscription_period_demographic_filter.rbs b/sig/line/bot/v2/messaging_api/model/subscription_period_demographic_filter.rbs index 00bb651e..41ae6702 100644 --- a/sig/line/bot/v2/messaging_api/model/subscription_period_demographic_filter.rbs +++ b/sig/line/bot/v2/messaging_api/model/subscription_period_demographic_filter.rbs @@ -20,6 +20,8 @@ module Line gte: 'day_7'|'day_30'|'day_90'|'day_180'|'day_365'?, lt: 'day_7'|'day_30'|'day_90'|'day_180'|'day_365'? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> SubscriptionPeriodDemographicFilter end end end diff --git a/sig/line/bot/v2/messaging_api/model/substitution_object.rbs b/sig/line/bot/v2/messaging_api/model/substitution_object.rbs index c011278f..712b9431 100644 --- a/sig/line/bot/v2/messaging_api/model/substitution_object.rbs +++ b/sig/line/bot/v2/messaging_api/model/substitution_object.rbs @@ -18,6 +18,12 @@ module Line def initialize: ( type: String ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> SubstitutionObject + + private + + def self.detect_class: (type: String) -> Class end end end diff --git a/sig/line/bot/v2/messaging_api/model/template.rbs b/sig/line/bot/v2/messaging_api/model/template.rbs index 1dc027b0..b09dc9ef 100644 --- a/sig/line/bot/v2/messaging_api/model/template.rbs +++ b/sig/line/bot/v2/messaging_api/model/template.rbs @@ -17,6 +17,12 @@ module Line def initialize: ( type: String ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> Template + + private + + def self.detect_class: (type: String) -> Class end end end diff --git a/sig/line/bot/v2/messaging_api/model/template_message.rbs b/sig/line/bot/v2/messaging_api/model/template_message.rbs index 67222061..d5e49e20 100644 --- a/sig/line/bot/v2/messaging_api/model/template_message.rbs +++ b/sig/line/bot/v2/messaging_api/model/template_message.rbs @@ -25,6 +25,8 @@ module Line alt_text: String, template: Template ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> TemplateMessage end end end diff --git a/sig/line/bot/v2/messaging_api/model/test_webhook_endpoint_request.rbs b/sig/line/bot/v2/messaging_api/model/test_webhook_endpoint_request.rbs index d0266c60..d05257ee 100644 --- a/sig/line/bot/v2/messaging_api/model/test_webhook_endpoint_request.rbs +++ b/sig/line/bot/v2/messaging_api/model/test_webhook_endpoint_request.rbs @@ -18,6 +18,8 @@ module Line def initialize: ( endpoint: String? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> TestWebhookEndpointRequest end end end diff --git a/sig/line/bot/v2/messaging_api/model/test_webhook_endpoint_response.rbs b/sig/line/bot/v2/messaging_api/model/test_webhook_endpoint_response.rbs index a5c4dea2..e13c94af 100644 --- a/sig/line/bot/v2/messaging_api/model/test_webhook_endpoint_response.rbs +++ b/sig/line/bot/v2/messaging_api/model/test_webhook_endpoint_response.rbs @@ -26,6 +26,8 @@ module Line reason: String, detail: String ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> TestWebhookEndpointResponse end end end diff --git a/sig/line/bot/v2/messaging_api/model/text_message.rbs b/sig/line/bot/v2/messaging_api/model/text_message.rbs index 2b5ee8f6..f0d38624 100644 --- a/sig/line/bot/v2/messaging_api/model/text_message.rbs +++ b/sig/line/bot/v2/messaging_api/model/text_message.rbs @@ -27,6 +27,8 @@ module Line emojis: Array[Emoji]?, quote_token: String? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> TextMessage end end end diff --git a/sig/line/bot/v2/messaging_api/model/text_message_v2.rbs b/sig/line/bot/v2/messaging_api/model/text_message_v2.rbs index 8b614ffb..9cfcd0b5 100644 --- a/sig/line/bot/v2/messaging_api/model/text_message_v2.rbs +++ b/sig/line/bot/v2/messaging_api/model/text_message_v2.rbs @@ -27,6 +27,8 @@ module Line substitution: Object?, quote_token: String? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> TextMessageV2 end end end diff --git a/sig/line/bot/v2/messaging_api/model/update_rich_menu_alias_request.rbs b/sig/line/bot/v2/messaging_api/model/update_rich_menu_alias_request.rbs index 7ed283d3..da07b6f7 100644 --- a/sig/line/bot/v2/messaging_api/model/update_rich_menu_alias_request.rbs +++ b/sig/line/bot/v2/messaging_api/model/update_rich_menu_alias_request.rbs @@ -18,6 +18,8 @@ module Line def initialize: ( rich_menu_id: String ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> UpdateRichMenuAliasRequest end end end diff --git a/sig/line/bot/v2/messaging_api/model/uri_action.rbs b/sig/line/bot/v2/messaging_api/model/uri_action.rbs index 5cb1713f..ec1e89fa 100644 --- a/sig/line/bot/v2/messaging_api/model/uri_action.rbs +++ b/sig/line/bot/v2/messaging_api/model/uri_action.rbs @@ -22,6 +22,8 @@ module Line uri: String?, alt_uri: AltUri? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> URIAction end end end diff --git a/sig/line/bot/v2/messaging_api/model/uri_imagemap_action.rbs b/sig/line/bot/v2/messaging_api/model/uri_imagemap_action.rbs index 18eb0bdf..db5ada80 100644 --- a/sig/line/bot/v2/messaging_api/model/uri_imagemap_action.rbs +++ b/sig/line/bot/v2/messaging_api/model/uri_imagemap_action.rbs @@ -22,6 +22,8 @@ module Line link_uri: String, label: String? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> URIImagemapAction end end end diff --git a/sig/line/bot/v2/messaging_api/model/user_mention_target.rbs b/sig/line/bot/v2/messaging_api/model/user_mention_target.rbs index d67faff5..49308e65 100644 --- a/sig/line/bot/v2/messaging_api/model/user_mention_target.rbs +++ b/sig/line/bot/v2/messaging_api/model/user_mention_target.rbs @@ -19,6 +19,8 @@ module Line def initialize: ( user_id: String ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> UserMentionTarget end end end diff --git a/sig/line/bot/v2/messaging_api/model/user_profile_response.rbs b/sig/line/bot/v2/messaging_api/model/user_profile_response.rbs index 7a8b4584..6666a5f4 100644 --- a/sig/line/bot/v2/messaging_api/model/user_profile_response.rbs +++ b/sig/line/bot/v2/messaging_api/model/user_profile_response.rbs @@ -26,6 +26,8 @@ module Line status_message: String?, language: String? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> UserProfileResponse end end end diff --git a/sig/line/bot/v2/messaging_api/model/validate_message_request.rbs b/sig/line/bot/v2/messaging_api/model/validate_message_request.rbs index b1837585..a0fac973 100644 --- a/sig/line/bot/v2/messaging_api/model/validate_message_request.rbs +++ b/sig/line/bot/v2/messaging_api/model/validate_message_request.rbs @@ -17,6 +17,8 @@ module Line def initialize: ( messages: Array[Message] ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> ValidateMessageRequest end end end diff --git a/sig/line/bot/v2/messaging_api/model/video_message.rbs b/sig/line/bot/v2/messaging_api/model/video_message.rbs index dfb6fccf..88826733 100644 --- a/sig/line/bot/v2/messaging_api/model/video_message.rbs +++ b/sig/line/bot/v2/messaging_api/model/video_message.rbs @@ -27,6 +27,8 @@ module Line preview_image_url: String, tracking_id: String? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> VideoMessage end end end diff --git a/sig/line/bot/v2/module/model/acquire_chat_control_request.rbs b/sig/line/bot/v2/module/model/acquire_chat_control_request.rbs index 28b43007..a0868db1 100644 --- a/sig/line/bot/v2/module/model/acquire_chat_control_request.rbs +++ b/sig/line/bot/v2/module/model/acquire_chat_control_request.rbs @@ -21,6 +21,8 @@ module Line expired: bool?, ttl: Integer? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> AcquireChatControlRequest end end end diff --git a/sig/line/bot/v2/module/model/detach_module_request.rbs b/sig/line/bot/v2/module/model/detach_module_request.rbs index c7998381..b04ca976 100644 --- a/sig/line/bot/v2/module/model/detach_module_request.rbs +++ b/sig/line/bot/v2/module/model/detach_module_request.rbs @@ -19,6 +19,8 @@ module Line def initialize: ( bot_id: String? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> DetachModuleRequest end end end diff --git a/sig/line/bot/v2/module/model/get_modules_response.rbs b/sig/line/bot/v2/module/model/get_modules_response.rbs index ddc07c17..866b6769 100644 --- a/sig/line/bot/v2/module/model/get_modules_response.rbs +++ b/sig/line/bot/v2/module/model/get_modules_response.rbs @@ -21,6 +21,8 @@ module Line bots: Array[ModuleBot], _next: String? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> GetModulesResponse end end end diff --git a/sig/line/bot/v2/module/model/module_bot.rbs b/sig/line/bot/v2/module/model/module_bot.rbs index 3d6a836d..5e95c61c 100644 --- a/sig/line/bot/v2/module/model/module_bot.rbs +++ b/sig/line/bot/v2/module/model/module_bot.rbs @@ -27,6 +27,8 @@ module Line display_name: String, picture_url: String? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> ModuleBot end end end diff --git a/sig/line/bot/v2/module_attach/model/attach_module_response.rbs b/sig/line/bot/v2/module_attach/model/attach_module_response.rbs index b2379452..94b6f1f2 100644 --- a/sig/line/bot/v2/module_attach/model/attach_module_response.rbs +++ b/sig/line/bot/v2/module_attach/model/attach_module_response.rbs @@ -20,6 +20,8 @@ module Line bot_id: String, scopes: Array[String] ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> AttachModuleResponse end end end diff --git a/sig/line/bot/v2/shop/model/error_response.rbs b/sig/line/bot/v2/shop/model/error_response.rbs index 95fc956a..82f15d7c 100644 --- a/sig/line/bot/v2/shop/model/error_response.rbs +++ b/sig/line/bot/v2/shop/model/error_response.rbs @@ -18,6 +18,8 @@ module Line def initialize: ( message: String ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> ErrorResponse end end end diff --git a/sig/line/bot/v2/shop/model/mission_sticker_request.rbs b/sig/line/bot/v2/shop/model/mission_sticker_request.rbs index 25c0adca..340cd620 100644 --- a/sig/line/bot/v2/shop/model/mission_sticker_request.rbs +++ b/sig/line/bot/v2/shop/model/mission_sticker_request.rbs @@ -25,6 +25,8 @@ module Line product_type: String, send_present_message: bool ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> MissionStickerRequest end end end diff --git a/sig/line/bot/v2/webhook/model/account_link_event.rbs b/sig/line/bot/v2/webhook/model/account_link_event.rbs index 39100624..762edb54 100644 --- a/sig/line/bot/v2/webhook/model/account_link_event.rbs +++ b/sig/line/bot/v2/webhook/model/account_link_event.rbs @@ -32,6 +32,8 @@ module Line reply_token: String?, link: LinkContent ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> AccountLinkEvent end end end diff --git a/sig/line/bot/v2/webhook/model/action_result.rbs b/sig/line/bot/v2/webhook/model/action_result.rbs index a80dc90a..93a1c0d8 100644 --- a/sig/line/bot/v2/webhook/model/action_result.rbs +++ b/sig/line/bot/v2/webhook/model/action_result.rbs @@ -19,6 +19,8 @@ module Line type: 'void'|'binary', data: String? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> ActionResult end end end diff --git a/sig/line/bot/v2/webhook/model/activated_event.rbs b/sig/line/bot/v2/webhook/model/activated_event.rbs index 2f63d8f2..0527328b 100644 --- a/sig/line/bot/v2/webhook/model/activated_event.rbs +++ b/sig/line/bot/v2/webhook/model/activated_event.rbs @@ -30,6 +30,8 @@ module Line delivery_context: DeliveryContext, chat_control: ChatControl ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> ActivatedEvent end end end diff --git a/sig/line/bot/v2/webhook/model/all_mentionee.rbs b/sig/line/bot/v2/webhook/model/all_mentionee.rbs index 203ec8c5..a26b7849 100644 --- a/sig/line/bot/v2/webhook/model/all_mentionee.rbs +++ b/sig/line/bot/v2/webhook/model/all_mentionee.rbs @@ -22,6 +22,8 @@ module Line index: Integer, length: Integer ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> AllMentionee end end end diff --git a/sig/line/bot/v2/webhook/model/attached_module_content.rbs b/sig/line/bot/v2/webhook/model/attached_module_content.rbs index ea9db203..fbc2fe78 100644 --- a/sig/line/bot/v2/webhook/model/attached_module_content.rbs +++ b/sig/line/bot/v2/webhook/model/attached_module_content.rbs @@ -21,6 +21,8 @@ module Line bot_id: String, scopes: Array[String] ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> AttachedModuleContent end end end diff --git a/sig/line/bot/v2/webhook/model/audio_message_content.rbs b/sig/line/bot/v2/webhook/model/audio_message_content.rbs index 089425b2..709b785b 100644 --- a/sig/line/bot/v2/webhook/model/audio_message_content.rbs +++ b/sig/line/bot/v2/webhook/model/audio_message_content.rbs @@ -23,6 +23,8 @@ module Line content_provider: ContentProvider, duration: Integer? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> AudioMessageContent end end end diff --git a/sig/line/bot/v2/webhook/model/beacon_content.rbs b/sig/line/bot/v2/webhook/model/beacon_content.rbs index ab00b21c..188167e8 100644 --- a/sig/line/bot/v2/webhook/model/beacon_content.rbs +++ b/sig/line/bot/v2/webhook/model/beacon_content.rbs @@ -21,6 +21,8 @@ module Line type: 'enter'|'banner'|'stay', dm: String? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> BeaconContent end end end diff --git a/sig/line/bot/v2/webhook/model/beacon_event.rbs b/sig/line/bot/v2/webhook/model/beacon_event.rbs index e7e4868d..06ec1970 100644 --- a/sig/line/bot/v2/webhook/model/beacon_event.rbs +++ b/sig/line/bot/v2/webhook/model/beacon_event.rbs @@ -32,6 +32,8 @@ module Line reply_token: String, beacon: BeaconContent ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> BeaconEvent end end end diff --git a/sig/line/bot/v2/webhook/model/bot_resumed_event.rbs b/sig/line/bot/v2/webhook/model/bot_resumed_event.rbs index c0afb256..7b82692b 100644 --- a/sig/line/bot/v2/webhook/model/bot_resumed_event.rbs +++ b/sig/line/bot/v2/webhook/model/bot_resumed_event.rbs @@ -28,6 +28,8 @@ module Line webhook_event_id: String, delivery_context: DeliveryContext ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> BotResumedEvent end end end diff --git a/sig/line/bot/v2/webhook/model/bot_suspended_event.rbs b/sig/line/bot/v2/webhook/model/bot_suspended_event.rbs index eff6ec5d..a4790958 100644 --- a/sig/line/bot/v2/webhook/model/bot_suspended_event.rbs +++ b/sig/line/bot/v2/webhook/model/bot_suspended_event.rbs @@ -28,6 +28,8 @@ module Line webhook_event_id: String, delivery_context: DeliveryContext ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> BotSuspendedEvent end end end diff --git a/sig/line/bot/v2/webhook/model/callback_request.rbs b/sig/line/bot/v2/webhook/model/callback_request.rbs index cc97f3b7..b275fcd1 100644 --- a/sig/line/bot/v2/webhook/model/callback_request.rbs +++ b/sig/line/bot/v2/webhook/model/callback_request.rbs @@ -21,6 +21,8 @@ module Line destination: String, events: Array[Event] ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> CallbackRequest end end end diff --git a/sig/line/bot/v2/webhook/model/chat_control.rbs b/sig/line/bot/v2/webhook/model/chat_control.rbs index 4b4184cf..f12cbff0 100644 --- a/sig/line/bot/v2/webhook/model/chat_control.rbs +++ b/sig/line/bot/v2/webhook/model/chat_control.rbs @@ -17,6 +17,8 @@ module Line def initialize: ( expire_at: Integer ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> ChatControl end end end diff --git a/sig/line/bot/v2/webhook/model/content_provider.rbs b/sig/line/bot/v2/webhook/model/content_provider.rbs index ceba33ab..706d9fc8 100644 --- a/sig/line/bot/v2/webhook/model/content_provider.rbs +++ b/sig/line/bot/v2/webhook/model/content_provider.rbs @@ -22,6 +22,8 @@ module Line original_content_url: String?, preview_image_url: String? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> ContentProvider end end end diff --git a/sig/line/bot/v2/webhook/model/deactivated_event.rbs b/sig/line/bot/v2/webhook/model/deactivated_event.rbs index 4a52c5c7..6b56373c 100644 --- a/sig/line/bot/v2/webhook/model/deactivated_event.rbs +++ b/sig/line/bot/v2/webhook/model/deactivated_event.rbs @@ -28,6 +28,8 @@ module Line webhook_event_id: String, delivery_context: DeliveryContext ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> DeactivatedEvent end end end diff --git a/sig/line/bot/v2/webhook/model/delivery_context.rbs b/sig/line/bot/v2/webhook/model/delivery_context.rbs index b37ee82c..01d304d0 100644 --- a/sig/line/bot/v2/webhook/model/delivery_context.rbs +++ b/sig/line/bot/v2/webhook/model/delivery_context.rbs @@ -18,6 +18,8 @@ module Line def initialize: ( is_redelivery: bool ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> DeliveryContext end end end diff --git a/sig/line/bot/v2/webhook/model/detached_module_content.rbs b/sig/line/bot/v2/webhook/model/detached_module_content.rbs index ccc758d5..e40c93a9 100644 --- a/sig/line/bot/v2/webhook/model/detached_module_content.rbs +++ b/sig/line/bot/v2/webhook/model/detached_module_content.rbs @@ -21,6 +21,8 @@ module Line bot_id: String, reason: 'bot_deleted' ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> DetachedModuleContent end end end diff --git a/sig/line/bot/v2/webhook/model/emoji.rbs b/sig/line/bot/v2/webhook/model/emoji.rbs index 084eb27f..b713bdad 100644 --- a/sig/line/bot/v2/webhook/model/emoji.rbs +++ b/sig/line/bot/v2/webhook/model/emoji.rbs @@ -23,6 +23,8 @@ module Line product_id: String, emoji_id: String ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> Emoji end end end diff --git a/sig/line/bot/v2/webhook/model/event.rbs b/sig/line/bot/v2/webhook/model/event.rbs index d5164bf8..ae6bf315 100644 --- a/sig/line/bot/v2/webhook/model/event.rbs +++ b/sig/line/bot/v2/webhook/model/event.rbs @@ -28,6 +28,12 @@ module Line webhook_event_id: String, delivery_context: DeliveryContext ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> Event + + private + + def self.detect_class: (type: String) -> Class end end end diff --git a/sig/line/bot/v2/webhook/model/file_message_content.rbs b/sig/line/bot/v2/webhook/model/file_message_content.rbs index 915671ca..e2a2046d 100644 --- a/sig/line/bot/v2/webhook/model/file_message_content.rbs +++ b/sig/line/bot/v2/webhook/model/file_message_content.rbs @@ -23,6 +23,8 @@ module Line file_name: String, file_size: Integer ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> FileMessageContent end end end diff --git a/sig/line/bot/v2/webhook/model/follow_detail.rbs b/sig/line/bot/v2/webhook/model/follow_detail.rbs index 5563960a..0664e27a 100644 --- a/sig/line/bot/v2/webhook/model/follow_detail.rbs +++ b/sig/line/bot/v2/webhook/model/follow_detail.rbs @@ -17,6 +17,8 @@ module Line def initialize: ( is_unblocked: bool ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> FollowDetail end end end diff --git a/sig/line/bot/v2/webhook/model/follow_event.rbs b/sig/line/bot/v2/webhook/model/follow_event.rbs index 56311648..66a3efc6 100644 --- a/sig/line/bot/v2/webhook/model/follow_event.rbs +++ b/sig/line/bot/v2/webhook/model/follow_event.rbs @@ -32,6 +32,8 @@ module Line reply_token: String, follow: FollowDetail ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> FollowEvent end end end diff --git a/sig/line/bot/v2/webhook/model/group_source.rbs b/sig/line/bot/v2/webhook/model/group_source.rbs index fb4a2659..e94ec308 100644 --- a/sig/line/bot/v2/webhook/model/group_source.rbs +++ b/sig/line/bot/v2/webhook/model/group_source.rbs @@ -21,6 +21,8 @@ module Line group_id: String, user_id: String? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> GroupSource end end end diff --git a/sig/line/bot/v2/webhook/model/image_message_content.rbs b/sig/line/bot/v2/webhook/model/image_message_content.rbs index 4fa90200..833ce4b2 100644 --- a/sig/line/bot/v2/webhook/model/image_message_content.rbs +++ b/sig/line/bot/v2/webhook/model/image_message_content.rbs @@ -25,6 +25,8 @@ module Line image_set: ImageSet?, quote_token: String ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> ImageMessageContent end end end diff --git a/sig/line/bot/v2/webhook/model/image_set.rbs b/sig/line/bot/v2/webhook/model/image_set.rbs index e5a62c75..f30696f7 100644 --- a/sig/line/bot/v2/webhook/model/image_set.rbs +++ b/sig/line/bot/v2/webhook/model/image_set.rbs @@ -21,6 +21,8 @@ module Line index: Integer?, total: Integer? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> ImageSet end end end diff --git a/sig/line/bot/v2/webhook/model/join_event.rbs b/sig/line/bot/v2/webhook/model/join_event.rbs index a44c7ef7..a1a2c7f6 100644 --- a/sig/line/bot/v2/webhook/model/join_event.rbs +++ b/sig/line/bot/v2/webhook/model/join_event.rbs @@ -30,6 +30,8 @@ module Line delivery_context: DeliveryContext, reply_token: String ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> JoinEvent end end end diff --git a/sig/line/bot/v2/webhook/model/joined_members.rbs b/sig/line/bot/v2/webhook/model/joined_members.rbs index b6bacfb0..ecb4e35a 100644 --- a/sig/line/bot/v2/webhook/model/joined_members.rbs +++ b/sig/line/bot/v2/webhook/model/joined_members.rbs @@ -17,6 +17,8 @@ module Line def initialize: ( members: Array[UserSource] ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> JoinedMembers end end end diff --git a/sig/line/bot/v2/webhook/model/joined_membership_content.rbs b/sig/line/bot/v2/webhook/model/joined_membership_content.rbs index d0b6122e..28f264fb 100644 --- a/sig/line/bot/v2/webhook/model/joined_membership_content.rbs +++ b/sig/line/bot/v2/webhook/model/joined_membership_content.rbs @@ -19,6 +19,8 @@ module Line type: String, membership_id: Integer ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> JoinedMembershipContent end end end diff --git a/sig/line/bot/v2/webhook/model/leave_event.rbs b/sig/line/bot/v2/webhook/model/leave_event.rbs index 6d592e34..59bcef6a 100644 --- a/sig/line/bot/v2/webhook/model/leave_event.rbs +++ b/sig/line/bot/v2/webhook/model/leave_event.rbs @@ -28,6 +28,8 @@ module Line webhook_event_id: String, delivery_context: DeliveryContext ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> LeaveEvent end end end diff --git a/sig/line/bot/v2/webhook/model/left_members.rbs b/sig/line/bot/v2/webhook/model/left_members.rbs index 8197bd7b..c5d50c9e 100644 --- a/sig/line/bot/v2/webhook/model/left_members.rbs +++ b/sig/line/bot/v2/webhook/model/left_members.rbs @@ -17,6 +17,8 @@ module Line def initialize: ( members: Array[UserSource] ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> LeftMembers end end end diff --git a/sig/line/bot/v2/webhook/model/left_membership_content.rbs b/sig/line/bot/v2/webhook/model/left_membership_content.rbs index 2bbb88b6..239889e8 100644 --- a/sig/line/bot/v2/webhook/model/left_membership_content.rbs +++ b/sig/line/bot/v2/webhook/model/left_membership_content.rbs @@ -19,6 +19,8 @@ module Line type: String, membership_id: Integer ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> LeftMembershipContent end end end diff --git a/sig/line/bot/v2/webhook/model/link_content.rbs b/sig/line/bot/v2/webhook/model/link_content.rbs index 061335e5..6f4168c3 100644 --- a/sig/line/bot/v2/webhook/model/link_content.rbs +++ b/sig/line/bot/v2/webhook/model/link_content.rbs @@ -20,6 +20,8 @@ module Line result: 'ok'|'failed', nonce: String ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> LinkContent end end end diff --git a/sig/line/bot/v2/webhook/model/link_things_content.rbs b/sig/line/bot/v2/webhook/model/link_things_content.rbs index 19c3eed5..5d24045e 100644 --- a/sig/line/bot/v2/webhook/model/link_things_content.rbs +++ b/sig/line/bot/v2/webhook/model/link_things_content.rbs @@ -19,6 +19,8 @@ module Line type: String, device_id: String ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> LinkThingsContent end end end diff --git a/sig/line/bot/v2/webhook/model/location_message_content.rbs b/sig/line/bot/v2/webhook/model/location_message_content.rbs index 7b5a943d..e28f7464 100644 --- a/sig/line/bot/v2/webhook/model/location_message_content.rbs +++ b/sig/line/bot/v2/webhook/model/location_message_content.rbs @@ -27,6 +27,8 @@ module Line latitude: Float, longitude: Float ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> LocationMessageContent end end end diff --git a/sig/line/bot/v2/webhook/model/member_joined_event.rbs b/sig/line/bot/v2/webhook/model/member_joined_event.rbs index 636ab80c..0518f0e7 100644 --- a/sig/line/bot/v2/webhook/model/member_joined_event.rbs +++ b/sig/line/bot/v2/webhook/model/member_joined_event.rbs @@ -32,6 +32,8 @@ module Line reply_token: String, joined: JoinedMembers ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> MemberJoinedEvent end end end diff --git a/sig/line/bot/v2/webhook/model/member_left_event.rbs b/sig/line/bot/v2/webhook/model/member_left_event.rbs index 4f661287..7b859ee0 100644 --- a/sig/line/bot/v2/webhook/model/member_left_event.rbs +++ b/sig/line/bot/v2/webhook/model/member_left_event.rbs @@ -30,6 +30,8 @@ module Line delivery_context: DeliveryContext, left: LeftMembers ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> MemberLeftEvent end end end diff --git a/sig/line/bot/v2/webhook/model/membership_content.rbs b/sig/line/bot/v2/webhook/model/membership_content.rbs index 065fa9f8..e4c5de9c 100644 --- a/sig/line/bot/v2/webhook/model/membership_content.rbs +++ b/sig/line/bot/v2/webhook/model/membership_content.rbs @@ -18,6 +18,12 @@ module Line def initialize: ( type: String ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> MembershipContent + + private + + def self.detect_class: (type: String) -> Class end end end diff --git a/sig/line/bot/v2/webhook/model/membership_event.rbs b/sig/line/bot/v2/webhook/model/membership_event.rbs index 35e3f71f..32b551d9 100644 --- a/sig/line/bot/v2/webhook/model/membership_event.rbs +++ b/sig/line/bot/v2/webhook/model/membership_event.rbs @@ -32,6 +32,8 @@ module Line reply_token: String, membership: MembershipContent ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> MembershipEvent end end end diff --git a/sig/line/bot/v2/webhook/model/mention.rbs b/sig/line/bot/v2/webhook/model/mention.rbs index fef94d4a..d323a2d3 100644 --- a/sig/line/bot/v2/webhook/model/mention.rbs +++ b/sig/line/bot/v2/webhook/model/mention.rbs @@ -17,6 +17,8 @@ module Line def initialize: ( mentionees: Array[Mentionee] ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> Mention end end end diff --git a/sig/line/bot/v2/webhook/model/mentionee.rbs b/sig/line/bot/v2/webhook/model/mentionee.rbs index 885e7a9d..dc8dab30 100644 --- a/sig/line/bot/v2/webhook/model/mentionee.rbs +++ b/sig/line/bot/v2/webhook/model/mentionee.rbs @@ -22,6 +22,12 @@ module Line index: Integer, length: Integer ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> Mentionee + + private + + def self.detect_class: (type: String) -> Class end end end diff --git a/sig/line/bot/v2/webhook/model/message_content.rbs b/sig/line/bot/v2/webhook/model/message_content.rbs index 7ab9d194..44f283b0 100644 --- a/sig/line/bot/v2/webhook/model/message_content.rbs +++ b/sig/line/bot/v2/webhook/model/message_content.rbs @@ -20,6 +20,12 @@ module Line type: String, id: String ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> MessageContent + + private + + def self.detect_class: (type: String) -> Class end end end diff --git a/sig/line/bot/v2/webhook/model/message_event.rbs b/sig/line/bot/v2/webhook/model/message_event.rbs index d69757d9..6149a107 100644 --- a/sig/line/bot/v2/webhook/model/message_event.rbs +++ b/sig/line/bot/v2/webhook/model/message_event.rbs @@ -32,6 +32,8 @@ module Line reply_token: String?, message: MessageContent ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> MessageEvent end end end diff --git a/sig/line/bot/v2/webhook/model/module_content.rbs b/sig/line/bot/v2/webhook/model/module_content.rbs index a62850ca..b456f1c3 100644 --- a/sig/line/bot/v2/webhook/model/module_content.rbs +++ b/sig/line/bot/v2/webhook/model/module_content.rbs @@ -17,6 +17,12 @@ module Line def initialize: ( type: String ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> ModuleContent + + private + + def self.detect_class: (type: String) -> Class end end end diff --git a/sig/line/bot/v2/webhook/model/module_event.rbs b/sig/line/bot/v2/webhook/model/module_event.rbs index 88909896..0974b878 100644 --- a/sig/line/bot/v2/webhook/model/module_event.rbs +++ b/sig/line/bot/v2/webhook/model/module_event.rbs @@ -30,6 +30,8 @@ module Line delivery_context: DeliveryContext, _module: ModuleContent ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> ModuleEvent end end end diff --git a/sig/line/bot/v2/webhook/model/pnp_delivery.rbs b/sig/line/bot/v2/webhook/model/pnp_delivery.rbs index 74a434f6..ea936d9d 100644 --- a/sig/line/bot/v2/webhook/model/pnp_delivery.rbs +++ b/sig/line/bot/v2/webhook/model/pnp_delivery.rbs @@ -18,6 +18,8 @@ module Line def initialize: ( data: String ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> PnpDelivery end end end diff --git a/sig/line/bot/v2/webhook/model/pnp_delivery_completion_event.rbs b/sig/line/bot/v2/webhook/model/pnp_delivery_completion_event.rbs index b6008500..696d549d 100644 --- a/sig/line/bot/v2/webhook/model/pnp_delivery_completion_event.rbs +++ b/sig/line/bot/v2/webhook/model/pnp_delivery_completion_event.rbs @@ -30,6 +30,8 @@ module Line delivery_context: DeliveryContext, delivery: PnpDelivery ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> PnpDeliveryCompletionEvent end end end diff --git a/sig/line/bot/v2/webhook/model/postback_content.rbs b/sig/line/bot/v2/webhook/model/postback_content.rbs index 6a385607..a944b82b 100644 --- a/sig/line/bot/v2/webhook/model/postback_content.rbs +++ b/sig/line/bot/v2/webhook/model/postback_content.rbs @@ -19,6 +19,8 @@ module Line data: String, params: Object? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> PostbackContent end end end diff --git a/sig/line/bot/v2/webhook/model/postback_event.rbs b/sig/line/bot/v2/webhook/model/postback_event.rbs index d93cadb6..d1ca8cf5 100644 --- a/sig/line/bot/v2/webhook/model/postback_event.rbs +++ b/sig/line/bot/v2/webhook/model/postback_event.rbs @@ -32,6 +32,8 @@ module Line reply_token: String?, postback: PostbackContent ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> PostbackEvent end end end diff --git a/sig/line/bot/v2/webhook/model/renewed_membership_content.rbs b/sig/line/bot/v2/webhook/model/renewed_membership_content.rbs index dcb64fde..bb2f32d9 100644 --- a/sig/line/bot/v2/webhook/model/renewed_membership_content.rbs +++ b/sig/line/bot/v2/webhook/model/renewed_membership_content.rbs @@ -19,6 +19,8 @@ module Line type: String, membership_id: Integer ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> RenewedMembershipContent end end end diff --git a/sig/line/bot/v2/webhook/model/room_source.rbs b/sig/line/bot/v2/webhook/model/room_source.rbs index 7ca69c44..eea4c523 100644 --- a/sig/line/bot/v2/webhook/model/room_source.rbs +++ b/sig/line/bot/v2/webhook/model/room_source.rbs @@ -21,6 +21,8 @@ module Line user_id: String?, room_id: String ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> RoomSource end end end diff --git a/sig/line/bot/v2/webhook/model/scenario_result.rbs b/sig/line/bot/v2/webhook/model/scenario_result.rbs index ccdc8db6..42d4105d 100644 --- a/sig/line/bot/v2/webhook/model/scenario_result.rbs +++ b/sig/line/bot/v2/webhook/model/scenario_result.rbs @@ -32,6 +32,8 @@ module Line ble_notification_payload: String?, error_reason: String? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> ScenarioResult end end end diff --git a/sig/line/bot/v2/webhook/model/scenario_result_things_content.rbs b/sig/line/bot/v2/webhook/model/scenario_result_things_content.rbs index 75455355..17ce4e09 100644 --- a/sig/line/bot/v2/webhook/model/scenario_result_things_content.rbs +++ b/sig/line/bot/v2/webhook/model/scenario_result_things_content.rbs @@ -21,6 +21,8 @@ module Line device_id: String, result: ScenarioResult ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> ScenarioResultThingsContent end end end diff --git a/sig/line/bot/v2/webhook/model/source.rbs b/sig/line/bot/v2/webhook/model/source.rbs index 5044b26a..c49bd213 100644 --- a/sig/line/bot/v2/webhook/model/source.rbs +++ b/sig/line/bot/v2/webhook/model/source.rbs @@ -19,6 +19,12 @@ module Line def initialize: ( type: String? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> Source + + private + + def self.detect_class: (type: String) -> Class end end end diff --git a/sig/line/bot/v2/webhook/model/sticker_message_content.rbs b/sig/line/bot/v2/webhook/model/sticker_message_content.rbs index 9ba34a1b..4ff668fb 100644 --- a/sig/line/bot/v2/webhook/model/sticker_message_content.rbs +++ b/sig/line/bot/v2/webhook/model/sticker_message_content.rbs @@ -34,6 +34,8 @@ module Line quote_token: String, quoted_message_id: String? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> StickerMessageContent end end end diff --git a/sig/line/bot/v2/webhook/model/text_message_content.rbs b/sig/line/bot/v2/webhook/model/text_message_content.rbs index 60184f97..8eab139d 100644 --- a/sig/line/bot/v2/webhook/model/text_message_content.rbs +++ b/sig/line/bot/v2/webhook/model/text_message_content.rbs @@ -29,6 +29,8 @@ module Line quote_token: String, quoted_message_id: String? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> TextMessageContent end end end diff --git a/sig/line/bot/v2/webhook/model/things_content.rbs b/sig/line/bot/v2/webhook/model/things_content.rbs index d3381910..38bcf2cc 100644 --- a/sig/line/bot/v2/webhook/model/things_content.rbs +++ b/sig/line/bot/v2/webhook/model/things_content.rbs @@ -17,6 +17,12 @@ module Line def initialize: ( type: String ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> ThingsContent + + private + + def self.detect_class: (type: String) -> Class end end end diff --git a/sig/line/bot/v2/webhook/model/things_event.rbs b/sig/line/bot/v2/webhook/model/things_event.rbs index be616879..0000029c 100644 --- a/sig/line/bot/v2/webhook/model/things_event.rbs +++ b/sig/line/bot/v2/webhook/model/things_event.rbs @@ -32,6 +32,8 @@ module Line reply_token: String, things: ThingsContent ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> ThingsEvent end end end diff --git a/sig/line/bot/v2/webhook/model/unfollow_event.rbs b/sig/line/bot/v2/webhook/model/unfollow_event.rbs index e688d978..3c1a1851 100644 --- a/sig/line/bot/v2/webhook/model/unfollow_event.rbs +++ b/sig/line/bot/v2/webhook/model/unfollow_event.rbs @@ -28,6 +28,8 @@ module Line webhook_event_id: String, delivery_context: DeliveryContext ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> UnfollowEvent end end end diff --git a/sig/line/bot/v2/webhook/model/unlink_things_content.rbs b/sig/line/bot/v2/webhook/model/unlink_things_content.rbs index d8fe6e08..c7299ebc 100644 --- a/sig/line/bot/v2/webhook/model/unlink_things_content.rbs +++ b/sig/line/bot/v2/webhook/model/unlink_things_content.rbs @@ -19,6 +19,8 @@ module Line type: String, device_id: String ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> UnlinkThingsContent end end end diff --git a/sig/line/bot/v2/webhook/model/unsend_detail.rbs b/sig/line/bot/v2/webhook/model/unsend_detail.rbs index 398294d6..10347941 100644 --- a/sig/line/bot/v2/webhook/model/unsend_detail.rbs +++ b/sig/line/bot/v2/webhook/model/unsend_detail.rbs @@ -17,6 +17,8 @@ module Line def initialize: ( message_id: String ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> UnsendDetail end end end diff --git a/sig/line/bot/v2/webhook/model/unsend_event.rbs b/sig/line/bot/v2/webhook/model/unsend_event.rbs index fdc13988..0eb11ffa 100644 --- a/sig/line/bot/v2/webhook/model/unsend_event.rbs +++ b/sig/line/bot/v2/webhook/model/unsend_event.rbs @@ -30,6 +30,8 @@ module Line delivery_context: DeliveryContext, unsend: UnsendDetail ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> UnsendEvent end end end diff --git a/sig/line/bot/v2/webhook/model/user_mentionee.rbs b/sig/line/bot/v2/webhook/model/user_mentionee.rbs index 1238a110..254b240a 100644 --- a/sig/line/bot/v2/webhook/model/user_mentionee.rbs +++ b/sig/line/bot/v2/webhook/model/user_mentionee.rbs @@ -26,6 +26,8 @@ module Line user_id: String?, is_self: bool? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> UserMentionee end end end diff --git a/sig/line/bot/v2/webhook/model/user_source.rbs b/sig/line/bot/v2/webhook/model/user_source.rbs index a97ebb8b..a06bbb41 100644 --- a/sig/line/bot/v2/webhook/model/user_source.rbs +++ b/sig/line/bot/v2/webhook/model/user_source.rbs @@ -19,6 +19,8 @@ module Line type: String, user_id: String? ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> UserSource end end end diff --git a/sig/line/bot/v2/webhook/model/video_message_content.rbs b/sig/line/bot/v2/webhook/model/video_message_content.rbs index 55a7208f..7e5d7215 100644 --- a/sig/line/bot/v2/webhook/model/video_message_content.rbs +++ b/sig/line/bot/v2/webhook/model/video_message_content.rbs @@ -25,6 +25,8 @@ module Line content_provider: ContentProvider, quote_token: String ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> VideoMessageContent end end end diff --git a/sig/line/bot/v2/webhook/model/video_play_complete.rbs b/sig/line/bot/v2/webhook/model/video_play_complete.rbs index 96c37e06..a407cf0d 100644 --- a/sig/line/bot/v2/webhook/model/video_play_complete.rbs +++ b/sig/line/bot/v2/webhook/model/video_play_complete.rbs @@ -17,6 +17,8 @@ module Line def initialize: ( tracking_id: String ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> VideoPlayComplete end end end diff --git a/sig/line/bot/v2/webhook/model/video_play_complete_event.rbs b/sig/line/bot/v2/webhook/model/video_play_complete_event.rbs index 83b57eb1..79d50aa2 100644 --- a/sig/line/bot/v2/webhook/model/video_play_complete_event.rbs +++ b/sig/line/bot/v2/webhook/model/video_play_complete_event.rbs @@ -32,6 +32,8 @@ module Line reply_token: String, video_play_complete: VideoPlayComplete ) -> void + + def self.create: (args: Hash[Symbol, untyped]) -> VideoPlayCompleteEvent end end end diff --git a/sig/line/bot/v2/webhook_parser.rbs b/sig/line/bot/v2/webhook_parser.rbs index 1c181388..f71df957 100644 --- a/sig/line/bot/v2/webhook_parser.rbs +++ b/sig/line/bot/v2/webhook_parser.rbs @@ -10,8 +10,7 @@ module Line def parse: ( body: String, signature: String - ) -> Array[Webhook::Event | ::Struct[untyped]] - + ) -> Array[Webhook::Event] private @@ -20,16 +19,6 @@ module Line def secure_compare: (a: String, b: String) -> bool def verify_signature: (body: String, signature: String) -> bool - - def create_instance: (untyped klass, Hash[Symbol, untyped] attributes) -> untyped - - def determine_class_name: (Symbol key, untyped value) -> (String | nil) - - def pascalize: (String|Symbol str) -> String - - def singularize: (String|Symbol str) -> String - - def deep_hash_to_struct: (untyped) -> untyped end end end diff --git a/spec/line/bot/v2/misc_spec.rb b/spec/line/bot/v2/misc_spec.rb index 086f0318..174cee9f 100644 --- a/spec/line/bot/v2/misc_spec.rb +++ b/spec/line/bot/v2/misc_spec.rb @@ -372,9 +372,10 @@ expect(status_code).to eq(200) expect(body).to be_a(Line::Bot::V2::MessagingApi::PushMessageResponse) - # TODO: Add test after https://github.com/line/line-bot-sdk-ruby/issues/440 is resolved - # We should access body.sent_messages[0].id and body.sent_messages[0].quote_token, but it's not possible now. - expect(body.sent_messages).to eq([{ id: '461230966842064897', quote_token: 'IStG5h1Tz7b...' }]) + expect(body.sent_messages).to be_a(Array) + expect(body.sent_messages[0]).to be_a(Line::Bot::V2::MessagingApi::SentMessage) + expect(body.sent_messages[0].id).to eq('461230966842064897') + expect(body.sent_messages[0].quote_token).to eq('IStG5h1Tz7b...') end it 'response - success - using hash (not recommended way)' do @@ -452,9 +453,10 @@ expect(status_code).to eq(200) expect(body).to be_a(Line::Bot::V2::MessagingApi::PushMessageResponse) - # TODO: Add test after https://github.com/line/line-bot-sdk-ruby/issues/440 is resolved - # We should access body.sent_messages[0].id and body.sent_messages[0].quote_token, but it's not possible now. - expect(body.sent_messages).to eq([{ id: '461230966842064897', quote_token: 'IStG5h1Tz7b...' }]) + expect(body.sent_messages).to be_a(Array) + expect(body.sent_messages[0]).to be_a(Line::Bot::V2::MessagingApi::SentMessage) + expect(body.sent_messages[0].id).to eq('461230966842064897') + expect(body.sent_messages[0].quote_token).to eq('IStG5h1Tz7b...') end it 'request with x_line_retry_key: nil' do @@ -530,9 +532,10 @@ ) expect(status_code).to eq(200) expect(body).to be_a(Line::Bot::V2::MessagingApi::PushMessageResponse) - # TODO: Add test after https://github.com/line/line-bot-sdk-ruby/issues/440 is resolved - # We should access body.sent_messages[0].id and body.sent_messages[0].quote_token, but it's not possible now. - expect(body.sent_messages).to eq([{ id: '461230966842064897', quote_token: 'IStG5h1Tz7b...' }]) + expect(body.sent_messages).to be_a(Array) + expect(body.sent_messages[0]).to be_a(Line::Bot::V2::MessagingApi::SentMessage) + expect(body.sent_messages[0].id).to eq('461230966842064897') + expect(body.sent_messages[0].quote_token).to eq('IStG5h1Tz7b...') end it 'request with x-line-retry-key header - conflicted' do @@ -588,9 +591,10 @@ expect(status_code).to eq(409) expect(body).to be_a(Line::Bot::V2::MessagingApi::ErrorResponse) expect(body.message).to eq("The retry key is already accepted") - # TODO: Add test after https://github.com/line/line-bot-sdk-ruby/issues/440 is resolved. - # We should access body.sent_messages[0].id and body.sent_messages[0].quote_token, but it's not possible now. - expect(body.sent_messages).to eq([{ id: '461230966842064897', quote_token: 'IStG5h1Tz7b...' }]) + expect(body.sent_messages).to be_a(Array) + expect(body.sent_messages[0]).to be_a(Line::Bot::V2::MessagingApi::SentMessage) + expect(body.sent_messages[0].id).to eq('461230966842064897') + expect(body.sent_messages[0].quote_token).to eq('IStG5h1Tz7b...') expect(headers['x-line-request-id']).to eq(request_id) expect(headers['x-line-accepted-request-id']).to eq(accepted_request_id) end @@ -975,10 +979,14 @@ alt_text: 'Test Alt Text', contents: Line::Bot::V2::MessagingApi::FlexBubble.new( # FlexBubble has many optional fields direction: 'ltr', - body: Line::Bot::V2::MessagingApi::FlexText.new( - text: 'Test Text', - weight: 'bold', - size: 'xl' + body: Line::Bot::V2::MessagingApi::FlexBox.new( + layout: 'vertical', + contents: [ + Line::Bot::V2::MessagingApi::FlexText.new( + text: 'Test Text', + weight: 'bold' + ) + ] ) ), quick_reply: Line::Bot::V2::MessagingApi::QuickReply.new( @@ -995,10 +1003,15 @@ type: 'bubble', direction: 'ltr', body: { - type: 'text', - text: 'Test Text', - size: 'xl', - weight: 'bold' + type: 'box', + layout: 'vertical', + contents: [ + { + type: 'text', + text: 'Test Text', + weight: 'bold' + } + ] } } } diff --git a/spec/line/bot/v2/utils_spec.rb b/spec/line/bot/v2/utils_spec.rb index 753688f7..11d00073 100644 --- a/spec/line/bot/v2/utils_spec.rb +++ b/spec/line/bot/v2/utils_spec.rb @@ -168,4 +168,116 @@ def initialize(name) expect(Line::Bot::V2::Utils.camelize(input)).to eq(expected_output) end end + + describe '.deep_convert_reserved_words' do + before do + stub_const('Line::Bot::V2::RESERVED_WORDS', %i(id type)) + end + + it 'prefixes reserved keys with an underscore' do + input = { 'id' => 123, 'other' => 'value', 'type' => 'example' } + expected_output = { '_id' => 123, 'other' => 'value', '_type' => 'example' } + expect(Line::Bot::V2::Utils.deep_convert_reserved_words(input)).to eq(expected_output) + end + + it 'handles nested hashes' do + input = { + 'id' => 123, + 'nested' => { 'type' => 'inner', 'normalKey' => 'value' } + } + expected_output = { + '_id' => 123, + 'nested' => { '_type' => 'inner', 'normalKey' => 'value' } + } + expect(Line::Bot::V2::Utils.deep_convert_reserved_words(input)).to eq(expected_output) + end + + it 'handles arrays of hashes' do + input = [ + { 'id' => 1, 'type' => 'one' }, + { 'id' => 2, 'otherKey' => 'value' } + ] + expected_output = [ + { '_id' => 1, '_type' => 'one' }, + { '_id' => 2, 'otherKey' => 'value' } + ] + expect(Line::Bot::V2::Utils.deep_convert_reserved_words(input)).to eq(expected_output) + end + + it 'does not modify non-reserved words' do + input = { 'hello' => 'world' } + expected_output = { 'hello' => 'world' } + expect(Line::Bot::V2::Utils.deep_convert_reserved_words(input)).to eq(expected_output) + end + end + + describe '.hash_to_struct' do + it 'converts a simple hash to a struct' do + input = { foo: 'bar', baz: 'qux' } + result = Line::Bot::V2::Utils.hash_to_struct(input) + + expect(result).to be_a(Struct) + expect(result.foo).to eq('bar') + expect(result.baz).to eq('qux') + end + + it 'handles nested hashes' do + input = { + outer: { + inner: 'value' + }, + another_key: 123 + } + result = Line::Bot::V2::Utils.hash_to_struct(input) + + expect(result.outer).to be_a(Struct) + expect(result.outer.inner).to eq('value') + expect(result.another_key).to eq(123) + end + + it 'includes arrays as-is' do + input = { + list: [1, 2, 3], + info: { + data: [4, 5] + } + } + result = Line::Bot::V2::Utils.hash_to_struct(input) + + expect(result.list).to eq([1, 2, 3]) + expect(result.info.data).to eq([4, 5]) + end + end + + describe '.deep_symbolize' do + it 'converts string keys to symbol keys' do + input = { 'foo' => 'bar', 'baz' => 'qux' } + expected_output = { foo: 'bar', baz: 'qux' } + expect(Line::Bot::V2::Utils.deep_symbolize(input)).to eq(expected_output) + end + + it 'handles nested hashes' do + input = { 'outer' => { 'inner' => 'value' } } + expected_output = { outer: { inner: 'value' } } + expect(Line::Bot::V2::Utils.deep_symbolize(input)).to eq(expected_output) + end + + it 'handles arrays of hashes' do + input = [ + { 'foo' => 'bar' }, + { 'baz' => 'qux' } + ] + expected_output = [ + { foo: 'bar' }, + { baz: 'qux' } + ] + expect(Line::Bot::V2::Utils.deep_symbolize(input)).to eq(expected_output) + end + + it 'does not modify non-hash values' do + input = 'string' + expected_output = 'string' + expect(Line::Bot::V2::Utils.deep_symbolize(input)).to eq(expected_output) + end + end end diff --git a/spec/line/bot/v2/webhook_parser_spec.rb b/spec/line/bot/v2/webhook_parser_spec.rb index 1a235334..027f2710 100644 --- a/spec/line/bot/v2/webhook_parser_spec.rb +++ b/spec/line/bot/v2/webhook_parser_spec.rb @@ -23,7 +23,10 @@ "foo": { "bar": "baz" }, - "mode": "active" + "mode": "active", + "deliveryContext": { + "isRedelivery": false + } } ] } @@ -35,13 +38,15 @@ expect(events).not_to be_empty event = events.first - expect(event).to be_a(Struct) + expect(event).to be_a(Line::Bot::V2::Webhook::Event) expect(event.type).to eq('hoge') expect(event.webhook_event_id).to eq('01G17EJCGAVV66J5WNA7ZCTF6H') expect(event.timestamp).to eq(1650591346705) expect(event.foo).to be_a(Struct) expect(event.foo.bar).to eq('baz') expect(event.mode).to eq('active') + expect(event.delivery_context).to be_a(Line::Bot::V2::Webhook::DeliveryContext) + expect(event.delivery_context.is_redelivery).to be false end end @@ -94,7 +99,7 @@ expect(event.webhook_event_id).to eq('01FZ74A0TDDPYRVKNK77XKC3ZR') expect(event.delivery_context).to be_a(Line::Bot::V2::Webhook::DeliveryContext) expect(event.delivery_context.is_redelivery).to be false - expect(event.message).to be_a(Struct) + expect(event.message).to be_a(Line::Bot::V2::Webhook::MessageContent) expect(event.message.id).to eq('444573844083572737') expect(event.message.type).to eq('hoge') expect(event.message.quote_token).to eq('q3Plxr4AgKd...') @@ -1212,8 +1217,8 @@ expect(event.delivery_context.is_redelivery).to be false expect(event.postback).to be_a(Line::Bot::V2::Webhook::PostbackContent) expect(event.postback.data).to eq('storeId=12345') - expect(event.postback.params).to be_a(Struct) - expect(event.postback.params.datetime).to eq('2017-12-25T01:00') + expect(event.postback.params).to be_a(Hash) + expect(event.postback.params[:datetime]).to eq('2017-12-25T01:00') end end @@ -1266,9 +1271,9 @@ expect(event.delivery_context.is_redelivery).to be false expect(event.postback).to be_a(Line::Bot::V2::Webhook::PostbackContent) expect(event.postback.data).to eq('richmenu-changed-to-b') - expect(event.postback.params).to be_a(Struct) - expect(event.postback.params.new_rich_menu_alias_id).to eq('richmenu-alias-b') - expect(event.postback.params.status).to eq('SUCCESS') + expect(event.postback.params).to be_a(Hash) + expect(event.postback.params[:new_rich_menu_alias_id]).to eq('richmenu-alias-b') + expect(event.postback.params[:status]).to eq('SUCCESS') end end @@ -1848,5 +1853,56 @@ expect(event.things.result.action_results[2].type).to eq('void') end end + + context 'with a MembershioEvent' do + let(:webhook) do + <<~JSON + { + "destination": "xxxxxxxxxx", + "events": [ + { + "type": "membership", + "source": { + "type": "user", + "userId": "U4af4980629..." + }, + "replyToken": "nHuyWiB7yP5Zw52FIkcQobQuGDXCTA", + "membership": { + "type": "joined", + "membershipId": 3189 + }, + "timestamp": 1462629479859, + "mode": "active", + "webhookEventId": "01FZ74A0TDDPYRVKNK77XKC3ZR", + "deliveryContext": { + "isRedelivery": false + } + } + ] + } + JSON + end + + it 'parses the webhook as a MembershipEvent' do + events = parser.parse(webhook, signature) + expect(events).not_to be_empty + + event = events.first + expect(event).to be_a(Line::Bot::V2::Webhook::MembershipEvent) + expect(event.type).to eq('membership') + expect(event.source).to be_a(Line::Bot::V2::Webhook::UserSource) + expect(event.source.type).to eq('user') + expect(event.source.user_id).to eq('U4af4980629...') + expect(event.reply_token).to eq('nHuyWiB7yP5Zw52FIkcQobQuGDXCTA') + expect(event.membership).to be_a(Line::Bot::V2::Webhook::MembershipContent) + expect(event.membership.type).to eq('joined') + expect(event.membership.membership_id).to eq(3189) + expect(event.timestamp).to eq(1462629479859) + expect(event.mode).to eq('active') + expect(event.webhook_event_id).to eq('01FZ74A0TDDPYRVKNK77XKC3ZR') + expect(event.delivery_context).to be_a(Line::Bot::V2::Webhook::DeliveryContext) + expect(event.delivery_context.is_redelivery).to be false + end + end end end