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/v1/messaging".freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(app_id, app_key, storage_key, 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.

  • 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”.

  • :storage_dir (String)

    The folder where encryption sessions and settings will be stored

[View source]

47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/selfsdk.rb', line 47

def initialize(app_id, app_key, storage_key, 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: opts.fetch(:storage_dir, MessagingClient::DEFAULT_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


29
30
31
# File 'lib/selfsdk.rb', line 29

def app_id
  @app_id
end

#app_keyTypes (readonly)

the api key for the current app.

Returns:

  • (Types)

    the current value of app_key


29
30
31
# File 'lib/selfsdk.rb', line 29

def app_key
  @app_key
end

#clientObject (readonly)

Returns the value of attribute client.


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

def client
  @client
end

#messaging_clientObject

Returns the value of attribute messaging_client.


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

def messaging_client
  @messaging_client
end

Instance Method Details

#authenticationObject

Provides access to SelfSDK::Services::Authentication service

[View source]

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

def authentication
  @authentication ||= SelfSDK::Services::Authentication.new(messaging, @client)
end

#closeObject

Closes the websocket connection

[View source]

92
93
94
# File 'lib/selfsdk.rb', line 92

def close
  @messaging_client.close
end

#factsObject

Provides access to SelfSDK::Services::Facts service

[View source]

64
65
66
# File 'lib/selfsdk.rb', line 64

def facts
  @facts ||= SelfSDK::Services::Facts.new(messaging, @client)
end

#identityObject

Provides access to SelfSDK::Services::Identity service

[View source]

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

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

#messagingObject

Provides access to SelfSDK::Services::Messaging service

[View source]

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

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