avmtrf1-tools 0.41.0 → 0.42.0

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: 32ccec06864f6a302202ebb37a37c7bad52f3c9ee3d336cbd775069eb699ef9f
4
- data.tar.gz: 79845abb8223ddca954e98f2144de63756e07b1b1e3551071bed763eddc6c413
3
+ metadata.gz: 73ca9a438c2acc50c74bda3da77ac125188cde76748561f720fce83c98501594
4
+ data.tar.gz: abd8fb430e69bc6e79612950f519f390ac2ba1113642e6be8d615c16e25599e0
5
5
  SHA512:
6
- metadata.gz: b83e3b6b85b4047ee4e37aa83e73dee02846c454a4b7ca7704e94d0fe614fd0c95a2e0ac47700f107abb8dc897d4c7100c37f7bc1d23068daedfc252b0e3ed94
7
- data.tar.gz: 47dd7a59ec8f390e5ab61c4fbc5fcddc08da6b1889db15ef0bbcd90038f9b3816255c93e21d14d15aec7354ebb4da9c577e415729270db471e2c7f605a92775d
6
+ metadata.gz: 56891d5de729710444c7279ed072e826b5f2bb91fe575415d92bf40789187e8342e6db923c0faabd784ac175f6e2601ac8b14e503bcc27217ae0308b67126cb5
7
+ data.tar.gz: fa085736e91ce1b4064c4e2ca217810de040ccc44cac42476ed553ca729f757d0c633d56cfaaee2bef0f9c36b3f9909895879ff303e6313f0821beff9fabf088
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avmtrf1/tools/msgraph/request_mixin'
4
+ require 'eac_rest/entity'
5
+ require 'eac_ruby_utils/core_ext'
6
+
7
+ module Avmtrf1
8
+ module Tools
9
+ module Msgraph
10
+ class Api < ::EacRest::Api
11
+ class Entity < ::EacRest::Entity
12
+ def request_data(url_suffix, &block)
13
+ req = request_data_request(url_suffix, &block)
14
+ req.response.body_data_or_raise
15
+ rescue ::Avmtrf1::Tools::Msgraph::Error => e
16
+ raise e unless e.invalid_token?
17
+
18
+ api.clear_token_info
19
+ req.response.body_data_or_raise
20
+ end
21
+
22
+ private
23
+
24
+ # @return [EacRest::Request]
25
+ def request_data_request(url_suffix, &block)
26
+ req = api.request(url_suffix)
27
+ req = block.call(req) if block
28
+ req.singleton_class.prepend(::Avmtrf1::Tools::Msgraph::RequestMixin)
29
+ req
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -1,13 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'eac_rest/entity'
3
+ require 'avmtrf1/tools/msgraph/api/entity'
4
4
  require 'eac_ruby_utils/core_ext'
5
5
 
6
6
  module Avmtrf1
7
7
  module Tools
8
8
  module Msgraph
9
9
  class Api < ::EacRest::Api
10
- class Member < ::EacRest::Entity
10
+ class Member < ::Avmtrf1::Tools::Msgraph::Api::Entity
11
11
  %w[displayName email roles tenantId userId visibleHistoryStartDateTime]
12
12
  .each do |key|
13
13
  define_method key.underscore do
@@ -1,17 +1,17 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'avmtrf1/tools/msgraph/api/entity'
3
4
  require 'avmtrf1/tools/msgraph/api/team'
4
- require 'eac_rest/entity'
5
5
  require 'eac_ruby_utils/core_ext'
6
6
 
7
7
  module Avmtrf1
8
8
  module Tools
9
9
  module Msgraph
10
10
  class Api < ::EacRest::Api
11
- class Root < ::EacRest::Entity
11
+ class Root < ::Avmtrf1::Tools::Msgraph::Api::Entity
12
12
  # @return [Array<Avmtrf1::Tools::Msgraph::Api::Group>]
13
13
  def joined_teams
14
- api.request('/me/joinedTeams').response.body_data.fetch('value').map do |team_data|
14
+ request_data('/me/joinedTeams').map do |team_data|
15
15
  child_entity(::Avmtrf1::Tools::Msgraph::Api::Team, team_data)
16
16
  end
