Class: Sensingplaza::Client

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(mailaddress = nil, logger = nil) ⇒ Client

mailaddress - String ex) [email protected] logger - Logger



12
13
14
15
16
17
18
# File 'lib/sensingplaza/client.rb', line 12

def initialize(mailaddress = nil, logger = nil)
  @sensingplaza_url = SENSINGPLAZA_URL
  @mailaddress = mailaddress
  @logger = logger

  @webreq = WebRequest.new(@sensingplaza_url, @logger)
end

Instance Attribute Details

#mailaddressObject

Returns the value of attribute mailaddress.



8
9
10
# File 'lib/sensingplaza/client.rb', line 8

def mailaddress
  @mailaddress
end

Instance Method Details

#get_data(sensorkey, datetime) ⇒ Object


sensorkey - String(s) ex) “12abe9de” or [“12abe9de”, “433bedd2”, …] datetime - String ex) “2018-07-04 12:00:00”



145
146
147
148
149
150
151
152
153
154
155
# File 'lib/sensingplaza/client.rb', line 145

def get_data(sensorkey, datetime)
  return nil if @mailaddress.nil?
  datetime = Time.now.to_s[0, 19] if datetime.nil?
  return nil unless datetime_format?(datetime)

  skeys = skey_forming(sensorkey)
  return nil if skeys.empty?
        
  result = download(skeys, datetime)
  return result
end

#get_image(sensorkey, datetime) ⇒ Object


sensorkey - String(s) ex) “12abe9de” or [“12abe9de”, “433bedd2”, …] datetime - String ex) “2018-05-22 12:34:00”



210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
# File 'lib/sensingplaza/client.rb', line 210

def get_image(sensorkey, datetime)
  return nil if @mailaddress.nil?
  return nil unless datetime_format?(datetime)
  skeys = skey_forming(sensorkey)
  return nil if skeys.empty?

  result = Hash.new
  datas = download(skeys, datetime)
  datas.each do |k, v|
    unless v.nil?
      imgdat = Base64.strict_decode64(v)
      imgtype, mimetype = check_image_format(imgdat[0, 4]) # first 4bytes
      fname = "#{datetime.gsub(/[\-\s\:]/, "")}.#{imgtype}"
      result[k] = { "blob" => imgdat,
                    "filename" => fname, "content-type" => mimetype }
    else
      result[k] = nil
    end
  end
  return result      
end

#get_last_data(sensorkey, isFromAllData = false) ⇒ Object


sensorkey - String(s) ex) “” or [“”, “”, …]



176
177
178
179
180
181
182
183
184
185
186
187
# File 'lib/sensingplaza/client.rb', line 176

def get_last_data(sensorkey, isFromAllData = false)
  return nil if @mailaddress.nil?
  
  skeys = skey_forming(sensorkey)
  return nil if skeys.empty?

  datetime = nil
  max_datetime = Time.now.to_s[0, 19]
  max_datetime = nil if isFromAllData
  result = download(skeys, datetime, max_datetime)
  return result      
end

#get_period_data(sensorkey, sdatetime, edatetime) ⇒ Object


sensorkey - String(s) sdatetme, edatetime - String ex) “2018-07-04 12:12:00”

getting data from sdatetime to edatetime

result: { :skey => [[:datetime, value], …], [:datetime, value], …] }



162
163
164
165
166
167
168
169
170
171
172
# File 'lib/sensingplaza/client.rb', line 162

def get_period_data(sensorkey, sdatetime, edatetime)
  return nil if @mailaddress.nil?
  return nil unless datetime_format?(sdatetime)
  return nil unless datetime_format?(edatetime)

  skeys = skey_forming(sensorkey)
  return nil if skeys.empty?

  result = bulkdown(skeys, sdatetime, edatetime)
  return result      
end

#get_period_image(sensorkey, sdatetime, edatetime) ⇒ Object


sensorkey - String(s) ex) “” or [“”, “”, …] sdatetime, edatetime -String ex) “2018-07-05 12:00:00”



235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
# File 'lib/sensingplaza/client.rb', line 235

