yandex360 1.1.3 → 1.1.4

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.
@@ -2,53 +2,65 @@
2
2
 
3
3
  module Yandex360
4
4
  class DepartmentsResource < Resource
5
+ include ParamBuilder
5
6
  def add_alias(org_id:, dep_id:, name:)
7
+ validate_required_params({org_id: org_id, dep_id: dep_id, name: name}, %i[org_id dep_id name])
6
8
  dep_alias = {alias: name}
7
- DepartmentAlias.new post("directory/v1/org/#{org_id}/departments/#{dep_id}/aliases", body: dep_alias).body
9
+ DepartmentAlias.new post("/directory/v1/org/#{org_id}/departments/#{dep_id}/aliases", body: dep_alias).body
8
10
  end
9
11
 
10
12
  def update(org_id:, dep_id:, parent_id:, **params)
11
- department = {
12
- orgId: org_id,
13
- departmentId: dep_id,
14
- parentId: parent_id
15
- }
16
- params.each {|param, value| department[param] = value }
17
- Department.new patch("directory/v1/org/#{org_id}/departments/#{dep_id}", body: department).body
13
+ validate_required_params({org_id: org_id, dep_id: dep_id, parent_id: parent_id}, %i[org_id dep_id parent_id])
14
+ department = build_department_params({
15
+ orgId: org_id,
16
+ departmentId: dep_id,
17
+ parentId: parent_id
18
+ }, params)
19
+ Department.new patch("/directory/v1/org/#{org_id}/departments/#{dep_id}", body: department).body
18
20
  end
19
21
 
20
22
  def info(org_id:, dep_id:)
21
- Department.new get("directory/v1/org/#{org_id}/departments/#{dep_id}").body
23
+ validate_required_params({org_id: org_id, dep_id: dep_id}, %i[org_id dep_id])
24
+ Department.new get("/directory/v1/org/#{org_id}/departments/#{dep_id}").body
22
25
  end
23
26
 
24
27
  def list(org_id:, page: 1, per_page: 10, parent_id: 0, order_by: "id")