17
17
  end
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avmtrf1/tools/msgraph/api/entity'
4
+ require 'eac_ruby_utils/core_ext'
5
+
6
+ module Avmtrf1
7
+ module Tools
8
+ module Msgraph
9
+ class Api < ::EacRest::Api
10
+ class Team < ::Avmtrf1::Tools::Msgraph::Api::Entity
11
+ class MemberAdd
12
+ acts_as_instance_method
13
+
14
+ common_constructor :team, :user_id
15
+
16
+ # @return [Hash]
17
+ def result
18
+ team.members_request do |req|
19
+ req.verb(:post).header('Content-type', 'application/json')
20
+ .body_data(body_hash.to_json)
21
+ end
22
+ end
23
+
24
+ # @return [Hash]
25
+ def body_hash
26
+ {
27
+ '@odata.type' => '#microsoft.graph.aadUserConversationMember',
28
+ 'user@odata.bind' => "https://graph.microsoft.com/v1.0/users('#{user_id}')"
29
+ }
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
@@ -1,13 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'eac_rest/entity'
3
+ require 'avmtrf1/tools/msgraph/api/entity'
4
4
  require 'eac_ruby_utils/core_ext'
5
5
 
6
6
  module Avmtrf1
7
7
  module Tools
8
8
  module Msgraph
9
9
  class Api < ::EacRest::Api
10
- class Team < ::EacRest::Entity
10
+ class Team < ::Avmtrf1::Tools::Msgraph::Api::Entity
11
11
  %w[classification createdDateTime description discoverySettings displayName funSettings
12
12
  guestSettings internalId isArchived isMembershipLimitedToOwners memberSettings
13
13
  messagingSettings specialization summary tenantId visibility webUrl].each do |key|
@@ -21,11 +21,17 @@ module Avmtrf1
21
21
  end
22
22
 
23
23
  def members
24
- api.request("/teams/#{id}/members").response.body_data.fetch('value')
25
- .map do |member_data|
24
+ members_request.map do |member_data|
26
25
  child_entity(::Avmtrf1::Tools::Msgraph::Api::Member, member_data)
27
26
  end
28
27
  end
28
+
29
+ # @return [EacRest::Request]
30
+ def members_request(&block)
31
+ request_data("/teams/#{id}/members", &block)
32
+ end
33
+
34
+ require_sub __FILE__, require_mode: :kernel
29
35
  end
30
36
  end
31
37
  end
@@ -17,6 +17,12 @@ module Avmtrf1
17
17
  token_info.fetch(:token).fetch(:accessToken)
18
18
  end
19
19
 
20
+ # @return [void]
21
+ def clear_token_info
22
+ token_info_cache.clear
23
+ reset_cache(:token_info)
24
+ end
25
+
20
26
  # @return [EacRest::Request]
21
27
  def request(service_url_suffix, headers = {}, &body_data_proc)
22
28
  super(service_url_suffix, headers, &body_data_proc)
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_rest/error'
4
+ require 'eac_ruby_utils/core_ext'
5
+
6
+ module Avmtrf1
7
+ module Tools
8
+ module Msgraph
9
+ class Error < ::EacRest::Error
10
+ INVALID_TOKEN_CODE = 'InvalidAuthenticationToken'
11
+
12
+ attr_reader :data
13
+
14
+ def initialize(data)
15
+ @data = data
16
+ super(data.pretty_inspect)
17
+ end
18
+
19
+ # @return [String]
20
+ def code
21
+ data.fetch('code')
22
+ end
23
+
24
+ # @return [Boolean]
25
+ def invalid_token?
26
+ code == INVALID_TOKEN_CODE
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avmtrf1/tools/msgraph/response_mixin'
4
+ require 'eac_ruby_utils/core_ext'
5
+
6
+ module Avmtrf1
7
+ module Tools
8
+ module Msgraph
9
+ module RequestMixin
10
+ def response
11
+ r = super
12
+ r.singleton_class.prepend(::Avmtrf1::Tools::Msgraph::ResponseMixin)
13
+ r
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_rest/response'
4
+ require 'avmtrf1/tools/msgraph/error'
5
+ require 'eac_ruby_utils/core_ext'
6
+
7
+ module Avmtrf1
8
+ module Tools
9
+ module Msgraph
10
+ module ResponseMixin
11
+ ERROR_KEY = 'error'
12
+ VALUE_KEY = 'value'
13
+
14
+ def body_data_or_raise
15
+ r = super
16
+ r.is_a?(::Hash) && r.key?(VALUE_KEY) ? r.fetch(VALUE_KEY) : r
17
+ rescue ::EacRest::Response => e
18
+ raise ::Avmtrf1::Tools::Msgraph::Error, e.body_data.fetch(ERROR_KEY)
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -8,7 +8,9 @@ module Avmtrf1
8
8
  class Runner
