agilix 0.4.0 → 0.6.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: 13bbcf27a8daa395a4e36a627dc9deb051ca2eb6d59d8b7461e75d2f5e002001
4
- data.tar.gz: 4868b13937a95a056514a5b084a6da3b3bdec86f0032de5af76f6e7d47984ff6
3
+ metadata.gz: 81a67f3ba0539b370407f94da49a5fbdea63c2ac45c5fffb3a69c4cb9208ca0e
4
+ data.tar.gz: 4d64c6cccca91106f9cbaa00bca53a1f84aefef256da03d2c14fc2f0fb3c2040
5
5
  SHA512:
6
- metadata.gz: 28650a6f11ff0d3bb4aa4d0f4e4597679d889392cee1436c2827459d0fdfc6c30f707c7fb9797ea07db75873da0bd81bcb5a6b23042d2677c9b8d6641d18ca63
7
- data.tar.gz: 6edb84ced7f75aad3c80be7018e866d1be80689e19fe5fcf8ba2dc61ca43a61899ffe29ed149b1bc55f50c57aab42be3c57a086a48f93675846f272ad6848545
6
+ metadata.gz: aca52f340f374f9c5a44fb8cefcc578079262046dc3c7ae9e770640a3cbec1ffd20c881bbe42d7a1c9a52f90779f3843239ccff27254e06ad699d73e6f3fc88e
7
+ data.tar.gz: 10ab8c6c4b7bc330d27191f9c425bdac78af13ff52da05d4a91bc21382cb9f4ada27b537933fc3a4b8643898aff884d38296181e0e03cfc3b0902dbd2a895eed
data/README.md CHANGED
@@ -63,43 +63,53 @@ Below are instructions for basic invocation of the api methods. For additional i
63
63
  ```
64
64
  api.create_domains [{name: "BuzzTest1", userspace: 'buzz-test-fc-1', parentid: '57025'}]
65
65
  ```
66
+
66
67
  #### [DeleteDomain](https://api.agilixbuzz.com/docs/#!/Command/DeleteDomain)
67
68
  ```
68
69
  api.delete_domain domainid: '57027'
69
70
  ```
71
+
70
72
  #### [GetDomain2](https://api.agilixbuzz.com/docs/#!/Command/GetDomain2)
71
73
  This is aliased to `get_domain`
72
74
  ```
73
75
  api.get_domain domainid: '57025'
74
76
  ```
77
+
75
78
  #### [GetDomainContent](https://api.agilixbuzz.com/docs/#!/Command/GetDomainContent)
76
79
  ```
77
80
  api.get_domain_content domainid: '57025'
78
81
  ```
82
+
79
83
  #### [GetDomainEnrollmentMetrics](https://api.agilixbuzz.com/docs/#!/Command/GetDomainEnrollmentMetrics)
80
84
  ```
81
85
  api.get_domain_enrollment_metrics domainid: '57025'
82
86
  ```
87
+
83
88
  #### [GetDomainParentList](https://api.agilixbuzz.com/docs/#!/Command/GetDomainParentList)
84
89
  ```
85
90
  api.get_domain_parent_list domainid: '57025'
86
91
  ```
92
+
87
93
  #### [GetDomainSettings](https://api.agilixbuzz.com/docs/#!/Command/GetDomainSettings)
88
94
  ```
89
95
  api.get_domain_settings domainid: '57025', path: "AgilixBuzzSettings.xml"
90
96
  ```
97
+
91
98
  #### [GetDomainStats](https://api.agilixbuzz.com/docs/#!/Command/GetDomainStats)
92
99
  ```
93
100
  api.get_domain_stats domainid: '57025', options: "users|courses"
94
101
  ```
102
+
95
103
  #### [ListDomains](https://api.agilixbuzz.com/docs/#!/Command/ListDomains)
96
104
  ```
97
105
  api.list_domains domainid: '57025'
98
106
  ```
107
+
99
108
  #### [RestoreDomain](https://api.agilixbuzz.com/docs/#!/Command/RestoreDomain)
100
109
  ```
101
110
  api.restore_domain domainid: '57027'
102
111
  ```
112
+
103
113
  #### [UpdateDomains](https://api.agilixbuzz.com/docs/#!/Command/UpdateDomains)
104
114
  ```
105
115
  api.update_domains [{ domainid: "57027", name: "BuzzTestUpdated1", userspace: 'buzz-test-fc-1', parentid: '57025'}]
@@ -113,14 +123,17 @@ api.update_domains [{ domainid: "57027", name: "BuzzTestUpdated1", userspace: 'b
113
123
  ```
114
124
  api.get_report_info reportid: 127
115
125
  ```
126
+
116
127
  #### [GetReportList](https://api.agilixbuzz.com/docs/#!/Command/GetReportList)
117
128
  ```
118
129
  api.get_report_list domainid: 1
119
130
  ```
131
+
120
132
  #### [GetRunnableReportList](https://api.agilixbuzz.com/docs/#!/Command/GetRunnableReportList)
121
133
  ```