25
- resp = get("directory/v1/org/#{org_id}/departments \
26
- ?page=#{page} \
27
- &perPage=#{per_page} \
28
- &parentId=#{parent_id} \
29
- &orderBy=#{order_by}".gsub(/\s+/, "").strip)
28
+ validate_required_params({org_id: org_id}, [:org_id])
29
+ params = {
30
+ page: page,
31
+ perPage: per_page,
32
+ parentId: parent_id,
33
+ orderBy: order_by
34
+ }
35
+ resp = get("/directory/v1/org/#{org_id}/departments", params: params)
30
36
  Collection.from_response(resp, key: "departments", type: Department)
31
37
  end
32
38
 
33
39
  # parent_id:, name:, description: "", external_id: "", head_id: 0, label: ""
34
40
  def create(org_id:, name:, parent_id:, **params)
35
- department = {
36
- parentId: parent_id,
37
- name: name
38
- }
39
- params.each do |param, value|
40
- department[param] = value
41
- end
41
+ validate_required_params({org_id: org_id, name: name, parent_id: parent_id}, %i[org_id name parent_id])
42
+ department = build_department_params({
43
+ parentId: parent_id,
44
+ name: name
45
+ }, params)
42
46
 
43
- Department.new post("directory/v1/org/#{org_id}/departments", body: department).body
47
+ Department.new post("/directory/v1/org/#{org_id}/departments", body: department).body
44
48
  end
45
49
 
46
50
  def delete_alias(org_id:, dep_id:, name:)
47
- Object.new delete_request("directory/v1/org/#{org_id}/departments/#{dep_id}/aliases/#{name}").body
51
+ validate_required_params({org_id: org_id, dep_id: dep_id, name: name}, %i[org_id dep_id name])
52
+ Object.new delete_request("/directory/v1/org/#{org_id}/departments/#{dep_id}/aliases/#{name}").body
48
53
  end
49
54
 
50
55
  def delete(org_id:, dep_id:)
51
- Object.new delete_request("directory/v1/org/#{org_id}/departments/#{dep_id}").body
56
+ validate_required_params({org_id: org_id, dep_id: dep_id}, %i[org_id dep_id])
57
+ Object.new delete_request("/directory/v1/org/#{org_id}/departments/#{dep_id}").body
58
+ end
59
+
60
+ private
61
+
62
+ def build_department_params(base_params, additional_params)
63
+ build_params(base_params, additional_params)
52
64
  end
53
65
  end
54
66
  end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Yandex360
4
+ class DnsResource < Resource
5
+ include ParamBuilder
6
+
7
+ def list(org_id:, domain:)
8
+ validate_required_params({org_id: org_id, domain: domain}, %i[org_id domain])
9
+ resp = get("/directory/v1/org/#{org_id}/domains/#{domain}/dns")
10
+ Collection.from_response(resp, key: "records", type: DnsRecord)
11
+ end
12
+
13
+ def create(org_id:, domain:, **params)
14
+ validate_required_params({org_id: org_id, domain: domain}, %i[org_id domain])
15
+ dns_record = build_params({}, params)
16
+ DnsRecord.new post("/directory/v1/org/#{org_id}/domains/#{domain}/dns", body: dns_record).body
17
+ end
18
+
19
+ def update(org_id:, domain:, record_id:, **params)
20
+ validate_required_params({org_id: org_id, domain: domain, record_id: record_id}, %i[org_id domain record_id])
21
+ dns_record = build_params({}, params)
22
+ DnsRecord.new patch("/directory/v1/org/#{org_id}/domains/#{domain}/dns/#{record_id}", body: dns_record).body
23
+ end
24
+
25
+ def delete(org_id:, domain:, record_id:)
26
+ validate_required_params({org_id: org_id, domain: domain, record_id: record_id}, %i[org_id domain record_id])
27
+ Object.new delete_request("/directory/v1/org/#{org_id}/domains/#{domain}/dns/#{record_id}").body
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Yandex360
4
+ class DomainsResource < Resource
5
+ include ParamBuilder
6
+
7
+ def list(org_id:)
8
+ validate_required_params({org_id: org_id}, [:org_id])
9
+ resp = get("/directory/v1/org/#{org_id}/domains")
10
+ Collection.from_response(resp, key: "domains", type: Domain)
11
+ end
12
+
13
+ def add(org_id:, name:, **params)
14
+ validate_required_params({org_id: org_id, name: name}, %i[org_id name])
15
+ domain = build_params({name: name}, params)
16
+ Domain.new post("/directory/v1/org/#{org_id}/domains", body: domain).body
17
+ end
18
+
19
+ def info(org_id:, domain:)
20
+ validate_required_params({org_id: org_id, domain: domain}, %i[org_id domain])
21
+ Domain.new get("/directory/v1/org/#{org_id}/domains/#{domain}").body
22
+ end
23
+
24
+ def delete(org_id:, domain:)
25
+ validate_required_params({org_id: org_id, domain: domain}, %i[org_id domain])
26
+ Object.new delete_request("/directory/v1/org/#{org_id}/domains/#{domain}").body
27
+ end
28
+
29
+ def verify(org_id:, domain:)
30
+ validate_required_params({org_id: org_id, domain: domain}, %i[org_id domain])
31
+ Domain.new post("/directory/v1/org/#{org_id}/domains/#{domain}/verify", body: {}).body
32
+ end
33
+ end
34
+ end
@@ -2,48 +2,61 @@
2
2
 
3
3
  module Yandex360
4
4
  class GroupsResource < Resource
5
+ include ParamBuilder
5
6
  def add_user(org_id:, group_id:, user_id:, type: "user")
7
+ validate_required_params({org_id: org_id, group_id: group_id, user_id: user_id}, %i[org_id group_id user_id])
6
8
  user = {
7
9
  id: user_id,
8
10
  type: type
9
11
  }
10
- Group.new post("directory/v1/org/#{org_id}/groups/#{group_id}/members", body: user).body
12
+ Group.new post("/directory/v1/org/#{org_id}/groups/#{group_id}/members", body: user).body
11
13
  end
12
14
 
13
15
  def update(org_id:, group_id:, **user_params)
14
- user = {}
15
- user_params.each {|param, value| user[param] = value }
16
- Group.new patch("directory/v1/org/#{org_id}/groups/#{group_id}", body: user).body
16
+ validate_required_params({org_id: org_id, group_id: group_id}, %i[org_id group_id])
17
+ user = build_group_params({}, user_params)
18
+ Group.new patch("/directory/v1/org/#{org_id}/groups/#{group_id}", body: user).body
17
19
  end
18
20
 
19
21
  def params(org_id:, group_id:)
20
- Group.new get("directory/v1/org/#{org_id}/groups/#{group_id}").body
22
+ validate_required_params({org_id: org_id, group_id: group_id}, %i[org_id group_id])
23
+ Group.new get("/directory/v1/org/#{org_id}/groups/#{group_id}").body
21
24
  end
22
25
 
23
26
  def list(org_id:, page: 1, per_page: 10)
24
- resp = get("directory/v1/org/#{org_id}/groups?page=#{page}&perPage=#{per_page}")
27
+ validate_required_params({org_id: org_id}, [:org_id])
28
+ params = {page: page, perPage: per_page}
29
+ resp = get("/directory/v1/org/#{org_id}/groups", params: params)
25
30
  Collection.from_response(resp, key: "groups", type: Group)
26
31
  end
27
32
 
28
33
  def users(org_id:, group_id:)
29
- resp = get("directory/v1/org/#{org_id}/groups/#{group_id}/members")
34
+ validate_required_params({org_id: org_id, group_id: group_id}, %i[org_id group_id])
35
+ resp = get("/directory/v1/org/#{org_id}/groups/#{group_id}/members")
30
36
  Collection.from_response(resp, key: "users", type: User)
31
37
  end
32
38
 
33
39
  def create(org_id:, name:, **group_params)
34
- group = {
35
- name: name
36
- }
37
- group_params.each {|param, value| group[param] = value }
38
- Group.new post("directory/v1/org/#{org_id}/groups", body: group).body
40
+ validate_required_params({org_id: org_id, name: name}, %i[org_id name])
41
+ group = build_group_params({name: name}, group_params)
42
+ Group.new post("/directory/v1/org/#{org_id}/groups", body: group).body
39
43
  end
40
44
 
41
45
  def delete(org_id:, group_id:)
42
- Group.new delete_request("directory/v1/org/#{org_id}/groups/#{group_id}").body
46
+ validate_required_params({org_id: org_id, group_id: group_id}, %i[org_id group_id])
47
+ Group.new delete_request("/directory/v1/org/#{org_id}/groups/#{group_id}").body
43
48
  end
44
49
 
45
50
  def delete_user(org_id:, group_id:, type:, user_id:)
46
- Object.new delete_request("directory/v1/org/#{org_id}/groups/#{group_id}/members/#{type}/#{user_id}").body
51
+ validate_required_params({org_id: org_id, group_id: group_id, type: type, user_id: user_id},
52
+ %i[org_id group_id type user_id])
53
+ Object.new delete_request("/directory/v1/org/#{org_id}/groups/#{group_id}/members/#{type}/#{user_id}").body
54
+ end
55
+
56
+ private
57
+
58
+ def build_group_params(base_params, additional_params)
59
+ build_params(base_params, additional_params)
47
60
  end
48
61
  end
49
62
  end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Yandex360
4
+ class OrganizationsResource < Resource
5
+ def list
6
+ resp = get("/directory/v1/org")
7
+ Collection.from_response(resp, key: "organizations", type: Organization)
8
+ end
9
+
10
+ def info(org_id:)
11
+ validate_required_params({org_id: org_id}, [:org_id])
12
+ Organization.new get("/directory/v1/org/#{org_id}").body
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Yandex360
4
+ class PostSettingsResource < Resource
5
+ include ParamBuilder
6
+
7
+ def list(org_id:, user_id:)
8
+ validate_required_params({org_id: org_id, user_id: user_id}, %i[org_id user_id])
9
+ Object.new get("/directory/v1/org/#{org_id}/users/#{user_id}/settings/mail").body
10
+ end
11
+
12
+ def update(org_id:, user_id:, **params)
13
+ validate_required_params({org_id: org_id, user_id: user_id}, %i[org_id user_id])
14
+ settings = build_params({}, params)
15
+ Object.new patch("/directory/v1/org/#{org_id}/users/#{user_id}/settings/mail", body: settings).body
16
+ end
17
+
18
+ def forwarding_list(org_id:, user_id:)
19
+ validate_required_params({org_id: org_id, user_id: user_id}, %i[org_id user_id])
20
+ resp = get("/directory/v1/org/#{org_id}/users/#{user_id}/settings/mail/forwarding")
21
+ Collection.from_response(resp, key: "forwardings", type: Object)
22
+ end
23
+
24
+ def add_forwarding(org_id:, user_id:, address:)
25
+ validate_required_params({org_id: org_id, user_id: user_id, address: address}, %i[org_id user_id address])
26
+ body = {address: address}
27
+ Object.new post("/directory/v1/org/#{org_id}/users/#{user_id}/settings/mail/forwarding", body: body).body
28
+ end
29
+
30
+ def delete_forwarding(org_id:, user_id:, address:)
31
+ validate_required_params({org_id: org_id, user_id: user_id, address: address}, %i[org_id user_id address])
32
+ Object.new delete_request("/directory/v1/org/#{org_id}/users/#{user_id}/settings/mail/forwarding/#{address}").body
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Yandex360
4
+ class TwoFaResource < Resource
5
+ def enable(org_id:, user_id:)
6
+ validate_required_params({org_id: org_id, user_id: user_id}, %i[org_id user_id])
7
+ Object.new post("/security/v1/org/#{org_id}/users/#{user_id}/2fa/enable", body: {}).body
8
+ end
9
+
10
+ def disable(org_id:, user_id:)
11
+ validate_required_params({org_id: org_id, user_id: user_id}, %i[org_id user_id])
12
+ Object.new post("/security/v1/org/#{org_id}/users/#{user_id}/2fa/disable", body: {}).body
13
+ end
14
+
15
+ def status(org_id:, user_id:)
16
+ validate_required_params({org_id: org_id, user_id: user_id}, %i[org_id user_id])
17
+ Object.new get("/security/v1/org/#{org_id}/users/#{user_id}/2fa/status").body
18
+ end
19
+
20
+ def domain_status(org_id:)
21
+ validate_required_params({org_id: org_id}, [:org_id])
22
+ Object.new get("/security/v1/org/#{org_id}/domain_2fa").body
23
+ end
24
+
25
+ def configure_domain(org_id:, enabled:)
26
+ validate_required_params({org_id: org_id, enabled: enabled}, %i[org_id enabled])
27
+ body = {enabled: enabled}
28
+ Object.new post("/security/v1/org/#{org_id}/domain_2fa", body: body).body
29
+ end
30
+ end
31
+ end
@@ -2,40 +2,45 @@
2
2
 
3
3
  module Yandex360
4
4
  class UsersResource < Resource
5
+ include ParamBuilder
5
6
  def add(org_id:, dep_id:, **user_params)
6
- user = {
7
- departmentId: dep_id
8
- }
9
- user_params.each {|param, value| user[param] = value }
7
+ validate_required_params({org_id: org_id, dep_id: dep_id}, %i[org_id dep_id])
8
+ user = build_user_params({departmentId: dep_id}, user_params)
10
9
 
11
- User.new post("directory/v1/org/#{org_id}/users", body: user).body
10
+ User.new post("/directory/v1/org/#{org_id}/users", body: user).body
12
11
  end
13
12
 
14
13
  def add_alias(org_id:, user_id:, user_alias:)
14
+ validate_required_params({org_id: org_id, user_id: user_id, user_alias: user_alias},
15
+ %i[org_id user_id user_alias])
15
16
  body = {alias: user_alias}
16
- User.new post("directory/v1/org/#{org_id}/users/#{user_id}/aliases", body: body).body
17
+ User.new post("/directory/v1/org/#{org_id}/users/#{user_id}/aliases", body: body).body
17
18
  end
18
19
 
19
20
  def update(org_id:, user_id:, **user_params)
20
- user = {}
21
- user_params.each {|param, value| user[param] = value }
21
+ validate_required_params({org_id: org_id, user_id: user_id}, %i[org_id user_id])
22
+ user = build_user_params({}, user_params)
22
23
 
23
- User.new patch("directory/v1/org/#{org_id}/users/#{user_id}", body: user).body
24
+ User.new patch("/directory/v1/org/#{org_id}/users/#{user_id}", body: user).body
24
25
  end
25
26
 
26
27
  def info(org_id:, user_id:)
27
- User.new get("directory/v1/org/#{org_id}/users/#{user_id}").body
28
+ validate_required_params({org_id: org_id, user_id: user_id}, %i[org_id user_id])
29
+ User.new get("/directory/v1/org/#{org_id}/users/#{user_id}").body
28
30
  end
29
31
 
30
32
  def list(org_id:, page: 1, per_page: 10)
31
- resp = get("directory/v1/org/#{org_id}/users?page=#{page}&perPage=#{per_page}")
33
+ validate_required_params({org_id: org_id}, [:org_id])
34
+ params = {page: page, perPage: per_page}
35
+ resp = get("/directory/v1/org/#{org_id}/users", params: params)
32
36
  Collection.from_response(resp, key: "users", type: User)
33
37
  end
34
38
 
35
39
  # rubocop:disable Naming/MethodName
36
40
  def get2FA(org_id:, user_id:)
41
+ validate_required_params({org_id: org_id, user_id: user_id}, %i[org_id user_id])
37
42
  # TODO: add User2FA.new type
38
- Object.new get("directory/v1/org/#{org_id}/users/#{user_id}/2fa").body
43
+ Object.new get("/directory/v1/org/#{org_id}/users/#{user_id}/2fa").body
39
44
  end
40
45
 
41
46
  def has2FA?(org_id:, user_id:)
@@ -44,11 +49,20 @@ module Yandex360
44
49
  # rubocop:enable Naming/MethodName
45
50
 
46
51
  def delete(org_id:, user_id:)
47
- User.new delete_request("/directory/v1/org/#{org_id}/users/#{user_id}/contacts").body
52
+ validate_required_params({org_id: org_id, user_id: user_id}, %i[org_id user_id])
53
+ User.new delete_request("/directory/v1/org/#{org_id}/users/#{user_id}").body
48
54
  end
49
55
 
50
56
  def delete_alias(org_id:, user_id:, user_alias:)
51
- Alias.new delete_request("directory/v1/org/#{org_id}/users/#{user_id}/aliases/#{user_alias}").body
57
+ validate_required_params({org_id: org_id, user_id: user_id, user_alias: user_alias},
58
+ %i[org_id user_id user_alias])
59
+ Alias.new delete_request("/directory/v1/org/#{org_id}/users/#{user_id}/aliases/#{user_alias}").body
60
+ end
61
+
62
+ private
63
+
64
+ def build_user_params(base_params, additional_params)
65
+ build_params(base_params, additional_params)
52
66
  end
53
67
  end
54
68
  end
@@ -1,8 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Yandex360
4
- major = 1
5
- minor = 1
6
- patch = 3
7
- VERSION = "#{major}.#{minor}.#{patch}"
4
+ VERSION = "1.1.4"
8
5
  end
data/lib/yandex360.rb CHANGED
@@ -8,7 +8,14 @@ module Yandex360
8
8
  autoload :Object, "yandex360/object"
9
9
  autoload :Resource, "yandex360/resource"
10
10
  autoload :Collection, "yandex360/collection"
11
+ autoload :ParamBuilder, "yandex360/param_builder"
11
12
  autoload :Error, "yandex360/error"
13
+ autoload :AuthenticationError, "yandex360/error"
14
+ autoload :AuthorizationError, "yandex360/error"
15
+ autoload :NotFoundError, "yandex360/error"
16
+ autoload :ValidationError, "yandex360/error"
17
+ autoload :RateLimitError, "yandex360/error"
18
+ autoload :ServerError, "yandex360/error"
12
19
 
13
20
  autoload :AntispamResource, "yandex360/resources/antispam"
14
21
  autoload :AllowList, "yandex360/objects/types"
@@ -27,4 +34,20 @@ module Yandex360
27
34
 
28
35
  autoload :UsersResource, "yandex360/resources/users"
29
36
  autoload :User, "yandex360/objects/types"
37
+
38
+ autoload :OrganizationsResource, "yandex360/resources/organizations"
39
+ autoload :Organization, "yandex360/objects/types"
40
+
41
+ autoload :DomainsResource, "yandex360/resources/domains"
42
+ autoload :Domain, "yandex360/objects/types"
43
+
44
+ autoload :DnsResource, "yandex360/resources/dns"
45
+ autoload :DnsRecord, "yandex360/objects/types"
46
+
47
+ autoload :TwoFaResource, "yandex360/resources/two_fa"
48
+
49
+ autoload :AuditResource, "yandex360/resources/audit"
50
+ autoload :AuditEvent, "yandex360/objects/types"
51
+
52
+ autoload :PostSettingsResource, "yandex360/resources/post_settings"
30
53
  end
data/yandex360.gemspec CHANGED
@@ -22,13 +22,16 @@ Gem::Specification.new do |s|
22
22
 
23
23
  s.metadata["rubygems_mfa_required"] = "true"
24
24
 
25
- s.add_dependency "faraday", "~> 1.7"
25
+ s.add_dependency "faraday", ">= 1.7", "< 3.0"
26
+
27
+ s.add_development_dependency "fiddle", "~> 1.0"
28
+ s.add_development_dependency "logger", "~> 1.4"
29
+ s.add_development_dependency "ostruct", "~> 0.5"
26
30
 
27
31
  s.add_development_dependency "bundler"
28
- s.add_development_dependency "rake", "~> 12.3.3"
32
+ s.add_development_dependency "rake", "~> 13.3.0"
29
33
  s.add_development_dependency "rspec", "~> 3.0"
34
+ s.add_development_dependency "rubocop", "~> 1.60"
30
35
  s.add_development_dependency "simplecov", "~> 0.9"
31
- s.add_development_dependency "simplecov-lcov", "~> 0.7.0"
32
- s.add_development_dependency "vcr", "~> 6.1"
33
- s.add_development_dependency "webmock", "~> 3.18", ">= 3.18.1"
36
+ s.add_development_dependency "simplecov-lcov", "~> 0.9.0"
34
37
  end