seamapi 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 897bff52e2534e4e660e4e14b9848d88d6c76bd9c555e85eb5349daa37ec13ad
4
- data.tar.gz: 64c3d78b0f55d9f3591ad29af3fee82c1f11eaa7f5d9332a01141880865cc00b
3
+ metadata.gz: 98c75f0f7e1acbd1349c75b7b7897a7d970707b60a20c473d0005c1616ad299f
4
+ data.tar.gz: 2985200c8c26d3ad45f544ee54eb1e6baa781e5927f29e846a57281b126f4cec
5
5
  SHA512:
6
- metadata.gz: dba07dabd2fcb9aca06be18fd69511667b69aa3d9dd43b64acf0268e33a0a2146b42b1737082a9e7e60e95c0d7a2c81cad379551a18ec3b75eeabeaa7dc9ed4a
7
- data.tar.gz: 5df04ce74120a3faa29c4a42c48f1e96a2a07b4c6e5590b6b5dd26189b4ed012ca5c3f62be832d6456f76f1e656b4af35f10fc292bfd9b9204d597d96ddd820b
6
+ metadata.gz: 52710d4889719d6e1e19462009c3b4f3f932e8fd91d62831a486a8eaba5297dfdb017173b6c8264ce427410c5b789430820c2bdcd9226d86d72fff7a25879ca2
7
+ data.tar.gz: ad802beb44be2e50b944c3acd82a7284b235e54e99440e91d469fe7bbb53dc2aa0f15456b1cfa859376c1625f4009852806cc8f7fbb168e375db2a193597ea15
data/.rubocop.yml CHANGED
@@ -24,3 +24,6 @@ Gemspec/RequireMFA:
24
24
 
25
25
  Metrics/AbcSize:
26
26
  Enabled: false
27
+
28
+ Style/BlockDelimiters:
29
+ Enabled: false
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- seamapi (0.0.2)
4
+ seamapi (0.0.3)
5
5
  http (~> 5.0.0)
6
6
 
7
7
  GEM
data/lib/seam/client.rb CHANGED
@@ -47,7 +47,7 @@ module Seam
47
47
 
48
48
  data = response[inner_object]
49
49
 
50
- klass.load_from_response(data, @client)
50
+ klass.load_from_response(data, self)
51
51
  end
52
52
 
53
53
  def request_seam(method, path, config = {})
@@ -13,7 +13,9 @@ module Seam
13
13
  )
14
14
  end
15
15
 
16
- def list(device_id)
16
+ def list(device_or_id)
17
+ device_id = device_or_id.is_a?(Seam::Device) ? device_or_id.device_id : device_or_id
18
+
17
19
  request_seam_object(
18
20
  :get,
19
21
  "/access_codes/list",
@@ -12,6 +12,10 @@ module Seam
12
12
  def request_seam_object(*attrs)
13
13
  client.request_seam_object(*attrs)
14
14
  end
15
+
16
+ def request_seam(*attrs)
17
+ client.request_seam(*attrs)
18
+ end
15
19
  end
16
20
  end
17
21
  end
@@ -40,7 +40,7 @@ module Seam
40
40
  :get,
41
41
  "/locks/list",
42
42
  Seam::Device,
43
- "devices",
43
+ "locks",
44
44
  params: params
45
45
  )
46
46
  end
@@ -50,7 +50,7 @@ module Seam
50
50
  :get,
51
51
  "/locks/get",
52
52
  Seam::Device,
53
- "device",
53
+ "lock",
54
54
  params: {
55
55
  device_id: device_id(device_or_id)
56
56
  }
@@ -23,12 +23,11 @@ module Seam
23
23
  )
24
24
  end
25
25
 