9
9
  class Msgraph
10
10
  class JoinedTeams
11
- runner_with :help, :output do
11
+ LIST_COLUMNS = %w[id display_name].freeze
12
+
13
+ runner_with :help, :output_list do
12
14
  desc 'Lista as próprias equipes no MS Teams.'
13
15
  end
14
16
 
@@ -17,12 +19,16 @@ module Avmtrf1
17
19
  run_output
18
20
  end
19
21
 
20
- private
22
+ def list_columns
23
+ LIST_COLUMNS
24
+ end
21
25
 
22
- def output_content
23
- teams.map { |t| "#{t.id}|#{t.display_name}\n" }.join
26
+ def list_rows
27
+ teams
24
28
  end
25
29
 
30
+ private
31
+
26
32
  def teams_uncached
27
33
  api.root_entity.joined_teams.sort_by { |t| [t.display_name, t.id] }
28
34
  end
@@ -0,0 +1,48 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avmtrf1/tools/core_ext'
4
+ require 'avmtrf1/tools/msgraph/error'
5
+
6
+ module Avmtrf1
7
+ module Tools
8
+ class Runner
9
+ class Msgraph
10
+ class Team
11
+ class Member
12
+ class Add
13
+ runner_with :help, :output_item
14
+
15
+ def run
16
+ start_banner
17
+ add_member
18
+ run_output
19
+ fatal_error error.code if error.present?
20
+ end
21
+
22
+ private
23
+
24
+ attr_accessor :error, :result_data
25
+
26
+ def add_member
27
+ self.error = nil
28
+ self.result_data = team.member_add(member_id)
29
+ rescue ::Avmtrf1::Tools::Msgraph::Error => e
30
+ self.error = e
31
+ self.result_data = error.data
32
+ end
33
+
34
+ def start_banner
35
+ infov 'Team', team.id
36
+ infov 'Member ID', member_id
37
+ end
38
+
39
+ def item_hash
40
+ result_data
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avmtrf1/tools/core_ext'
4
+
5
+ module Avmtrf1
6
+ module Tools
7
+ class Runner
8
+ class Msgraph
9
+ class Team
10
+ class Member
11
+ runner_with :help, :subcommands do
12
+ pos_arg :member_id
13
+ subcommands
14
+ end
15
+ for_context :member_id
16
+
17
+ delegate :member_id, to: :parsed
18
+
19
+ require_sub __FILE__
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -8,25 +8,27 @@ module Avmtrf1
8
8
  class Msgraph
9
9
  class Team
10
10
  class Members
11
- runner_with :help, :output
11
+ LIST_COLUMNS = %w[id email display_name].freeze
12
+
13
+ runner_with :help, :output_list
12
14
 
13
15
  def run
14
16
  infov 'Found', members.count
15
17
  run_output
16
18
  end
17
19
 
18
- private
19
-
20
- def members_uncached
21
- team.members.sort_by { |m| [m.email, m.id] }
20
+ def list_columns
21
+ LIST_COLUMNS
22
22
  end
23
23
 
24
- def format_member(member)
25
- %w[email display_name].map { |k| member.send(k) }.join('|')
24
+ def list_rows
25
+ members
26
26
  end
27
27
 
28
- def output_content
29
- members.map { |member| "#{format_member(member)}\n" }.join
28
+ private
29
+
30
+ def members_uncached
31
+ team.members.sort_by { |m| [m.email || '_BLANK_', m.id] }
30
32
  end
31
33
  end
32
34
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Avmtrf1
4
4
  module Tools
