File: device.rb

package info (click to toggle)
ruby-duo-api 1.5.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 148 kB
  • sloc: ruby: 946; makefile: 4
file content (62 lines) | stat: -rw-r--r-- 2,142 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# frozen_string_literal: true

require_relative 'api_client'
require_relative 'api_helpers'

class DuoApi
  ##
  # Duo Device API (https://duo.com/docs/deviceapi)
  #
  class Device < DuoApi
    attr_accessor :mkey

    def initialize(ikey, skey, host, proxy = nil, mkey:, ca_file: nil, default_params: {})
      super(ikey, skey, host, proxy, ca_file: ca_file, default_params: default_params)

      @mkey = mkey
    end

    def create_device_cache(**optional_params)
      # optional_params: active
      optional_params.tap do |p|
        p[:active] = stringified_python_boolean(p[:active]) if p[:active]
      end
      post("/device/v1/management_systems/#{@mkey}/device_cache", optional_params)[:response]
    end

    def add_device_cache_devices(cache_key:, devices:)
      params = { devices: devices }
      post("/device/v1/management_systems/#{@mkey}/device_cache/#{cache_key}/devices", params)[:response]
    end

    def get_device_cache_devices(cache_key:, **optional_params)
      # optional_params: device_ids
      data_array_path = %i[response devices_retrieved]
      metadata_path = %i[response]
      get_all("/device/v1/management_systems/#{@mkey}/device_cache/#{cache_key}/devices", optional_params,
              data_array_path: data_array_path, metadata_path: metadata_path).dig(*data_array_path)
    end

    def delete_device_cache_devices(cache_key:, devices:)
      params = { devices: devices }
      delete("/device/v1/management_systems/#{@mkey}/device_cache/#{cache_key}/devices", params)[:response]
    end

    def activate_device_cache(cache_key:)
      post("/device/v1/management_systems/#{@mkey}/device_cache/#{cache_key}/activate")[:response]
    end

    def delete_device_cache(cache_key:)
      delete("/device/v1/management_systems/#{@mkey}/device_cache/#{cache_key}")[:response]
    end

    def get_device_caches(status:)
      params = { status: status }
      get("/device/v1/management_systems/#{@mkey}/device_cache", params)[:response]
    end

    def get_device_cache(cache_key:)
      get("/device/v1/management_systems/#{@mkey}/device_cache/#{cache_key}")[:response]
    end
  end
end