def get_period_image(sensorkey, sdatetime, edatetime)
  return nil if @mailaddress.nil?
  return nil unless datetime_format?(sdatetime)
  return nil unless datetime_format?(edatetime)

  skeys = skey_forming(sensorkey)
  return nil if skeys.empty?

  result = Array.new
  datas = bulkdown(skeys, sdatetime, edatetime)
  datas.each do |dat|
    dt = dat["datetime"]
    rehash = Hash.new
    rehash["datetime"] = dt
    dat["data"].each do |k, v|
      unless v.nil?
        imgdat = Base64.strict_decode64(v)
        imgtype, mimetype = check_image_format(imgdat[0, 4]) # first 4bytes
        fname = "#{dt.gsub(/[\-\s\:]/, "")}.#{imgtype}"
        rehash[k] = { "blob" => imgdat,
                      "filename" => fname, "content-type" => mimetype }
      else
        rehash[k] = nil
      end
    end
    result.push(rehash)
  end
  return result
end

#get_sensor_information(sensorkey) ⇒ Object


sensorkey - String(s) ex) “” or [“”, “”, …]



289
290
291
292
293
294
295
296
297
298
299
300
# File 'lib/sensingplaza/client.rb', line 289

def get_sensor_information(sensorkey)
  skeys = skey_forming(sensorkey)
  return nil if skeys.empty?

  endpoint = "/api/sensor_info"
  req = { "mailaddress" => @mailaddress,
          "data" => skeys
        }
  jsonstr = @webreq.post(req, endpoint)
  response = JSON.parse(jsonstr)
  return response["data"]      
end

#logger=(val) ⇒ Object



24
25
26
27
# File 'lib/sensingplaza/client.rb', line 24

def logger=(val)
  @logger = val
  @webreq.logger = val
end

#push_bulkdata(sensorkey, bulkdata) ⇒ Object


sensorkey - String ex) “ssssssss” bulkdata - Array ex) [[:datetime, value], [:datetime, value], …]



305
306
307
308
309
310
311
312
# File 'lib/sensingplaza/client.rb', line 305

def push_bulkdata(sensorkey, bulkdata)
  return nil if @mailaddress.nil?
  skeys = skey_forming(sensorkey)
  return nil if skeys.empty?

  result = bulkupload(skeys, bulkdata)
  return result
end

#push_data(sensorkey, data, datetime = nil) ⇒ Object


sensorkey - String(s) ex) “” or [“”, “”, …] data - value(s) ex) 12.45 or [12.45, “on”, …] datetime - String or Nil ex) “2018-07-04 12:34:00”, nil -> now time



193
194
195
196
197
198
199
200
201
202
203
204
205
# File 'lib/sensingplaza/client.rb', line 193

def push_data(sensorkey, data, datetime = nil)
  return nil if @mailaddress.nil?
  datetime = Time.now.to_s[0, 19] if datetime.nil?
  return nil unless datetime_format?(datetime)

  skeys = skey_forming(sensorkey)
  return nil if skeys.empty?
  datas = data_forming(data)
  return nil if datas.empty?
  
  result = upload(skeys, datetime, datas)
  return result
end

#push_image(sensorkey, data, datetime = nil) ⇒ Object


sensorkey -String(s) ex) “12abe9de” or [“12abe9de”, “433bedd2”, …] data - image data(binary) datetime - String ex) “2018-07-04 12:34:00” or nil -> now time



269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
# File 'lib/sensingplaza/client.rb', line 269

def push_image(sensorkey, data, datetime = nil)
  return nil if @mailaddress.nil?
  datetime = Time.now.to_s[0, 19] if datetime.nil?
  return nil unless datetime_format?(datetime)

  skeys = skey_forming(sensorkey)
  return nil if skeys.empty?
  datas = data_forming(data)
  return nil if datas.empty?

  imgs = Array.new
  datas.each do |dat|
    imgs.push(Base64.strict_encode64(dat))        
  end
  result = upload(skeys, datetime, imgs)
  return result
end

#sensingplaza_url=(val) ⇒ Object



20
21
22
23
# File 'lib/sensingplaza/client.rb', line 20

def sensingplaza_url=(val)
  @sensingplaza_url = val
  @webreq.url = val
end