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

[View source]

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

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


31
32
33
# File 'lib/selfsdk.rb', line 31

def app_id
  @app_id
end

#app_keyTypes (readonly)

the api key for the current app.

Returns:

  • (Types)

    the current value of app_key


31
32
33
# File 'lib/selfsdk.rb', line 31

def app_key
  @app_key
end

#clientObject (readonly)

Returns the value of attribute client.


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

def client
  @client
end

#messaging_clientObject

Returns the value of attribute messaging_client.


36
37
38
# File 'lib/selfsdk.rb', line 36

def messaging_client
  @messaging_client
end

Instance Method Details

#authenticationObject

Provides access to SelfSDK::Services::Authentication service

[View source]

71
72
73
# File 'lib/selfsdk.rb', line 71

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

#closeObject

Closes the websocket connection

[View source]

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

def close
  @messaging_client.close
end

#factsObject

Provides access to SelfSDK::Services::Facts service

[View source]

66
67
68
# File 'lib/selfsdk.rb', line 66

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

#identityObject

Provides access to SelfSDK::Services::Identity service

[View source]

76
77
78
# File 'lib/selfsdk.rb', line 76

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

#messagingObject

Provides access to SelfSDK::Services::Messaging service

[View source]

81
82
83
# File 'lib/selfsdk.rb', line 81

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