Module: Xcal::Parktronic::Routes::Metrics

Included in:
Xcal::Parktronic::Routes
Defined in:
lib/xcal/parktronic/routes/metrics.rb

Instance Method Summary collapse

Instance Method Details

#get_metric(id) ⇒ Object Also known as: metric

Fetches metric with specific ID

Parameters

  • id metric ID

Examples

api.get_metric(2)


38
39
40
41
42
43
# File 'lib/xcal/parktronic/routes/metrics.rb', line 38

def get_metric(id)
  response = get_response("/#{api_version}/metrics/#{id}?access_token=#{access_token}")

  generic_response = Xcal::Parktronic::GenericResponse.new(response.body)
  response.code == '200' ? Xcal::Parktronic::GenericResponse.new(generic_response.metric, self) : generic_response
end

#get_metric_by_name(name) ⇒ Object Also known as: metric_by_name

Fetches metric with specific name

Parameters

  • name metric name

Examples

api.get_metric_by_name('Errors Summary')


53
54
55
56
57
58
# File 'lib/xcal/parktronic/routes/metrics.rb', line 53

def get_metric_by_name(name)
  response = get_response("/#{api_version}/metrics/by_name?#{URI.encode_www_form(access_token: access_token, name: name)}")

  generic_response = Xcal::Parktronic::GenericResponse.new(response.body)
  response.code == '200' ? Xcal::Parktronic::GenericResponse.new(generic_response.metric, self) : generic_response
end

#get_paged_metrics(args = {}) ⇒ Object Also known as: metrics

Fetches latest metrics

Parameters

  • page page number, defaults to 1

  • per_page per page value, defaults to 100

Examples

api.get_paged_metrics
api.metrics
api.metrics(page: 2, per_page: 5)


17
18
19
20
21
22
23
24
25
26
27
# File 'lib/xcal/parktronic/routes/metrics.rb', line 17

def get_paged_metrics(args = {})
  args.merge!(:access_token => access_token)
  response = get_response("/#{api_version}/metrics?#{URI.encode_www_form(args)}")

  generic_response = Xcal::Parktronic::GenericResponse.new(response.body)
  if response.code == '200'
    generic_response.metrics.map { |metric| Xcal::Parktronic::GenericResponse.new(metric.metric, self) }
  else
    generic_response
  end
end

#post_metric(args = {}) ⇒ Object

Posts new metric

Parameters

  • metric hash of Metric data.

  • metric_values array of Metric Values.

  • device_errors array of Device Errors.

Examples

metric_params   = { name: 'metric name', description: 'metric description', created_at: Time.now }
metric_value_1  = { value: 2, custom_timestamp: (Time.now - 240)}
metric_value_2  = { value: 4, custom_timestamp: (Time.now - 120)}
device_error_1  = { timestamp: (Time.now() - 120), value: 5}
api.post_metric( metric: metric_params, metric_values: [metric_value_1, metric_value_2], device_error: [device_error_1] )


75
76
77
78
79
80
81
# File 'lib/xcal/parktronic/routes/metrics.rb', line 75

def post_metric(args = {})
  request = Net::HTTP::Post.new("/#{api_version}/metrics", 'Content-Type' => 'application/json')
  request.body = { access_token: access_token, metric: args[:metric], metric_values: args[:metric_values], device_errors: [args[:device_errors]] }.to_json
  response = http.start { |net| net.request(request) }

  Xcal::Parktronic::GenericResponse.new(response.body)
end

#update_metric(id, params) ⇒ Object

Update metric with specific ID

Parameters

  • id metric ID

  • params metric params

Examples

api.update_metric(2, description: 'new description')


91
92
93
94
95
96
97
# File 'lib/xcal/parktronic/routes/metrics.rb', line 91

def update_metric(id, params)
  request = Net::HTTP::Patch.new("/#{api_version}/metrics/#{id}", 'Content-Type' => 'application/json')
  request.body = { access_token: access_token, metric: params }.to_json

  response = http.start { |net| net.request(request) }
  Xcal::Parktronic::GenericResponse.new(response.body)
end