5
- VERSION = '0.41.0'
5
+ VERSION = '0.42.0'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: avmtrf1-tools
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.41.0
4
+ version: 0.42.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eduardo H. Bogoni
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-07-19 00:00:00.000000000 Z
11
+ date: 2023-10-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aranha-selenium
@@ -33,7 +33,7 @@ dependencies:
33
33
  version: '0.18'
34
34
  - - ">="
35
35
  - !ruby/object:Gem::Version
36
- version: 0.18.1
36
+ version: 0.18.2
37
37
  type: :runtime
38
38
  prerelease: false
39
39
  version_requirements: !ruby/object:Gem::Requirement
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: '0.18'
44
44
  - - ">="
45
45
  - !ruby/object:Gem::Version
46
- version: 0.18.1
46
+ version: 0.18.2
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: avm-tools
49
49
  requirement: !ruby/object:Gem::Requirement
@@ -64,20 +64,14 @@ dependencies:
64
64
  requirements:
65
65
  - - "~>"
66
66
  - !ruby/object:Gem::Version
67
- version: '0.9'
68
- - - ">="
69
- - !ruby/object:Gem::Version
70
- version: 0.9.1
67
+ version: '0.10'
71
68
  type: :runtime
72
69
  prerelease: false
73
70
  version_requirements: !ruby/object:Gem::Requirement
74
71
  requirements:
75
72
  - - "~>"
76
73
  - !ruby/object:Gem::Version
77
- version: '0.9'
78
- - - ">="
79
- - !ruby/object:Gem::Version
80
- version: 0.9.1
74
+ version: '0.10'
81
75
  - !ruby/object:Gem::Dependency
82
76
  name: inifile
83
77
  requirement: !ruby/object:Gem::Requirement
@@ -101,7 +95,7 @@ dependencies:
101
95
  version: '1.15'
102
96
  - - ">="
103
97
  - !ruby/object:Gem::Version
104
- version: 1.15.3
98
+ version: 1.15.4
105
99
  type: :runtime
106
100
  prerelease: false
107
101
  version_requirements: !ruby/object:Gem::Requirement
@@ -111,7 +105,7 @@ dependencies:
111
105
  version: '1.15'
112
106
  - - ">="
113
107
  - !ruby/object:Gem::Version
114
- version: 1.15.3
108
+ version: 1.15.4
115
109
  - !ruby/object:Gem::Dependency
116
110
  name: recursive-open-struct
117
111
  requirement: !ruby/object:Gem::Requirement
@@ -318,9 +312,14 @@ files:
318
312
  - lib/avmtrf1/tools/core_ext.rb
319
313
  - lib/avmtrf1/tools/msgraph.rb
320
314
  - lib/avmtrf1/tools/msgraph/api.rb
315
+ - lib/avmtrf1/tools/msgraph/api/entity.rb
321
316
  - lib/avmtrf1/tools/msgraph/api/member.rb
322
317
  - lib/avmtrf1/tools/msgraph/api/root.rb
323
318
  - lib/avmtrf1/tools/msgraph/api/team.rb
319
+ - lib/avmtrf1/tools/msgraph/api/team/member_add.rb
320
+ - lib/avmtrf1/tools/msgraph/error.rb
321
+ - lib/avmtrf1/tools/msgraph/request_mixin.rb
322
+ - lib/avmtrf1/tools/msgraph/response_mixin.rb
324
323
  - lib/avmtrf1/tools/msgraph/token_retrieve.rb
325
324
  - lib/avmtrf1/tools/runner.rb
326
325
  - lib/avmtrf1/tools/runner/check_point.rb
@@ -344,6 +343,8 @@ files:
344
343
  - lib/avmtrf1/tools/runner/msgraph/joined_teams.rb
345
344
  - lib/avmtrf1/tools/runner/msgraph/request.rb
346
345
  - lib/avmtrf1/tools/runner/msgraph/team.rb
346
+ - lib/avmtrf1/tools/runner/msgraph/team/member.rb
347
+ - lib/avmtrf1/tools/runner/msgraph/team/member/add.rb
347
348
  - lib/avmtrf1/tools/runner/msgraph/team/members.rb
348
349
  - lib/avmtrf1/tools/runner/msgraph/token.rb
349
350
  - lib/avmtrf1/tools/runner/node_js.rb