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



47
48
49
50
51
52
53
54
55
56
57
58
59
60
# 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_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



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

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

#closeObject

Closes the websocket connection



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

def close
  @messaging_client.close
end

#factsObject

Provides access to SelfSDK::Services::Facts service



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

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

#identityObject

Provides access to SelfSDK::Services::Identity service



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

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

#messagingObject

Provides access to SelfSDK::Services::Messaging service



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

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