122
134
  api.get_runnable_report_list domainid: 57025
123
135
  ```
136
+
124
137
  #### [RunReport](https://api.agilixbuzz.com/docs/#!/Command/RunReport)
125
138
  ```
126
139
  api.run_report reportid: 127, entityid: 57025, format: 'json'
@@ -284,6 +297,7 @@ proxy_api.unproxy userid: 57181
284
297
  ```
285
298
  api.reset_lockout userid: 57181
286
299
  ```
300
+
287
301
  #### [ResetPassword](https://api.agilixbuzz.com/docs/#!/Command/ResetPassword)
288
302
  ```
289
303
  api.reset_password username:'auto-tests/BuzzUserUp1'
@@ -498,26 +512,172 @@ This is one of the more confusing APIs, it allows you to send emails to people i
498
512
  api.send_mail subject: "Test email", body: "Did you get this?", enrollmentid: 60997, enrollment_ids: ["all"]
499
513
  ```
500
514
 
515
+ ## Resources
516
+
517
+
518
+ #### [CopyResources](https://api.agilixbuzz.com/docs/#!/Command/CopyResources)
519
+
520
+ ```
521
+ api.copy_resources [ {sourceentityid: 57025, destinationentityid: 57031, sourcepath: "banner.css" }]
522
+ ```
523
+
524
+ #### [DeleteResources](https://api.agilixbuzz.com/docs/#!/Command/DeleteResources)
525
+
526
+ ```
527
+ api.delete_resources [{entityid: 57031, path: 'banner.css'}]
528
+ ```
529
+
530
+ #### [GetEntityResourceId](https://api.agilixbuzz.com/docs/#!/Command/GetEntityResourceId)
531
+
532
+ ```
533
+ api.get_entity_resource_id entityid: 57025
534
+ ```
535
+
536
+ #### [GetResource](https://api.agilixbuzz.com/docs/#!/Command/GetResource)
537
+
538
+ ```
539
+ api.get_resource entityid: 57031, path: "banner.css"
540
+ ```
541
+
542
+ #### [GetResourceInfo2](https://api.agilixbuzz.com/docs/#!/Command/GetResourceInfo2)
543
+
544
+ ISSUE: This is a get request with a POST verb. The documentation only suggests getting a single resoure, so I'm not sure why it would be a bulk post syntax. it does seem to respond to multiple resources though,so we'll adapt
545
+
546
+ ```
547
+ api.get_resource_info [{entityid: 57031, path: "banner.css"}]
548
+ ```
549
+
550
+ #### [GetResourceList2](https://api.agilixbuzz.com/docs/#!/Command/GetResourceList2)
551
+
552
+ ```
553
+ api.get_resource_list entityid: 57025
554
+ ```
555
+
556
+ #### [ListRestorableResources](https://api.agilixbuzz.com/docs/#!/Command/ListRestorableResources)
557
+
558
+ ```
559
+ api.list_restorable_resources entityid: 57025
560
+ ```
561
+
562
+ #### [PutResource](https://api.agilixbuzz.com/docs/#!/Command/PutResource)
563
+
564
+ ```
565
+ file_name = "my-file.pdf"
566
+ file = File.open file_name
567
+ api.put_resource file, {entityid: 57025, path: file_name}
568
+ ```
569
+
570
+ #### [PutResourceFolders](https://api.agilixbuzz.com/docs/#!/Command/PutResourceFolders)
571
+
572
+ ```
573
+ api.put_resource_folders [{entityid: 57031, path: 'test/folder-1'}]
574
+ ```
575
+
576
+ #### [RestoreResources](https://api.agilixbuzz.com/docs/#!/Command/RestoreResources)
577
+
578
+ ```
579
+ api.restore_resources [{entityid: 57031, path: 'banner.css'}]
580
+ ```
581
+
582
+
501
583
  ## Rights
502
584
 
