Class: CS::Client

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

Overview

Main entry class of the library.

The login functionality always comes in two pair. The Bang (!) method will raise an exception when there is an error and the normal (without !) will return nil when it fails.

The response can be viewed by looking at the Session

client.session # will return the session object

Authentication with User And Password

client = CS::Client.new
client.('username', 'password')

Authentication using OAuth

client = CS::Client.new
client.oauth('CONSUMER_KEY', 'CONSUMER_SECRET', 'ACCESS_TOKEN', 'ACCESS_TOKEN_SECRET')

Using different API server

client = CS::Client.new(base_uri: 'https://api.dev.sense-os.nl')
# or
client.base_uri = 'https://api.dev.sense-os.nl'

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(opts = {}) ⇒ Client

Returns a new instance of Client.



56
57
58
59
60
61
# File 'lib/cs.rb', line 56

def initialize(opts={})
  options = {
    base_uri: 'https://api.sense-os.nl',
  }.merge(opts)
  @base_uri = options[:base_uri]
end

Instance Attribute Details

#loggerObject

Returns the value of attribute logger.



54
55
56
# File 'lib/cs.rb', line 54

def logger
  @logger
end

#sessionObject

Returns the value of attribute session.



53
54
55
# File 'lib/cs.rb', line 53

def session
  @session
end

Instance Method Details

#api_key=(api_key) ⇒ Object

Create new session by specifying api_key

client = CS::Client.new
client.session_id = '12345'


121
122
123
124
125
# File 'lib/cs.rb', line 121

def api_key=(api_key)
  @session = Session.new(base_uri: @base_uri)
  @session.logger = logger
  @session.api_key = api_key
end

#base_uri=(uri) ⇒ Object



63
64
65
66
67
68
69
70
# File 'lib/cs.rb', line 63

def base_uri=(uri)
  @base_uri = uri
  unless session
    @session = Session.new()
  end

  session.base_uri = uri
end

#current_groupsObject



168
169
170
171
172
# File 'lib/cs.rb', line 168

def current_groups
  group = EndPoint::Group.new
  group.session = @session
  group.current_groups
end

#current_userObject

Retrun logged in user



128
129
130
131
132
# File 'lib/cs.rb', line 128

def current_user
  user = EndPoint::User.new
  user.session = @session
  user.current_user
end

#errorsObject

return errors got from session



176
177
178
# File 'lib/cs.rb', line 176

def errors
  return @session.errors if @session
end

#groupsObject



156
157
158
# File 'lib/cs.rb', line 156

def groups
  Relation::GroupRelation.new(@session)
end

#login(user, password, digest = true) ⇒ Object

Create a new session to CommonSense using username and plain text password with ‘login` it will return nil if it not successful

client = CS::Client.new
client.('username', 'password')


93
94
95
# File 'lib/cs.rb', line 93

def (user, password, digest=true)
  login!(user, password, digest) rescue false
end

#login!(user, password, digest = true) ⇒ Object

Create a new session to CommonSense using username and plain text password with ‘login!` it will throw exception if there is an error

client = CS::Client.new
client.login!('username', 'password')


82
83
84
85
86
# File 'lib/cs.rb', line 82

def login!(user, password, digest=true)
  @session = Session.new(base_uri: @base_uri)
  @session.logger = logger
  @session.(user, password, digest)
end

#new_user(hash = {}) ⇒ Object

Create a new user

client = CS::Client.new
client.new_user(username: 'Ahmy')
client.email = '[email protected]'
...
client.save!


141
142
143
144
145
# File 'lib/cs.rb', line 141

def new_user(hash={})
 user = EndPoint::User.new(hash)
 user.session = Session.new(base_uri: @base_uri, authentication: false)
 user
end

#notificationsObject



164
165
166
# File 'lib/cs.rb', line 164

def notifications
  Relation::NotificationRelation.new(@session)
end

#oauth(consumer_key, consumer_secret, access_token, access_token_secret) ⇒ Object

Create a new session to CommonSense using OAuth credentials

client = CS::Client.new
client.('username', 'password')


101
102
103
104
105
# File 'lib/cs.rb', line 101

def oauth(consumer_key, consumer_secret, access_token, access_token_secret)
  @session = Session.new(base_uri: @base_uri)
  @session.logger = logger
  @session.oauth(consumer_key, consumer_secret, access_token, access_token_secret)
end

#sensorsObject



152
153
154
# File 'lib/cs.rb', line 152

def sensors
  Relation::SensorRelation.new(@session)
end

#session_id=(session_id) ⇒ Object

Create new session by manually specifiying ‘session_id` parameter

client = CS::Client.new
client.session_id = '12345'


111
112
113
114
115
# File 'lib/cs.rb', line 111

def session_id=(session_id)
  @session = Session.new(base_uri: @base_uri)
  @session.logger = logger
  @session.session_id = session_id
end

#triggersObject



160
161
162
# File 'lib/cs.rb', line 160

def triggers
  Relation::TriggerRelation.new(@session)
end

#usersObject



147
148
149
# File 'lib/cs.rb', line 147

def users
  Relation::UserRelation.new(@session)
end