oso-cloud 1.6.0 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b48ecc6151f39a3d6201a3cf2484cfcf38d434f7d611741bd08a6442d321e707
4
- data.tar.gz: b7b901e42b41796396ef6e58c2f0772cf9f03c35f7349e411c66b32ed54bfcdc
3
+ metadata.gz: 747cf1fda61eae9e9a96076e782a503e3c440a3aa7049a6b8f74ce8d0c697273
4
+ data.tar.gz: 5a3fcbb8574c21416fa81dbf8e1054dfef59337da6c72ff686c06304b3c27711
5
5
  SHA512:
6
- metadata.gz: 562381acc9b486e722b03096a18d588e3971f37f811f33c2286ea7a8655ed6fd462b6b07f7551a10f74c0fc85e2da67b245abfd04854de6aaa975acdea6497c9
7
- data.tar.gz: c107f84d6290b88fd757221195909d5ba007c89919161fd52f0b169f6a5e51815b272a6b8752e5db078b63111ea6b6755f6c84f0f3fbb07f53ce31cc3785d4ae
6
+ metadata.gz: 1f0a4732c2f76b499f1dc962a0ee806fd6d2c17abdb734d2a1ce448c35eff4781dafce6aec90f39ede78e06fac44bcdbbb11033949867d562007c3f15a3fcee7
7
+ data.tar.gz: 41b95a2e852e431e1e1598277abeaad8b76bb174ea562d52a6e9c1d9c644f12a5799e1cde75063bf1d6757eb4cd62be0463c369192f8644353bb791a69391e43
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- oso-cloud (1.6.0)
4
+ oso-cloud (1.7.0)
5
5
  faraday (~> 2.5.2)
6
6
  faraday-net_http_persistent (~> 2.0)
7
7
  faraday-retry (~> 2.0.0)
data/lib/oso/api.rb CHANGED
@@ -260,6 +260,16 @@ module OsoCloud
260
260
  end
261
261
  end
262
262
 
263
+ # @!visibility private
264
+ class LocalActionsQuery
265
+ attr_reader :query, :data_bindings
266
+
267
+ def initialize(query:, data_bindings:)
268
+ @query = query
269
+ @data_bindings = data_bindings
270
+ end
271
+ end
272
+
263
273
  # @!visibility private
264
274
  class LocalQueryResult
265
275
  attr_reader :sql
@@ -436,6 +446,13 @@ module OsoCloud
436
446
  LocalQueryResult.new(**result)
437
447
  end
438
448
 
449
+ def post_actions_query(query)
450
+ url = '/actions_query'
451
+ data = LocalActionsQuery.new(query: query, data_bindings: @data_bindings)
452
+ result = POST(url, nil, data, false)
453
+ LocalQueryResult.new(**result)
454
+ end
455
+
439
456
  def clear_data
440
457
  url = '/clear_data'
441
458
  result = POST(url, nil, nil, true)
data/lib/oso/helpers.rb CHANGED
@@ -4,8 +4,9 @@ module OsoCloud
4
4
  # @!visibility private
5
5
  def self.extract_value(x)
6
6
  return OsoCloud::Core::Value.new(type: 'String', id: x) if x.is_a? String
7
-
8
7
  return OsoCloud::Core::Value.new(type: nil, id: nil) if x.nil?
8
+ return OsoCloud::Core::Value.new(type: 'Boolean', id: x.to_s) if [true, false].include? x
9
+ return OsoCloud::Core::Value.new(type: 'Integer', id: x.to_s) if x.is_a? Integer
9
10
 
10
11
  type = (x.type.nil? ? nil : x.type.to_s)
11
12
  id = (x.id.nil? ? nil : x.id.to_s)
data/lib/oso/oso.rb CHANGED
@@ -41,7 +41,7 @@ module OsoCloud
41
41
  # @param actor [OsoCloud::Value]
42
42
  # @param action [String]
43
43
  # @param resource [OsoCloud::Value]
44
- # @return [Array<String>]
44
+ # @return [String]
45
45
  def authorize_local(actor, action, resource)
46
46
  actor_typed_id = actor.to_api_value
47
47
  resource_typed_id = resource.to_api_value
@@ -67,7 +67,7 @@ module OsoCloud
67
67
  # @param action [String]
68
68
  # @param resource_type [String]
69
69
  # @param column [String]
70
- # @return [Array<String>]
70
+ # @return [String]
71
71
  def list_local(actor, action, resource_type, column)
72
72
  actor_typed_id = actor.to_api_value
73
73
  result = @api.post_list_query(
@@ -83,6 +83,29 @@ module OsoCloud
83
83
  result.sql
84
84
  end
85
85
 
86
+ ##
87
+ # Fetches a query that can be run against your database to fetch the actions an actor can perform on a resource.
88
+ #
89
+ # Returns a SQL query to run against the local database
90
+ #
91
+ # @param actor [OsoCloud::Value]
92
+ # @param resource [OsoCloud::Value]
93
+ # @return [String]
94
+ def actions_local(actor, resource)
95
+ actor_typed_id = actor.to_api_value
96
+ resource_typed_id = resource.to_api_value
97
+ result = @api.post_actions_query(
98
+ OsoCloud::Core::ActionsQuery.new(
99
+ actor_type: actor_typed_id.type,
100
+ actor_id: actor_typed_id.id,
101
+ resource_type: resource_typed_id.type,
102
+ resource_id: resource_typed_id.id,
103
+ context_facts: []
104
+ )
105
+ )
106
+ result.sql
107
+ end
108
+
86
109
  ##
87
110
  # Update the active policy
88
111
  #
data/lib/oso/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module OsoCloud
2
- VERSION = '1.6.0'.freeze
2
+ VERSION = '1.7.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oso-cloud
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.0
4
+ version: 1.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Oso Security, Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-04-15 00:00:00.000000000 Z
11
+ date: 2024-05-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday