lib/workato/connector/sdk/connector.rb in workato-connector-sdk-1.3.5 vs lib/workato/connector/sdk/connector.rb in workato-connector-sdk-1.3.6

- old
+ new

@@ -1,61 +1,77 @@ # typed: strict # frozen_string_literal: true -using Workato::Extension::HashWithIndifferentAccess - module Workato module Connector module Sdk module SorbetTypes - SourceHash = T.type_alias { T.any(HashWithIndifferentAccess, T::Hash[T.any(Symbol, String), T.untyped]) } + SourceHash = T.type_alias do + T.any(ActiveSupport::HashWithIndifferentAccess, T::Hash[T.any(Symbol, String), T.untyped]) + end end class Connector extend T::Sig # @api private - sig { returns(HashWithIndifferentAccess) } + sig { returns(ActiveSupport::HashWithIndifferentAccess) } attr_reader :source sig { params(path_to_source_code: String, settings: SorbetTypes::SettingsHash).returns(Connector) } def self.from_file(path_to_source_code = DEFAULT_CONNECTOR_PATH, settings = {}) new(eval(File.read(path_to_source_code), binding, path_to_source_code), settings) # rubocop:disable Security/Eval end sig { params(definition: SorbetTypes::SourceHash, settings: SorbetTypes::SettingsHash).void } def initialize(definition, settings = {}) - @source = T.let(HashWithIndifferentAccess.wrap(definition), HashWithIndifferentAccess) - @settings = T.let(HashWithIndifferentAccess.wrap(settings), HashWithIndifferentAccess) - @connection_source = T.let(HashWithIndifferentAccess.wrap(@source[:connection]), HashWithIndifferentAccess) - @methods_source = T.let(HashWithIndifferentAccess.wrap(@source[:methods]), HashWithIndifferentAccess) + @source = T.let( + Utilities::HashWithIndifferentAccess.wrap(definition), + ActiveSupport::HashWithIndifferentAccess + ) + @settings = T.let( + Utilities::HashWithIndifferentAccess.wrap(settings), + ActiveSupport::HashWithIndifferentAccess + ) + @connection_source = T.let( + Utilities::HashWithIndifferentAccess.wrap(@source[:connection]), + ActiveSupport::HashWithIndifferentAccess + ) + @methods_source = T.let( + Utilities::HashWithIndifferentAccess.wrap(@source[:methods]), + ActiveSupport::HashWithIndifferentAccess + ) end sig { returns(T.nilable(String)) } def title @source[:title] end sig { returns(ActionsProxy) } def actions - @actions = T.let(@actions, T.nilable(ActionsProxy)) - @actions ||= ActionsProxy.new( - actions: source[:actions].presence || {}, - methods: methods_source, - object_definitions: object_definitions, - connection: connection, - streams: streams + @actions ||= T.let( + ActionsProxy.new( + actions: source[:actions].presence || {}, + methods: methods_source, + object_definitions: object_definitions, + connection: connection, + streams: streams + ), + T.nilable(ActionsProxy) ) end sig { returns(MethodsProxy) } def methods - @methods = T.let(@methods, T.nilable(MethodsProxy)) - @methods ||= MethodsProxy.new( - methods: methods_source, - connection: connection, - streams: streams + @methods ||= T.let( + MethodsProxy.new( + methods: methods_source, + connection: connection, + streams: streams + ), + T.nilable(MethodsProxy) ) end sig { params(settings: T.nilable(SorbetTypes::SettingsHash)).returns(T.untyped) } def test(settings = nil) @@ -70,82 +86,92 @@ @test.execute(settings) end sig { returns(TriggersProxy) } def triggers - @triggers = T.let(@triggers, T.nilable(TriggersProxy)) - @triggers ||= TriggersProxy.new( - triggers: source[:triggers].presence || {}, - methods: methods_source, - connection: connection, - object_definitions: object_definitions, - streams: streams + @triggers ||= T.let( + TriggersProxy.new( + triggers: source[:triggers].presence || {}, + methods: methods_source, + connection: connection, + object_definitions: object_definitions, + streams: streams + ), + T.nilable(TriggersProxy) ) end sig { returns(ObjectDefinitions) } def object_definitions - @object_definitions = T.let(@object_definitions, T.nilable(ObjectDefinitions)) - @object_definitions ||= ObjectDefinitions.new( - object_definitions: source[:object_definitions].presence || {}, - methods: methods_source, - connection: connection + @object_definitions ||= T.let( + ObjectDefinitions.new( + object_definitions: source[:object_definitions].presence || {}, + methods: methods_source, + connection: connection + ), + T.nilable(ObjectDefinitions) ) end sig { returns(PickListsProxy) } def pick_lists - @pick_lists = T.let(@pick_lists, T.nilable(PickListsProxy)) - @pick_lists ||= PickListsProxy.new( - pick_lists: source[:pick_lists].presence || {}, - methods: methods_source, - connection: connection + @pick_lists ||= T.let( + PickListsProxy.new( + pick_lists: source[:pick_lists].presence || {}, + methods: methods_source, + connection: connection + ), + T.nilable(PickListsProxy) ) end sig { returns(Connection) } def connection - @connection = T.let(@connection, T.nilable(Connection)) - @connection ||= Connection.new( - methods: methods_source, - connection: connection_source, - settings: settings + @connection ||= T.let( + Connection.new( + methods: methods_source, + connection: connection_source, + settings: settings + ), + T.nilable(Connection) ) end sig { returns(Streams) } def streams - @streams = T.let(@streams, T.nilable(Streams)) - @streams ||= Streams.new( - streams: streams_sources, - methods: methods_source, - connection: connection + @streams ||= T.let( + Streams.new( + streams: streams_sources, + methods: methods_source, + connection: connection + ), + T.nilable(Streams) ) end private - sig { returns(HashWithIndifferentAccess) } + sig { returns(ActiveSupport::HashWithIndifferentAccess) } def streams_sources - @streams_sources = T.let(@streams_sources, T.nilable(HashWithIndifferentAccess)) + @streams_sources = T.let(@streams_sources, T.nilable(ActiveSupport::HashWithIndifferentAccess)) return @streams_sources if @streams_sources - @streams_sources = HashWithIndifferentAccess.new + @streams_sources = ActiveSupport::HashWithIndifferentAccess.new @streams_sources.merge!(source[:streams].presence || {}) (source[:actions] || {}).values.map do |action| @streams_sources.merge!(action[:streams] || {}) end (source[:trigger] || {}).values.map do |trigger| @streams_sources.merge!(trigger[:streams] || {}) end @streams_sources end - sig { returns(HashWithIndifferentAccess) } + sig { returns(ActiveSupport::HashWithIndifferentAccess) } attr_reader :methods_source - sig { returns(HashWithIndifferentAccess) } + sig { returns(ActiveSupport::HashWithIndifferentAccess) } attr_reader :connection_source sig { returns(SorbetTypes::SettingsHash) } attr_reader :settings end @@ -153,13 +179,13 @@ class ActionsProxy extend T::Sig sig do params( - actions: HashWithIndifferentAccess, + actions: ActiveSupport::HashWithIndifferentAccess, object_definitions: ObjectDefinitions, - methods: HashWithIndifferentAccess, + methods: ActiveSupport::HashWithIndifferentAccess, connection: Connection, streams: Streams ).void end def initialize(actions:, object_definitions:, methods:, connection:, streams:) @@ -176,11 +202,11 @@ public_send(action) end private - sig { returns(HashWithIndifferentAccess) } + sig { returns(ActiveSupport::HashWithIndifferentAccess) } attr_reader :methods sig { returns(Connection) } attr_reader :connection @@ -188,11 +214,11 @@ attr_reader :streams sig { returns(ObjectDefinitions) } attr_reader :object_definitions - sig { params(actions_source: HashWithIndifferentAccess).void } + sig { params(actions_source: ActiveSupport::HashWithIndifferentAccess).void } def define_action_methods(actions_source) actions_source.each do |action, definition| define_singleton_method(action) do |input_ = nil| @actions[action] ||= Action.new( action: definition, @@ -214,11 +240,11 @@ class MethodsProxy extend T::Sig sig do params( - methods: HashWithIndifferentAccess, + methods: ActiveSupport::HashWithIndifferentAccess, connection: Connection, streams: Streams ).void end def initialize(methods:, connection:, streams:) @@ -229,11 +255,11 @@ define_action_methods end private - sig { returns(HashWithIndifferentAccess) } + sig { returns(ActiveSupport::HashWithIndifferentAccess) } attr_reader :methods sig { returns(Connection) } attr_reader :connection @@ -263,12 +289,12 @@ class PickListsProxy extend T::Sig sig do params( - pick_lists: HashWithIndifferentAccess, - methods: HashWithIndifferentAccess, + pick_lists: ActiveSupport::HashWithIndifferentAccess, + methods: ActiveSupport::HashWithIndifferentAccess, connection: Connection ).void end def initialize(pick_lists:, methods:, connection:) @methods = methods @@ -277,17 +303,17 @@ define_action_methods(pick_lists) end private - sig { returns(HashWithIndifferentAccess) } + sig { returns(ActiveSupport::HashWithIndifferentAccess) } attr_reader :methods sig { returns(Connection) } attr_reader :connection - sig { params(pick_lists_source: HashWithIndifferentAccess).void } + sig { params(pick_lists_source: ActiveSupport::HashWithIndifferentAccess).void } def define_action_methods(pick_lists_source) pick_lists_source.each do |pick_list, pick_list_proc| define_singleton_method(pick_list) do |settings = nil, args = {}| @actions[pick_list] ||= Action.new( action: { @@ -316,13 +342,13 @@ class TriggersProxy extend T::Sig sig do params( - triggers: HashWithIndifferentAccess, + triggers: ActiveSupport::HashWithIndifferentAccess, object_definitions: ObjectDefinitions, - methods: HashWithIndifferentAccess, + methods: ActiveSupport::HashWithIndifferentAccess, connection: Connection, streams: Streams ).void end def initialize(triggers:, object_definitions:, methods:, connection:, streams:) @@ -339,11 +365,11 @@ public_send(trigger) end private - sig { returns(HashWithIndifferentAccess) } + sig { returns(ActiveSupport::HashWithIndifferentAccess) } attr_reader :methods sig { returns(Connection) } attr_reader :connection @@ -351,10 +377,10 @@ attr_reader :streams sig { returns(ObjectDefinitions) } attr_reader :object_definitions - sig { params(triggers_source: HashWithIndifferentAccess).void } + sig { params(triggers_source: ActiveSupport::HashWithIndifferentAccess).void } def define_trigger_methods(triggers_source) triggers_source.each do |trigger, definition| define_singleton_method(trigger) do |input_ = nil, payload = {}, headers = {}, params = {}| @triggers[trigger] ||= Trigger.new( trigger: definition,