avmtrf1-tools 0.41.1 → 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: 7c004c200bbd53b895d1ab4b9df5d5e2f01f7d0b3c77605fb6f1049e96c01d66
4
- data.tar.gz: 100127b8522690406d21d3f352e97546ddbd9b066127955d227b9bd57f6fa07a
3
+ metadata.gz: 73ca9a438c2acc50c74bda3da77ac125188cde76748561f720fce83c98501594
4
+ data.tar.gz: abd8fb430e69bc6e79612950f519f390ac2ba1113642e6be8d615c16e25599e0
5
5
  SHA512:
6
- metadata.gz: b46dc0766ba4a2f5b3c6515608192f79ad8fc301b23b2b57a8a892b1307dc5bd35a95e2daf7435c4b575211d039456b28ee6eb2721e4995dd8386fc55f25c357
7
- data.tar.gz: a3eb77e607af031c654dd26e5fef97dc7cfc195d140073dd3343b1087e6e073a6757b7a38084e6dc83cf741736df47cb27acdcdc16e1057a3a2ca6dfabfbaa4e
6
+ metadata.gz: 56891d5de729710444c7279ed072e826b5f2bb91fe575415d92bf40789187e8342e6db923c0faabd784ac175f6e2601ac8b14e503bcc27217ae0308b67126cb5
7
+ data.tar.gz: fa085736e91ce1b4064c4e2ca217810de040ccc44cac42476ed553ca729f757d0c633d56cfaaee2bef0f9c36b3f9909895879ff303e6313f0821beff9fabf088
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'avmtrf1/tools/msgraph/request_mixin'
3
4
  require 'eac_rest/entity'
4
5
  require 'eac_ruby_utils/core_ext'
5
6
 
@@ -8,13 +9,25 @@ module Avmtrf1
8
9
  module Msgraph
9
10
  class Api < ::EacRest::Api
10
11
  class Entity < ::EacRest::Entity
11
- def request_data(url_suffix)
12
- req = api.request(url_suffix)
12
+ def request_data(url_suffix, &block)
13
+ req = request_data_request(url_suffix, &block)
13
14
  req.response.body_data_or_raise
14
- rescue ::Avmtrf1::Tools::Msgraph::InvalidTokenError
15
+ rescue ::Avmtrf1::Tools::Msgraph::Error => e
16
+ raise e unless e.invalid_token?
17
+
15
18
  api.clear_token_info
16
19
  req.response.body_data_or_raise
17
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
18
31
  end
19
32
  end
20
33
  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
@@ -21,10 +21,17 @@ module Avmtrf1
21
21
  end
22
22
 
23
23
  def members
24
- request_data("/teams/#{id}/members").map do |member_data|
24
+ members_request.map do |member_data|
25
25
  child_entity(::Avmtrf1::Tools::Msgraph::Api::Member, member_data)
26
26
  end
27
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
28
35
  end
29
36
  end
30
37
  end
@@ -1,6 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'avmtrf1/tools/msgraph/request_mixin'
4
3
  require 'eac_rest/api'
5
4
  require 'eac_ruby_utils/core_ext'
6
5
 
@@ -26,10 +25,8 @@ module Avmtrf1
26
25
 
27
26
  # @return [EacRest::Request]
28
27
  def request(service_url_suffix, headers = {}, &body_data_proc)
29
- r = super(service_url_suffix, headers, &body_data_proc)
30
- .header('Authorization', "Bearer #{access_token}")
31
- r.singleton_class.prepend(::Avmtrf1::Tools::Msgraph::RequestMixin)
32
- r
28
+ super(service_url_suffix, headers, &body_data_proc)
29
+ .header('Authorization', "Bearer #{access_token}")
33
30
  end
34
31
 
35
32
  def fs_object_id
@@ -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
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'avmtrf1/tools/msgraph/invalid_token_error'
3
+ require 'eac_rest/response'
4
+ require 'avmtrf1/tools/msgraph/error'
4
5
  require 'eac_ruby_utils/core_ext'
5
6
 
6
7
  module Avmtrf1
@@ -8,42 +9,13 @@ module Avmtrf1
8
9
  module Msgraph
9
10
  module ResponseMixin
10
11
  ERROR_KEY = 'error'
11
- INVALID_TOKEN_CODE = 'InvalidAuthenticationToken'
12
12
  VALUE_KEY = 'value'
13
13
 
14
14
  def body_data_or_raise
15
- check_invalid_token
16
15
  r = super
17
- return r unless r.is_a?(::Hash)
18
-
19
- body_hash_or_raise(r)
20
- end
21
-
22
- # @return [String, nil]
23
- def error_code
24
- return false unless body_data.is_a?(::Hash)
25
- return false unless body_data.key?(ERROR_KEY)
26
-
27
- body_data.fetch(ERROR_KEY).fetch('code')
28
- end
29
-
30
- protected
31
-
32
- def body_hash_or_raise(result_data)
33
- return result_data.fetch(VALUE_KEY) if result_data.key?(VALUE_KEY)
34
- return raise_error_from_hash(result_data.fetch(ERROR_KEY)) if result_data.key?(ERROR_KEY)
35
-
36
- nbr
37
- end
38
-
39
- def check_invalid_token
40
- return unless error_code == INVALID_TOKEN_CODE
41
-
42
- raise ::Avmtrf1::Tools::Msgraph::InvalidTokenError
43
- end
44
-
45
- def raise_error_from_hash(error_hash)
46
- raise ::EacRest::Error, error_hash.pretty_inspect
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)
47
19
  end
48
20
  end
49
21
  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.1'
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.1
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-21 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
@@ -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
@@ -322,7 +316,8 @@ files:
322
316
  - lib/avmtrf1/tools/msgraph/api/member.rb
323
317
  - lib/avmtrf1/tools/msgraph/api/root.rb
324
318
  - lib/avmtrf1/tools/msgraph/api/team.rb
325
- - lib/avmtrf1/tools/msgraph/invalid_token_error.rb
319
+ - lib/avmtrf1/tools/msgraph/api/team/member_add.rb
320
+ - lib/avmtrf1/tools/msgraph/error.rb
326
321
  - lib/avmtrf1/tools/msgraph/request_mixin.rb
327
322
  - lib/avmtrf1/tools/msgraph/response_mixin.rb
328
323
  - lib/avmtrf1/tools/msgraph/token_retrieve.rb
@@ -348,6 +343,8 @@ files:
348
343
  - lib/avmtrf1/tools/runner/msgraph/joined_teams.rb
349
344
  - lib/avmtrf1/tools/runner/msgraph/request.rb
350
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
351
348
  - lib/avmtrf1/tools/runner/msgraph/team/members.rb
352
349
  - lib/avmtrf1/tools/runner/msgraph/token.rb
353
350
  - lib/avmtrf1/tools/runner/node_js.rb
@@ -1,13 +0,0 @@
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 InvalidTokenError < ::EacRest::Error
10
- end
11
- end
12
- end
13
- end