26
- def reset_sandbox
27
- Seam::Request.new(
28
- @client.api_key,
29
- @client.base_uri
30
- ).perform(
31
- :post, "/workspaces/reset_sandbox", {}
26
+ def reset_sandbox(workspace_id)
27
+ request_seam(
28
+ :post,
29
+ "/workspaces/reset_sandbox",
30
+ params: { workspace_id: workspace_id }
32
31
  )
33
32
  end
34
33
  end
@@ -2,6 +2,8 @@
2
2
 
3
3
  module Seam
4
4
  class AccessCode < BaseResource
5
- attr_reader :access_code_id, :name, :starts_at, :ends_at, :type, :created_at, :code
5
+ attr_reader :access_code_id, :name, :type, :code
6
+
7
+ date_accessor :starts_at, :ends_at
6
8
  end
7
9
  end
@@ -4,17 +4,29 @@ module Seam
4
4
  class ActionAttempt < BaseResource
5
5
  attr_accessor :action_attempt_id, :action_type, :status, :result
6
6
 
7
+ SLEEP_TIME = 0.2
8
+ MAX_ATTEMPTS = 10
9
+
7
10
  def wait_until_finished
8
11
  while @status == "pending"
9
- res = Seam::Request.new(@client.api_key, @client.base_uri).perform(
10
- :get,
11
- "/action_attempts/get",
12
- params: { action_attempt_id: @action_attempt_id }
13
- )
14
- update_from_response(res["action_attempt"])
15
- sleep(0.2)
12
+ update!
13
+
14
+ sleep(SLEEP_TIME)
16
15
  end
16
+
17
17
  self
18
18
  end
19
+
20
+ def update!
21
+ response = @client.request_seam(
22
+ :get,
23
+ "/action_attempts/get",
24
+ params: {
25
+ action_attempt_id: action_attempt_id
26
+ }
27
+ )
28
+
29
+ update_from_response(response["action_attempt"])
30
+ end
19
31
  end
20
32
  end
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Seam
4
4
  class BaseResource
5
- attr_accessor :data
5
+ attr_accessor :data, :client
6
6
 
7
7
  def initialize(data, client = nil)
8
8
  @data = data
@@ -36,5 +36,23 @@ module Seam
36
36
  .map { |k| " #{k}=#{send(k).inspect}" }
37
37
  .join("\n") + ">"
38
38
  end
39
+
40
+ def self.date_accessor(*attrs)
41
+ attrs.each do |attr|
42
+ define_method(attr) do
43
+ value = instance_variable_get("@#{attr}")
44
+
45
+ raise "No value for #{attr} set" if value.nil?
46
+
47
+ parse_datetime(value)
48
+ end
49
+ end
50
+ end
51
+
52
+ protected
53
+
54
+ def parse_datetime(value)
55
+ Time.parse(value)
56
+ end
39
57
  end
40
58
  end
@@ -3,7 +3,9 @@
3
3
  module Seam
4
4
  class ConnectWebview < BaseResource
5
5
  attr_accessor :connect_webview_id, :custom_redirect_url, :url, :workspace_id, :device_selection_mode,
6
- :accepted_providers, :accepted_devices, :any_provider_allowed, :any_device_allowed, :created_at,
6
+ :accepted_providers, :accepted_devices, :any_provider_allowed, :any_device_allowed,
7
7
  :login_successful, :status
8
+
9
+ date_accessor :created_at
8
10
  end
9
11
  end
@@ -2,6 +2,8 @@
2
2
 
3
3
  module Seam
4
4
  class ConnectedAccount < BaseResource
5
- attr_accessor :connected_account_id, :created_at, :user_identifier, :account_type
5
+ attr_accessor :connected_account_id, :user_identifier, :account_type
6
+
7
+ date_accessor :created_at
6
8
  end
7
9
  end
@@ -3,5 +3,7 @@
3
3
  module Seam
4
4
  class Device < BaseResource
5
5
  attr_accessor :device_id, :device_type, :properties
6
+
7
+ date_accessor :created_at
6
8
  end
7
9
  end
data/lib/seam/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Seam
4
- VERSION = "0.0.2"
4
+ VERSION = "0.0.3"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: seamapi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Abimael Martell
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-07-07 00:00:00.000000000 Z
11
+ date: 2022-07-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: http