Class: SelfSDK::App

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

Overview

Abstract base class for CLI utilities. Provides some helper methods for the option parser

Constant Summary collapse

BASE_URL =
"https://api.joinself.com".freeze
MESSAGING_URL =
"wss://messaging.joinself.com/v2/messaging".freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(app_id, app_key, storage_key, storage_dir, opts = {}) ⇒ App

Initializes a SelfSDK App

Parameters:

  • app_id (string)

    the app id.

  • app_key (string)

    the app api key provided by developer portal.

  • storage_key (string)

    the key to be used to encrypt persisted data.

  • storage_dir (String)

    The folder where encryption sessions and settings will be stored

  • opts (Hash) (defaults to: {})

    the options to authenticate.

Options Hash (opts):

  • :base_url (String)

    The self provider url.

  • :messaging_url (String)

    The messaging self provider url.

  • :auto_reconnect (Bool)

    Automatically reconnects to websocket if connection is lost (defaults to true).

  • :env (Symbol)

    The environment to be used, defaults to “:production”.



52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/selfsdk.rb', line 52

def initialize(app_id, app_key, storage_key, storage_dir, opts = {})
  SelfSDK.logger.debug "syncing ntp times #{SelfSDK::Time.now}"
  env = opts.fetch(:env, "")

  @client = RestClient.new(base_url(opts), app_id, app_key, env)
  messaging_url = messaging_url(opts)
  unless messaging_url.nil?
    @messaging_client = MessagingClient.new(messaging_url,
                                            @client,
                                            storage_key,
                                            storage_dir: storage_dir,
                                            auto_reconnect: opts.fetch(:auto_reconnect, MessagingClient::DEFAULT_AUTO_RECONNECT),
                                            device_id: opts.fetch(:device_id, MessagingClient::DEFAULT_DEVICE))
  end
end

Instance Attribute Details

#app_idTypes (readonly)

the identifier of the current app.

Returns:

  • (Types)

    the current value of app_id



34
35
36
# File 'lib/selfsdk.rb', line 34

def app_id
  @app_id
end

#app_keyTypes (readonly)

the api key for the current app.

Returns:

  • (Types)

    the current value of app_key



34
35
36
# File 'lib/selfsdk.rb', line 34

def app_key
  @app_key
end

#clientObject (readonly)

Returns the value of attribute client.



38
39
40
# File 'lib/selfsdk.rb', line 38

def client
  @client
end

#messaging_clientObject

Returns the value of attribute messaging_client.



39
40
41
# File 'lib/selfsdk.rb', line 39

def messaging_client
  @messaging_client
end

Instance Method Details

#authenticationObject

Provides access to SelfSDK::Services::Authentication service



74
75
76
# File 'lib/selfsdk.rb', line 74

def authentication
  @authentication ||= SelfSDK::Services::Authentication.new(requester)
end

#chatObject

Provides access to SelfSDK::Services::Chat service



89
90
91
# File 'lib/selfsdk.rb', line 89

def chat
  @chat ||= SelfSDK::Services::Chat.new(messaging, identity)
end

#closeObject

Closes the websocket connection



107
108
109
# File 'lib/selfsdk.rb', line 107

def close
  @messaging_client.close
end

#docsObject

Provides access to SelfSDK::Services::Docs service



94
95
96
# File 'lib/selfsdk.rb', line 94

def docs
  @docs ||= SelfSDK::Services::Docs.new(messaging, @client.self_url)
end

#factsObject

Provides access to SelfSDK::Services::Facts service



69
70
71
# File 'lib/selfsdk.rb', line 69

def facts
  @facts ||= SelfSDK::Services::Facts.new(requester)
end

#identityObject

Provides access to SelfSDK::Services::Identity service



79
80
81
# File 'lib/selfsdk.rb', line 79

def identity
  @identity ||= SelfSDK::Services::Identity.new(@client)
end

#messagingObject

Provides access to SelfSDK::Services::Messaging service



84
85
86
# File 'lib/selfsdk.rb', line 84

def messaging
  @messaging ||= SelfSDK::Services::Messaging.new(@messaging_client)
end