503
- - [ ] [CreateRole](https://api.agilixbuzz.com/docs/#!/Command/CreateRole)
504
- - [ ] [DeleteRole](https://api.agilixbuzz.com/docs/#!/Command/DeleteRole)
505
- - [ ] [DeleteSubscriptions](https://api.agilixbuzz.com/docs/#!/Command/DeleteSubscriptions)
506
- - [ ] [GetActorRights](https://api.agilixbuzz.com/docs/#!/Command/GetActorRights)
507
- - [ ] [GetEffectiveRights](https://api.agilixbuzz.com/docs/#!/Command/GetEffectiveRights)
508
- - [ ] [GetEffectiveSubscriptionList](https://api.agilixbuzz.com/docs/#!/Command/GetEffectiveSubscriptionList)
509
- - [ ] [GetEntityRights](https://api.agilixbuzz.com/docs/#!/Command/GetEntityRights)
510
- - [ ] [GetEntitySubscriptionList](https://api.agilixbuzz.com/docs/#!/Command/GetEntitySubscriptionList)
511
- - [ ] [GetPersonas](https://api.agilixbuzz.com/docs/#!/Command/GetPersonas)
512
- - [ ] [GetRights](https://api.agilixbuzz.com/docs/#!/Command/GetRights)
513
- - [ ] [GetRightsList](https://api.agilixbuzz.com/docs/#!/Command/GetRightsList)
514
- - [ ] [GetRole](https://api.agilixbuzz.com/docs/#!/Command/GetRole)
515
- - [ ] [GetSubscriptionList](https://api.agilixbuzz.com/docs/#!/Command/GetSubscriptionList)
516
- - [ ] [ListRoles](https://api.agilixbuzz.com/docs/#!/Command/ListRoles)
517
- - [ ] [RestoreRole](https://api.agilixbuzz.com/docs/#!/Command/RestoreRole)
518
- - [ ] [UpdateRights](https://api.agilixbuzz.com/docs/#!/Command/UpdateRights)
519
- - [ ] [UpdateRole](https://api.agilixbuzz.com/docs/#!/Command/UpdateRole)
520
- - [ ] [UpdateSubscriptions](https://api.agilixbuzz.com/docs/#!/Command/UpdateSubscriptions)
585
+ #### [CreateRole](https://api.agilixbuzz.com/docs/#!/Command/CreateRole)
586
+ ISSUE: Why is this create singular, not multiple?
587
+ ```
588
+ api.create_role domainid: 57025, name: "Test Role", privileges: api.right_flags[:create_domain]
589
+ ```
590
+
591
+ #### [DeleteRole](https://api.agilixbuzz.com/docs/#!/Command/DeleteRole)
592
+ ```
593
+ api.delete_role roleid: 61316
594
+ ```
595
+
596
+ #### [DeleteSubscriptions](https://api.agilixbuzz.com/docs/#!/Command/DeleteSubscriptions)
597
+ ISSUE: Why is this create singular, not multiple?
598
+ ```
599
+ api.delete_subscriptions subscriberid: 57181, entityid: 57025
600
+ ```
601
+
602
+ #### [GetActorRights](https://api.agilixbuzz.com/docs/#!/Command/GetActorRights)
603
+ ISSUE: Why is this create singular, not multiple?
604
+ ```
605
+ api.create_role domainid: 57025, name: "Test Role", privileges: api.right_flags[:create_domain]
606
+ ```
607
+
608
+ #### [GetEffectiveRights](https://api.agilixbuzz.com/docs/#!/Command/GetEffectiveRights)
609
+ ```
610
+ api.get_effective_rights entityid: 57025
611
+ ```
612
+
613
+ #### [GetEffectiveSubscriptionList](https://api.agilixbuzz.com/docs/#!/Command/GetEffectiveSubscriptionList)
614
+ ```
615
+ api.get_effective_subscription_list
616
+ ```
617
+
618
+ #### [GetEntityRights](https://api.agilixbuzz.com/docs/#!/Command/GetEntityRights)
619
+ ```
620
+ api.get_entity_rights entityid: 57025
621
+ ```
622
+
623
+ #### [GetEntitySubscriptionList](https://api.agilixbuzz.com/docs/#!/Command/GetEntitySubscriptionList)
624
+ ```
625
+ api.get_entity_subscription_list entityid: 57025
626
+ ```
627
+
628
+ #### [GetPersonas](https://api.agilixbuzz.com/docs/#!/Command/GetPersonas)
629
+ ```
630
+ api.get_personas userid: 57026
631
+ ```
632
+
633
+ #### [GetRights](https://api.agilixbuzz.com/docs/#!/Command/GetRights)
634
+ ```
635
+ api.get_rights actorid: 57026, entityid: 57025
636
+ ```
637
+
638
+ #### [GetRightsList](https://api.agilixbuzz.com/docs/#!/Command/GetRightsList)
639
+ ```
640
+ api.get_rights_list domainid: 57025
641
+ ```
642
+
643
+ #### [GetRole](https://api.agilixbuzz.com/docs/#!/Command/GetRole)
644
+ ```
645
+ api.get_role roleid: 61316
646
+ ```
647
+
648
+ #### [GetSubscriptionList](https://api.agilixbuzz.com/docs/#!/Command/GetSubscriptionList)
649
+ ```
650
+ # Get for a domain
651
+ api.get_subscription_list subscriberid: 57025
652
+ # Get for a user
653
+ api.get_subscription_list subscriberid: 57026
654
+ ```
655
+
656
+ #### [ListRoles](https://api.agilixbuzz.com/docs/#!/Command/ListRoles)
657
+ ```
658
+ api.list_roles domainid: 57025
659
+ ```
660
+
661
+ #### [RestoreRole](https://api.agilixbuzz.com/docs/#!/Command/RestoreRole)
662
+ ```
663
+ api.restore_role roleid: 61316
664
+ ```
665
+
666
+ #### [UpdateRights](https://api.agilixbuzz.com/docs/#!/Command/UpdateRights)
667
+ ```
668
+ api.update_rights [ {actorid: 57026, entityid: 57025, roleid: 61316}]
669
+ ```
670
+
671
+ #### [UpdateRole](https://api.agilixbuzz.com/docs/#!/Command/UpdateRole)
672
+ ```
673
+ api.update_role roleid: 61316, name: "Test Role Updates", privileges: api.right_flags[:update_domain]
674
+ ```
675
+
676
+ #### [UpdateSubscriptions](https://api.agilixbuzz.com/docs/#!/Command/UpdateSubscriptions)
677
+ ISSUE: Why is this root node singular?
678
+ ```
679
+ api.update_subscriptions subscriberid: 57181, entityid: 60982, startdate: "2019-03-15", enddate: "2019-03-15"
680
+ ```
521
681
 
522
682
  ---
523
683
 
@@ -575,22 +735,11 @@ api.send_mail subject: "Test email", body: "Did you get this?", enrollmentid: 60
575
735
 
576
736
  ## Resources
577
737
 
578
- - [ ] [CopyResources](https://api.agilixbuzz.com/docs/#!/Command/CopyResources)
579
738
  - [ ] [DeleteDocuments](https://api.agilixbuzz.com/docs/#!/Command/DeleteDocuments)
580
- - [ ] [DeleteResources](https://api.agilixbuzz.com/docs/#!/Command/DeleteResources)
581
739
  - [ ] [GetDocument](https://api.agilixbuzz.com/docs/#!/Command/GetDocument)
582
740
  - [ ] [GetDocumentInfo](https://api.agilixbuzz.com/docs/#!/Command/GetDocumentInfo)
583
- - [ ] [GetEntityResourceId](https://api.agilixbuzz.com/docs/#!/Command/GetEntityResourceId)
584
- - [ ] [GetResource](https://api.agilixbuzz.com/docs/#!/Command/GetResource)
585
- - [ ] [GetResourceInfo2](https://api.agilixbuzz.com/docs/#!/Command/GetResourceInfo2)
586
- - [ ] [GetResourceList2](https://api.agilixbuzz.com/docs/#!/Command/GetResourceList2)
587
741
  - [ ] [ListRestorableDocuments](https://api.agilixbuzz.com/docs/#!/Command/ListRestorableDocuments)
588
- - [ ] [ListRestorableResources](https://api.agilixbuzz.com/docs/#!/Command/ListRestorableResources)
589
- - [ ] [PutResource](https://api.agilixbuzz.com/docs/#!/Command/PutResource)
590
- - [ ] [PutResourceFolders](https://api.agilixbuzz.com/docs/#!/Command/PutResourceFolders)
591
742
  - [ ] [RestoreDocuments](https://api.agilixbuzz.com/docs/#!/Command/RestoreDocuments)
592
- - [ ] [RestoreResources](https://api.agilixbuzz.com/docs/#!/Command/RestoreResources)
593
-
594
743
  ---
595
744
 
596
745
  # Not Prioritized
@@ -804,6 +953,3 @@ The gem is available as open source under the terms of the [MIT License](https:/
804
953
  ## Code of Conduct
805
954
 
806
955
  Everyone interacting in the Agilix::Buzz project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/[USERNAME]/agilix/blob/master/CODE_OF_CONDUCT.md).
807
-
808
-
809
-
data/lib/agilix.rb CHANGED
@@ -9,6 +9,8 @@ require "agilix/buzz/commands/domain"
9
9
  require "agilix/buzz/commands/enrollment"
10
10
  require "agilix/buzz/commands/general"
11
11
  require "agilix/buzz/commands/report"
12
+ require "agilix/buzz/commands/resource"
13
+ require "agilix/buzz/commands/right"
12
14
  require "agilix/buzz/commands/user"
13
15
 
14
16
  require "agilix/buzz/api"
@@ -23,6 +25,6 @@ module Agilix
23
25
  super
24
26
  end
25
27
  end
26
- # Your code goes here...
28
+
27
29
  end
28
30
  end
@@ -11,6 +11,8 @@ module Agilix
11
11
  include Agilix::Buzz::Commands::Enrollment
12
12
  include Agilix::Buzz::Commands::General
13
13
  include Agilix::Buzz::Commands::Report
14
+ include Agilix::Buzz::Commands::Resource
15
+ include Agilix::Buzz::Commands::Right
14
16
  include Agilix::Buzz::Commands::User
15
17
 
16
18
  attr_accessor :username, :password, :domain, :token, :token_expiration
@@ -51,14 +53,38 @@ module Agilix
51
53
  response = self.class.post(URL_BASE, body: modify_body(query), timeout: 60, headers: headers)
52
54
  end
53
55
 
54
- # For when the api is super unconventional & you need to modify both query params & body params in a custom fashion
56
+ # Not sure if I want to use this yet
57
+ # api.response_parser response: response, path_to_parse: ['response', 'users', 'user'], collection_name: 'users'
58
+ def response_parser(path_to_parse: nil, collection_name: nil, response: )
59
+ if path_to_parse
60
+ result = response.dig(*path_to_parse)
61
+ ostruct = JSON::parse({collection_name => result}.to_json, object_class: OpenStruct)
62
+ ostruct.result_count = result.size
63
+ ostruct.collection_name = collection_name
64
+ else
65
+ ostruct = JSON::parse(response.body, object_class: OpenStruct)
66
+ end
67
+ ostruct.code = response['code']
68
+ ostruct.response = response
69
+ ostruct.request = request
70
+ ostruct
71
+ end
72
+
73
+ # For when the api is super unconventional & you need to modify both query params & body params in a custom fashion, and upload a file even!
55
74
  def query_post(query = {})
56
75
  url = URL_BASE
57
76
  query_params = query.delete(:query_params)
58
77
  if query_params
59
78
  url += "?&_token=#{token}" + query_params.map {|k,v| "&#{k}=#{v}" }.join("")
60
79
  end
61
- response = self.class.post(url, body: query.to_json, timeout: 60, headers: headers)
80
+ file = query.delete(:file)
81
+ if file
82
+ new_headers = headers
83
+ new_headers["Content-Type"] = "multipart/form-data"
84
+ response = self.class.post(url, multipart: true, body: {file: file}, timeout: 60, headers: new_headers)
85
+ else
86
+ response = self.class.post(url, body: query.to_json, timeout: 60, headers: headers)
87
+ end
62
88
  end
63
89
 
64
90
  def bulk_post(query = {})
@@ -118,7 +144,7 @@ module Agilix
118
144
  end
119
145
 
120
146
  def headers
121
- {
147
+ @headers = {
122
148
  "Accept" => "application/json",
123
149
  "Content-Type" => "application/json",
124
150
  }
@@ -23,7 +23,7 @@ module Agilix
23
23
  def extend_session
24
24
  response = authenticated_post cmd: "extendsession", bypass_authentication_check: true
25
25
  @token_expiration = set_token_expiration(response.dig("response", "session", "authenticationexpirationminutes"))
26
- authenticate! if response['code'] == 'NoAuthentication'
26
+ authenticate! if response.dig("response", "code") == "NoAuthentication"
27
27
  response
28
28
  end
29
29
 
@@ -0,0 +1,124 @@
1
+ module Agilix
2
+ module Buzz
3
+ module Commands
4
+ module Resource
5
+
6
+ # api.copy_resources [ {sourceentityid: 57025, destinationentityid: 57031, sourcepath: "banner.css" }]
7
+ def copy_resources(items = [])
8
+ options = items.map do |item|
9
+ argument_cleaner(required_params: %i( sourceentityid destinationentityid ), optional_params: %i( sourcepath destinationpath ), options: item )
10
+ end
11
+ authenticated_bulk_post cmd: "copyresources", root_node: "resource", body: options
12
+ end
13
+
14
+ # api.delete_resources [{entityid: 57031, path: 'banner.css'}]
15
+ def delete_resources(items = [])
16
+ options = items.map do |item|
17
+ argument_cleaner(required_params: %i( entityid path ), optional_params: %i( class ), options: item )
18
+ end
19
+ authenticated_bulk_post cmd: "deleteresources", root_node: "resource", body: options
20
+ end
21
+
22
+ # api.get_entity_resource_id entityid: 57025
23
+ def get_entity_resource_id(options = {})
24
+ options = argument_cleaner(required_params: %i( entityid ), optional_params: %i( ), options: options )
25
+ authenticated_get cmd: "getentityresourceid", **options
26
+ end
27
+
28
+ # api.get_resource entityid: 57031, path: "banner.css"
29
+ def get_resource(options = {})
30
+ options = argument_cleaner(required_params: %i( entityid path ), optional_params: %i( version packagetype attachment class ), options: options )
31
+ authenticated_get cmd: "getresource", **options
32
+ end
33
+
34
+ # ISSUE: This is a get request with a POST verb. The documentation only suggests getting a single resoure, so I'm not sure why it would be a bulk post syntax. it does seem to respond to multiple resources though,so we'll adapt
35
+ # api.get_resource_info [{entityid: 57031, path: "banner.css"}]
36
+ def get_resource_info2(items = [])
37
+ options = items.map do |item|
38
+ argument_cleaner(required_params: %i( entityid path ), optional_params: %i( class ), options: item )
39
+ end
40
+ authenticated_bulk_post cmd: "getresourceinfo2", root_node: "resource", body: options
41
+ end
42
+ alias_method :get_resource_info, :get_resource_info2
43
+
44
+ # api.get_resource_list2 entityid: 57025
45
+ def get_resource_list2(options = {})
46
+ options = argument_cleaner(required_params: %i( entityid ), optional_params: %i( path recurse query allversions entries class ), options: options )
47
+ authenticated_get cmd: "getresourcelist2", **options
48
+ end
49
+ alias_method :get_resource_list, :get_resource_list2
50
+
51
+ # api.list_restorable_resources entityid: 57025
52
+ def list_restorable_resources(options = {})
53
+ options = argument_cleaner(required_params: %i( entityid ), optional_params: %i( ), options: options )
54
+ authenticated_get cmd: "listrestorableresources", **options
55
+ end
56
+
57
+ # file_name = "my-file.pdf"
58
+ # file = File.open file_name
59
+ # api.put_resource file, {entityid: 57025, path: file_name}
60
+ def put_resource(file, options = {})
61
+ options = argument_cleaner(required_params: %i( entityid path ), optional_params: %i( status class drophistory contenttype ), options: options )
62
+ # authenticated_query_post cmd: "putresource", **options
63
+ authenticated_query_post query_params: {cmd: "putresource", **options }, file: file
64
+ end
65
+
66
+ # api.put_resource_folders [{entityid: 57031, path: 'test/folder-1'}]
67
+ def put_resource_folders(items = [])
68
+ options = items.map do |item|
69
+ argument_cleaner(required_params: %i( entityid path ), optional_params: %i( ), options: item )
70
+ end
71
+ authenticated_bulk_post cmd: "putresourcefolders", root_node: "folder", body: options
72
+ end
73
+
74
+ # api.restore_resources [{entityid: 57031, path: 'banner.css'}]
75
+ def restore_resources(items = [])
76
+ options = items.map do |item|
77
+ argument_cleaner(required_params: %i( entityid path ), optional_params: %i( class ), options: item )
78
+ end
79
+ authenticated_bulk_post cmd: "restoreresources", root_node: "resource", body: options
80
+ end
81
+
82
+ # api.delete_documents
83
+ def delete_documents(items = [])
84
+ options = items.map do |item|
85
+ argument_cleaner(required_params: %i( enrollmentid itemid path ), optional_params: %i( ), options: item )
86
+ end
87
+ authenticated_bulk_post cmd: "deletedocuments", root_node: "document", body: options
88
+ end
89
+
90
+ # api.get_document enrollmentid: 60997
91
+ def get_document(options = {})
92
+ options = argument_cleaner(required_params: %i( enrollmentid itemid path ), optional_params: %i( version ), options: options )
93
+ authenticated_get cmd: "getdocument", **options
94
+ end
95
+
96
+ # ISSUE: Why is get command a bulk POST request
97
+ # api.get_document_info
98
+ def get_document_info(items = [])
99
+ options = items.map do |item|
100
+ argument_cleaner(required_params: %i( enrollmentid itemid path ), optional_params: %i( ), options: item )
101
+ end
102
+ authenticated_bulk_post cmd: "getdocumentinfo", root_node: "document", body: options
103
+ authenticated_get cmd: "", **options
104
+ end
105
+
106
+ # api.list_restorable_documents enrollmentid: 64001
107
+ def list_restorable_documents(options = {})
108
+ options = argument_cleaner(required_params: %i( enrollmentid itemid ), optional_params: %i( ), options: options )
109
+ authenticated_get cmd: "listrestorabledocuments", **options
110
+ end
111
+
112
+
113
+ # api.restore_documents
114
+ def restore_documents(items = [])
115
+ options = items.map do |item|
116
+ argument_cleaner(required_params: %i( enrollmentid itemid path), optional_params: %i( version ), options: item )
117
+ end
118
+ authenticated_bulk_post cmd: "restoredocuments", root_node: "document", body: options
119
+ end
120
+
121
+ end
122
+ end
123
+ end
124
+ end
@@ -0,0 +1,234 @@
1
+ module Agilix
2
+ module Buzz
3
+ module Commands
4
+ module Right
5
+
6
+ # ISSUE: Why is this create singular, not multiple?
7
+ # api.create_role domainid: 57025, name: "Test Role", privileges: api.right_flags[:create_domain]
8
+ def create_role(options = {})
9
+ options = argument_cleaner(required_params: %i( domainid name privileges ), optional_params: %i( reference entitytype ), options: options )
10
+ raise ArgumentError.new("Not a valid entitytype. Should be D,C, or empty") unless [nil, "", "D", "C"].include?(options[:entitytype])
11
+ authenticated_post cmd: "createrole", **options
12
+ end
13
+
14
+ # api.delete_role roleid: 61316
15
+ def delete_role(options = {})
16
+ options = argument_cleaner(required_params: %i( roleid ), optional_params: %i( ), options: options )
17
+ authenticated_get cmd: "deleterole", **options
18
+ end
19
+
20
+ # api.delete_subscriptions subscriberid: 57181, entityid: 57025
21
+ def delete_subscriptions(items = [])
22
+ options = items.map do |item|
23
+ argument_cleaner(required_params: %i( subscriberid entityid ), optional_params: %i( flags ), options: item )
24
+ end
25
+ authenticated_bulk_post cmd: "deletesubscriptions", root_node: 'subscription', body: options
26
+ end
27
+
28
+ # api.get_actor_rights actorid: 5000, entitytypes: "U|S|D"
29
+ def get_actor_rights(options = {})
30
+ options = argument_cleaner(required_params: %i( actorid ), optional_params: %i( entitytypes ), options: options )
31
+ authenticated_get cmd: "getactorrights", **options
32
+ end
33
+
34
+ # api.get_effective_rights entityid: 57025
35
+ def get_effective_rights(options = {})
36
+ options = argument_cleaner(required_params: %i( entityid ), optional_params: %i( ), options: options )
37
+ authenticated_get cmd: "geteffectiverights", **options
38
+ end
39
+
40
+ # api.get_effective_subscription_list
41
+ def get_effective_subscription_list(options = {})
42
+ options = argument_cleaner(required_params: %i( ), optional_params: %i( select ), options: options )
43
+ authenticated_get cmd: "geteffectivesubscriptionlist", **options
44
+ end
45
+
46
+ # api.get_entity_rights entityid: 57025
47
+ def get_entity_rights(options = {})
48
+ options = argument_cleaner(required_params: %i( entityid ), optional_params: %i( ), options: options )
49
+ authenticated_get cmd: "getentityrights", **options
50
+ end
51
+
52
+ # api.get_entity_subscription_list entityid: 57025
53
+ def get_entity_subscription_list(options = {})
54
+ options = argument_cleaner(required_params: %i( entityid ), optional_params: %i( subscriberid), options: options )
55
+ authenticated_get cmd: "getentitysubscriptionlist", **options
56
+ end
57
+
58
+ # api.get_personas userid: 57026
59
+ def get_personas(options = {})
60
+ options = argument_cleaner(required_params: %i( ), optional_params: %i( userid domainid ), options: options )
61
+ authenticated_get cmd: "getpersonas", **options
62
+ end
63
+
64
+ # api.get_rights actorid: 57026, entityid: 57025
65
+ def get_rights(options = {})
66
+ options = argument_cleaner(required_params: %i( actorid entityid ), optional_params: %i( ), options: options )
67
+ authenticated_get cmd: "getrights", **options
68
+ end
69
+
70
+ # api.get_rights_list domainid: 57025
71
+ def get_rights_list(options = {})
72
+ options = argument_cleaner(required_params: %i( ), optional_params: %i( domainid restrictdomain ), options: options )
73
+ authenticated_get cmd: "getrightslist", **options
74
+ end
75
+
76
+ # api.get_role roleid: 61316
77
+ def get_role(options = {})
78
+ options = argument_cleaner(required_params: %i( roleid ), optional_params: %i( ), options: options )
79
+ authenticated_get cmd: "getrole", **options
80
+ end
81
+
82
+ # Get for a domain
83
+ # api.get_subscription_list subscriberid: 57025
84
+ # Get for a user
85
+ # api.get_subscription_list subscriberid: 57026
86
+ def get_subscription_list(options = {})
87
+ options = argument_cleaner(required_params: %i( subscriberid ), optional_params: %i( entityid ), options: options )
88
+ authenticated_get cmd: "getsubscriptionlist", **options
89
+ end
90
+
91
+ # api.list_roles domainid: 57025
92
+ def list_roles(options = {})
93
+ options = argument_cleaner(required_params: %i( domainid ), optional_params: %i( ), options: options )
94
+ authenticated_get cmd: "listroles", **options
95
+ end
96
+
97
+ # api.restore_role roleid: 61316
98
+ def restore_role(options = {})
99
+ options = argument_cleaner(required_params: %i( roleid ), optional_params: %i( ), options: options )
100
+ authenticated_get cmd: "restorerole", **options
101
+ end
102
+
103
+ # api.update_rights [ {actorid: 57026, entityid: 57025, roleid: 61316}]
104
+ def update_rights(items = [])
105
+ options = items.map do |item|
106
+ argument_cleaner(required_params: %i( actorid entityid ), optional_params: %i( roleid flags schema ), options: item )
107
+ end
108
+ authenticated_bulk_post cmd: "updaterights", root_node: 'rights', body: options
109
+ end
110
+
111
+ # api.update_role roleid: 61316, name: "Test Role Updates", privileges: api.right_flags[:update_domain]
112
+ def update_role(options = {})
113
+ options = argument_cleaner(required_params: %i( roleid ), optional_params: %i( name privileges reference entitytype ), options: options )
114
+ raise ArgumentError.new("Not a valid entitytype. Should be D,C, or empty") unless [nil, "", "D", "C"].include?(options[:entitytype])
115
+
116
+ authenticated_post cmd: "updaterole", **options
117
+ end
118
+
119
+ # ISSUE: Why is this root node singular?
120
+ # api.update_subscriptions subscriberid: 57181, entityid: 60982, startdate: "2019-03-15", enddate: "2019-03-15"
121
+ def update_subscriptions(items = [])
122
+ options = items.map do |item|
123
+ argument_cleaner(required_params: %i( subscriberid entityid startdate enddate ), optional_params: %i( subscriptionflags ), options: item )
124
+ end
125
+ authenticated_bulk_post cmd: "updatesubscriptions", root_node: 'subscription', body: options
126
+ end
127
+
128
+ def right_flags
129
+ {
130
+ admin: -1,
131
+ none: 0,
132
+ participate: 1,
133
+ create_domain: 16,
134
+ read_domain: 32,
135
+ update_domain: 64,
136
+ delete_domain: 128,
137
+ create_user: 256,
138
+ read_user: 512,
139
+ update_user: 1024,
140
+ delete_user: 2048,
141
+ create_course: 65536,
142
+ read_course: 131072,
143
+ update_course: 262144,
144
+ delete_course: 524288,
145
+ create_section: 1048576,
146
+ read_section: 2097152,
147
+ update_section: 4194304,
148
+ delete_section: 8388608,
149
+ grade_assignment: 16777216,
150
+ grade_forum: 33554432,
151
+ grade_exam: 67108864,
152
+ setup_gradebook: 134217728,
153
+ control_domain: 268435456,
154
+ control_course: 536870912,
155
+ control_section: 1073741824,
156
+ read_gradebook: 2147483648,
157
+ report_domain: 4294967296,
158
+ report_course: 8589934592,
159
+ report_section: 17179869184,
160
+ post_domain_announcements: 34359738368,
161
+ proxy: 68719476736,
162
+ report_user: 274877906944,
163
+ submit_final_grade: 549755813888,
164
+ control_enrollment: 1099511627776,
165
+ read_enrollment: 2199023255552,
166
+ read_course_full: 4398046511104,
167
+ control_user: 8796093022208,
168
+ read_objective: 17592186044416,
169
+ update_objective: 35184372088832
170
+ }
171
+ end
172
+
173
+ def right_flags_hex
174
+ {
175
+ admin: "-0x01",
176
+ none: "0x00",
177
+ participate: "0x01",
178
+ create_domain: "0x10",
179
+ read_domain: "0x20",
180
+ update_domain: "0x40",
181
+ delete_domain: "0x80",
182
+ create_user: "0x100",
183
+ read_user: "0x200",
184
+ update_user: "0x400",
185
+ delete_user: "0x800",
186
+ create_course: "0x10000",
187
+ read_course: "0x20000",
188
+ update_course: "0x40000",
189
+ delete_course: "0x80000",
190
+ create_section: "0x100000",
191
+ read_section: "0x200000",
192
+ update_section: "0x400000",
193
+ delete_section: "0x800000",
194
+ grade_assignment: "0x1000000",
195
+ grade_forum: "0x2000000",
196
+ grade_exam: "0x4000000",
197
+ setup_gradebook: "0x8000000",
198
+ control_domain: "0x10000000",
199
+ control_course: "0x20000000",
200
+ control_section: "0x40000000",
201
+ read_gradebook: "0x80000000",
202
+ report_domain: "0x100000000",
203
+ report_course: "0x200000000",
204
+ report_section: "0x400000000",
205
+ post_domain_announcements: "0x800000000",
206
+ proxy: "0x1000000000",
207
+ report_user: "0x4000000000",
208
+ submit_final_grade: "0x8000000000",
209
+ control_enrollment: "0x10000000000",
210
+ read_enrollment: "0x20000000000",
211
+ read_course_full: "0x40000000000",
212
+ control_user: "0x80000000000",
213
+ read_objective: "0x100000000000",
214
+ update_objective: "0x200000000000"
215
+ }
216
+ end
217
+
218
+
219
+ def right_flags_lookup_value(val)
220
+ val = val.to_s
221
+ if val.include?("x")
222
+ raise ArgumentError.new("Not a valid right flag") unless right_flags_hex.values.include?(val)
223
+ right_flags_hex.find {|k,v| v == val}.first
224
+ else
225
+ val = val.to_i
226
+ raise ArgumentError.new("Not a valid right flag") unless right_flags.values.include?(val)
227
+ right_flags.find {|k,v| v == val}.first
228
+ end
229
+ end
230
+
231
+ end
232
+ end
233
+ end
234
+ end
@@ -1,3 +1,3 @@
1
1
  module Agilix
2
- VERSION = "0.4.0"
2
+ VERSION = "0.6.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: agilix
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben Eggett
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-03-18 00:00:00.000000000 Z
11
+ date: 2019-04-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -191,6 +191,8 @@ files:
191
191
  - lib/agilix/buzz/commands/enrollment.rb
192
192
  - lib/agilix/buzz/commands/general.rb
193
193
  - lib/agilix/buzz/commands/report.rb
194
+ - lib/agilix/buzz/commands/resource.rb
195
+ - lib/agilix/buzz/commands/right.rb
194
196
  - lib/agilix/buzz/commands/user.rb
195
197
  - lib/agilix/version.rb
196
198
  - stats.html