kinetic_sdk 0.1.1 → 1.0.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.
Files changed (74) hide show
  1. checksums.yaml +5 -5
  2. data/.yardoc-includes/yard-helpers.rb +14 -0
  3. data/.yardopts +7 -0
  4. data/CHANGELOG.md +41 -0
  5. data/GettingStarted.md +6 -12
  6. data/README.md +85 -37
  7. data/Rakefile +13 -0
  8. data/kinetic_sdk.gemspec +33 -0
  9. data/lib/kinetic_sdk/agent/agent-sdk.rb +90 -0
  10. data/lib/kinetic_sdk/agent/lib/bridges.rb +92 -0
  11. data/lib/kinetic_sdk/agent/lib/filestores.rb +91 -0
  12. data/lib/kinetic_sdk/agent/lib/handler.rb +91 -0
  13. data/lib/kinetic_sdk/bridgehub/bridgehub-sdk.rb +11 -3
  14. data/lib/kinetic_sdk/bridgehub/lib/access_keys.rb +5 -5
  15. data/lib/kinetic_sdk/bridgehub/lib/bridge.rb +5 -5
  16. data/lib/kinetic_sdk/{request_ce/request-ce-sdk.rb → core/core-sdk.rb} +30 -16
  17. data/lib/kinetic_sdk/core/lib/attribute_definitions.rb +500 -0
  18. data/lib/kinetic_sdk/core/lib/bridges.rb +141 -0
  19. data/lib/kinetic_sdk/{request_ce → core}/lib/categories.rb +3 -3
  20. data/lib/kinetic_sdk/{request_ce → core}/lib/datastore_form.rb +8 -8
  21. data/lib/kinetic_sdk/{request_ce → core}/lib/datastore_submissions.rb +20 -9
  22. data/lib/kinetic_sdk/{request_ce → core}/lib/form.rb +7 -7
  23. data/lib/kinetic_sdk/{request_ce → core}/lib/form_types.rb +4 -4
  24. data/lib/kinetic_sdk/{request_ce → core}/lib/jwt.rb +4 -4
  25. data/lib/kinetic_sdk/{request_ce → core}/lib/kapp.rb +7 -7
  26. data/lib/kinetic_sdk/{request_ce → core}/lib/meta.rb +3 -3
  27. data/lib/kinetic_sdk/{request_ce → core}/lib/oauth.rb +4 -4
  28. data/lib/kinetic_sdk/{request_ce → core}/lib/security_policy_definitions.rb +11 -11
  29. data/lib/kinetic_sdk/core/lib/space.rb +156 -0
  30. data/lib/kinetic_sdk/{request_ce → core}/lib/submissions.rb +11 -11
  31. data/lib/kinetic_sdk/{request_ce → core}/lib/system_api.rb +19 -7
  32. data/lib/kinetic_sdk/{request_ce → core}/lib/teams.rb +9 -9
  33. data/lib/kinetic_sdk/{request_ce → core}/lib/users.rb +15 -15
  34. data/lib/kinetic_sdk/{request_ce → core}/lib/webhook_jobs.rb +5 -5
  35. data/lib/kinetic_sdk/{request_ce → core}/lib/webhooks.rb +9 -9
  36. data/lib/kinetic_sdk/discussions/discussions-sdk.rb +12 -4
  37. data/lib/kinetic_sdk/discussions/lib/discussions.rb +8 -8
  38. data/lib/kinetic_sdk/discussions/lib/invitations.rb +9 -9
  39. data/lib/kinetic_sdk/discussions/lib/messages.rb +8 -8
  40. data/lib/kinetic_sdk/discussions/lib/meta.rb +1 -1
  41. data/lib/kinetic_sdk/discussions/lib/participants.rb +5 -5
  42. data/lib/kinetic_sdk/discussions/lib/related_items.rb +4 -4
  43. data/lib/kinetic_sdk/discussions/lib/websockets.rb +9 -9
  44. data/lib/kinetic_sdk/filehub/filehub-sdk.rb +11 -3
  45. data/lib/kinetic_sdk/filehub/lib/access_keys.rb +5 -5
  46. data/lib/kinetic_sdk/filehub/lib/filestores.rb +5 -5
  47. data/lib/kinetic_sdk/task/lib/access_keys.rb +35 -7
  48. data/lib/kinetic_sdk/task/lib/categories.rb +30 -17
  49. data/lib/kinetic_sdk/task/lib/config.rb +14 -14
  50. data/lib/kinetic_sdk/task/lib/engine.rb +1 -1
  51. data/lib/kinetic_sdk/task/lib/errors.rb +10 -10
  52. data/lib/kinetic_sdk/task/lib/export.rb +32 -0
  53. data/lib/kinetic_sdk/task/lib/groups.rb +23 -10
  54. data/lib/kinetic_sdk/task/lib/handlers.rb +27 -11
  55. data/lib/kinetic_sdk/task/lib/health.rb +11 -3
  56. data/lib/kinetic_sdk/task/lib/license.rb +4 -4
  57. data/lib/kinetic_sdk/task/lib/policy_rules.rb +25 -12
  58. data/lib/kinetic_sdk/task/lib/runs.rb +43 -0
  59. data/lib/kinetic_sdk/task/lib/setup.rb +2 -2
  60. data/lib/kinetic_sdk/task/lib/sources.rb +39 -8
  61. data/lib/kinetic_sdk/task/lib/tasks.rb +1 -1
  62. data/lib/kinetic_sdk/task/lib/trees.rb +84 -28
  63. data/lib/kinetic_sdk/task/lib/users.rb +6 -6
  64. data/lib/kinetic_sdk/task/task-sdk.rb +16 -4
  65. data/lib/kinetic_sdk/utils/kinetic-export-utils.rb +157 -0
  66. data/lib/kinetic_sdk/utils/kinetic-http.rb +388 -98
  67. data/lib/kinetic_sdk/utils/logger.rb +82 -46
  68. data/lib/kinetic_sdk/utils/prettier-xml-formatter.rb +60 -0
  69. data/lib/kinetic_sdk/version.rb +1 -1
  70. data/lib/kinetic_sdk.rb +5 -2
  71. metadata +41 -27
  72. data/lib/kinetic_sdk/request_ce/lib/attribute_definitions.rb +0 -153
  73. data/lib/kinetic_sdk/request_ce/lib/bridges.rb +0 -66
  74. data/lib/kinetic_sdk/request_ce/lib/space.rb +0 -89
@@ -1,5 +1,5 @@
1
1
  module KineticSdk
2
- class RequestCe
2
+ class Core
3
3
 
4
4
  # Add a Datastore Form
5
5
  #
@@ -20,7 +20,7 @@ module KineticSdk
20
20
  # @param headers [Hash] hash of headers to send, default is basic authentication and accept JSON content type
21
21
  # @return [KineticSdk::Utils::KineticHttpResponse] object, with +code+, +message+, +content_string+, and +content+ properties
22
22
  def add_datastore_form(form_properties={}, headers=default_headers)
23
- info("Adding the \"#{form_properties['name']}\" Form.")
23
+ @logger.info("Adding the \"#{form_properties['name']}\" Form.")
24
24
  post("#{@api_url}/datastore/forms", form_properties, headers)
25
25
  end
26
26
 
@@ -30,7 +30,7 @@ module KineticSdk
30
30
  # @param headers [Hash] hash of headers to send, default is basic authentication and accept JSON content type
31
31
  # @return [KineticSdk::Utils::KineticHttpResponse] object, with +code+, +message+, +content_string+, and +content+ properties
32
32
  def delete_datastore_form(form_slug, headers=default_headers)
33
- info("Deleting the \"#{form_slug}\" Datastore Form")
33
+ @logger.info("Deleting the \"#{form_slug}\" Datastore Form")
34
34
  delete("#{@api_url}/datastore/forms/#{form_slug}", headers)
35
35
  end
36
36
 
@@ -40,7 +40,7 @@ module KineticSdk
40
40
  # @param headers [Hash] hash of headers to send, default is basic authentication and accept JSON content type
41
41
  # @return [KineticSdk::Utils::KineticHttpResponse] object, with +code+, +message+, +content_string+, and +content+ properties
42
42
  def export_datastore_form(form_slug, headers=default_headers)
43
- info("Exporting the \"#{form_slug}\" Datastore Form.")
43
+ @logger.info("Exporting the \"#{form_slug}\" Datastore Form.")
44
44
  get("#{@api_url}/datastore/forms/#{form_slug}", { 'export' => true }, headers)
45
45
  end
46
46
 
@@ -50,7 +50,7 @@ module KineticSdk
50
50
  # @param headers [Hash] hash of headers to send, default is basic authentication and accept JSON content type
51
51
  # @return [KineticSdk::Utils::KineticHttpResponse] object, with +code+, +message+, +content_string+, and +content+ properties
52
52
  def find_datastore_forms(params={}, headers=default_headers)
53
- info("Finding Forms.")
53
+ @logger.info("Finding Forms.")
54
54
  get("#{@api_url}/datastore/forms", params, headers)
55
55
  end
56
56
 
@@ -61,7 +61,7 @@ module KineticSdk
61
61
  # @param headers [Hash] hash of headers to send, default is basic authentication and accept JSON content type
62
62
  # @return [KineticSdk::Utils::KineticHttpResponse] object, with +code+, +message+, +content_string+, and +content+ properties
63
63
  def find_datastore_form(form_slug, params={}, headers=default_headers)
64
- info("Finding the \"#{form_slug}\" Datastore Form")
64
+ @logger.info("Finding the \"#{form_slug}\" Datastore Form")
65
65
  get("#{@api_url}/datastore/forms/#{form_slug}", params, headers)
66
66
  end
67
67
 
@@ -85,7 +85,7 @@ module KineticSdk
85
85
  # @param headers [Hash] hash of headers to send, default is basic authentication and accept JSON content type
86
86
  # @return [KineticSdk::Utils::KineticHttpResponse] object, with +code+, +message+, +content_string+, and +content+ properties
87
87
  def update_datastore_form(form_slug, properties={}, headers=default_headers)
88
- info("Updating the \"#{form_slug}\" Datastore Form.")
88
+ @logger.info("Updating the \"#{form_slug}\" Datastore Form.")
89
89
  put("#{@api_url}/datastore/forms/#{form_slug}", properties, headers)
90
90
  end
91
91
 
@@ -102,7 +102,7 @@ module KineticSdk
102
102
  "indexes" => indexes
103
103
  }
104
104
  }
105
- info("Building indexes for the \"#{form_slug}\" Datastore Form.")
105
+ @logger.info("Building indexes for the \"#{form_slug}\" Datastore Form.")
106
106
  post("#{@api_url}/datastore/forms/#{form_slug}/backgroundJobs", payload, headers)
107
107
  end
108
108
 
@@ -1,5 +1,5 @@
1
1
  module KineticSdk
2
- class RequestCe
2
+ class Core
3
3
 
4
4
  # Add a Datastore Submission
5
5
  #
@@ -18,7 +18,7 @@ module KineticSdk
18
18
  # set parent hash if parent was passed as a string
19
19
  payload["parent"] = { "id" => payload["parent"] } if payload["parent"].is_a? String
20
20
  # Create the submission
21
- info("Adding a submission in the \"#{form_slug}\" Datastore Form.")
21
+ @logger.info("Adding a submission in the \"#{form_slug}\" Datastore Form.")
22
22
  post("#{@api_url}/datastore/forms/#{form_slug}/submissions", payload, headers)
23
23
  end
24
24
 
@@ -40,7 +40,7 @@ module KineticSdk
40
40
  # set parent hash if parent was passed as a string
41
41
  payload["parent"] = { "id" => payload["parent"] } if payload["parent"].is_a? String
42
42
  # Create the submission
43
- info("Adding a submission page in the \"#{form_slug}\" Datastore Form.")
43
+ @logger.info("Adding a submission page in the \"#{form_slug}\" Datastore Form.")
44
44
  post("#{@api_url}/datastore/forms/#{form_slug}/submissions?page=#{encode(page_name)}", payload, headers)
45
45
  end
46
46
 
@@ -63,7 +63,7 @@ module KineticSdk
63
63
  # set parent hash if parent was passed as a string
64
64
  payload["parent"] = { "id" => payload["parent"] } if payload["parent"].is_a? String
65
65
  # Create the submission
66
- info("Patching a submission in the \"#{form_slug}\" Form.")
66
+ @logger.info("Patching a submission in the \"#{form_slug}\" Form.")
67
67
  patch("#{@api_url}/datastore/forms/#{form_slug}/submissions", payload, headers)
68
68
  end
69
69
 
@@ -80,7 +80,7 @@ module KineticSdk
80
80
  # @param headers [Hash] hash of headers to send, default is basic authentication and accept JSON content type
81
81
  # @return [KineticSdk::Utils::KineticHttpResponse] object, with +code+, +message+, +content_string+, and +content+ properties
82
82
  def find_all_form_datastore_submissions(form_slug, params={}, headers=default_headers)
83
- info("Finding submissions for the \"#{form_slug}\" Datastore Form.")
83
+ @logger.info("Finding submissions for the \"#{form_slug}\" Datastore Form.")
84
84
  # Make the initial request of pages submissions
85
85
  response = find_form_datastore_submissions(form_slug, params, headers)
86
86
  # Build the Messages Array
@@ -119,9 +119,9 @@ module KineticSdk
119
119
  # Get next page token
120
120
  token = params["pageToken"]
121
121
  if token.nil?
122
- info("Finding first page of submissions for the \"#{form_slug}\" Datastore.")
122
+ @logger.info("Finding first page of submissions for the \"#{form_slug}\" Datastore.")
123
123
  else
124
- info("Finding page of submissions starting with token \"#{token}\" for the \"#{form_slug}\" Form.")
124
+ @logger.info("Finding page of submissions starting with token \"#{token}\" for the \"#{form_slug}\" Form.")
125
125
  end
126
126
 
127
127
  # Build Submission URL
@@ -130,6 +130,17 @@ module KineticSdk
130
130
  get(url, params, headers)
131
131
  end
132
132
 
133
+ # Find a Datastore submission
134
+ #
135
+ # @param submission_id [String] String value of the Submission Id (UUID)
136
+ # @param params [Hash] Query parameters that are added to the URL, such as +include+
137
+ # @param headers [Hash] hash of headers to send, default is basic authentication and accept JSON content type
138
+ # @return [KineticSdk::Utils::KineticHttpResponse] object, with +code+, +message+, +content_string+, and +content+ properties
139
+ def find_datastore_submission(submission_id, params={}, headers=default_headers)
140
+ @logger.info("Finding Datastore Submission \"#{submission_id}\"")
141
+ get("#{@api_url}/datastore/submissions/#{encode(submission_id)}", params, headers)
142
+ end
143
+
133
144
 
134
145
  # Update a Datastore submission
135
146
  #
@@ -138,7 +149,7 @@ module KineticSdk
138
149
  # @param headers [Hash] hash of headers to send, default is basic authentication and accept JSON content type
139
150
  # @return [KineticSdk::Utils::KineticHttpResponse] object, with +code+, +message+, +content_string+, and +content+ properties
140
151
  def update_datastore_submission(submission_id, body={}, headers=default_headers)
141
- info("Updating Datastore Submission \"#{submission_id}\"")
152
+ @logger.info("Updating Datastore Submission \"#{submission_id}\"")
142
153
  put("#{@api_url}/datastore/submissions/#{encode(submission_id)}", body, headers)
143
154
  end
144
155
 
@@ -149,7 +160,7 @@ module KineticSdk
149
160
  # @param headers [Hash] hash of headers to send, default is basic authentication and accept JSON content type
150
161
  # @return [KineticSdk::Utils::KineticHttpResponse] object, with +code+, +message+, +content_string+, and +content+ properties
151
162
  def delete_datastore_submission(submission_id, headers=default_headers)
152
- info("Deleting Datastore Submission \"#{submission_id}\"")
163
+ @logger.info("Deleting Datastore Submission \"#{submission_id}\"")
153
164
  delete("#{@api_url}/datastore/submissions/#{encode(submission_id)}", headers)
154
165
  end
155
166
 
@@ -1,5 +1,5 @@
1
1
  module KineticSdk
2
- class RequestCe
2
+ class Core
3
3
 
4
4
  # Add a Form
5
5
  #
@@ -21,7 +21,7 @@ module KineticSdk
21
21
  # @param headers [Hash] hash of headers to send, default is basic authentication and accept JSON content type
22
22
  # @return [KineticSdk::Utils::KineticHttpResponse] object, with +code+, +message+, +content_string+, and +content+ properties
23
23
  def add_form(kapp_slug, form_properties={}, headers=default_headers)
24
- info("Adding the \"#{form_properties['name']}\" Form.")
24
+ @logger.info("Adding the \"#{form_properties['name']}\" Form.")
25
25
  post("#{@api_url}/kapps/#{kapp_slug}/forms", form_properties, headers)
26
26
  end
27
27
 
@@ -32,7 +32,7 @@ module KineticSdk
32
32
  # @param headers [Hash] hash of headers to send, default is basic authentication and accept JSON content type
33
33
  # @return [KineticSdk::Utils::KineticHttpResponse] object, with +code+, +message+, +content_string+, and +content+ properties
34
34
  def delete_form(kapp_slug, form_slug, headers=default_headers)
35
- info("Deleting the \"#{form_slug}\" Form in the \"#{kapp_slug}\" Kapp.")
35
+ @logger.info("Deleting the \"#{form_slug}\" Form in the \"#{kapp_slug}\" Kapp.")
36
36
  delete("#{@api_url}/kapps/#{kapp_slug}/forms/#{form_slug}", headers)
37
37
  end
38
38
 
@@ -43,7 +43,7 @@ module KineticSdk
43
43
  # @param headers [Hash] hash of headers to send, default is basic authentication and accept JSON content type
44
44
  # @return [KineticSdk::Utils::KineticHttpResponse] object, with +code+, +message+, +content_string+, and +content+ properties
45
45
  def export_form(kapp_slug, form_slug, headers=default_headers)
46
- info("Exporting the \"#{form_slug}\" Form in the \"#{kapp_slug}\" Kapp.")
46
+ @logger.info("Exporting the \"#{form_slug}\" Form in the \"#{kapp_slug}\" Kapp.")
47
47
  get("#{@api_url}/kapps/#{kapp_slug}/forms/#{form_slug}", { 'export' => true }, headers)
48
48
  end
49
49
 
@@ -54,7 +54,7 @@ module KineticSdk
54
54
  # @param headers [Hash] hash of headers to send, default is basic authentication and accept JSON content type
55
55
  # @return [KineticSdk::Utils::KineticHttpResponse] object, with +code+, +message+, +content_string+, and +content+ properties
56
56
  def find_forms(kapp_slug, params={}, headers=default_headers)
57
- info("Finding Forms.")
57
+ @logger.info("Finding Forms.")
58
58
  get("#{@api_url}/kapps/#{kapp_slug}/forms", params, headers)
59
59
  end
60
60
 
@@ -66,7 +66,7 @@ module KineticSdk
66
66
  # @param headers [Hash] hash of headers to send, default is basic authentication and accept JSON content type
67
67
  # @return [KineticSdk::Utils::KineticHttpResponse] object, with +code+, +message+, +content_string+, and +content+ properties
68
68
  def find_form(kapp_slug, form_slug, params={}, headers=default_headers)
69
- info("Finding the \"#{form_slug}\" Form in the \"#{kapp_slug}\" Kapp.")
69
+ @logger.info("Finding the \"#{form_slug}\" Form in the \"#{kapp_slug}\" Kapp.")
70
70
  get("#{@api_url}/kapps/#{kapp_slug}/forms/#{form_slug}", params, headers)
71
71
  end
72
72
 
@@ -91,7 +91,7 @@ module KineticSdk
91
91
  # @param headers [Hash] hash of headers to send, default is basic authentication and accept JSON content type
92
92
  # @return [KineticSdk::Utils::KineticHttpResponse] object, with +code+, +message+, +content_string+, and +content+ properties
93
93
  def update_form(kapp_slug, form_slug, properties={}, headers=default_headers)
94
- info("Updating the \"#{form_slug}\" Form in the \"#{kapp_slug}\" Kapp.")
94
+ @logger.info("Updating the \"#{form_slug}\" Form in the \"#{kapp_slug}\" Kapp.")
95
95
  put("#{@api_url}/kapps/#{kapp_slug}/forms/#{form_slug}", properties, headers)
96
96
  end
97
97
 
@@ -1,5 +1,5 @@
1
1
  module KineticSdk
2
- class RequestCe
2
+ class Core
3
3
 
4
4
  # Add a form type on a Kapp
5
5
  #
@@ -10,7 +10,7 @@ module KineticSdk
10
10
  # @return [KineticSdk::Utils::KineticHttpResponse] object, with +code+, +message+, +content_string+, and +content+ properties
11
11
  def add_form_type_on_kapp(kapp_slug, body, headers=default_headers)
12
12
  raise StandardError.new "Form Type properties is not valid, must be a Hash." unless body.is_a? Hash
13
- info("Adding Form Type \"#{body['name']}\" for \"#{kapp_slug}\" kapp")
13
+ @logger.info("Adding Form Type \"#{body['name']}\" for \"#{kapp_slug}\" kapp")
14
14
  post("#{@api_url}/kapps/#{kapp_slug}/formTypes", body, headers)
15
15
  end
16
16
 
@@ -21,7 +21,7 @@ module KineticSdk
21
21
  # @param headers [Hash] hash of headers to send, default is basic authentication and accept JSON content type
22
22
  # @return [KineticSdk::Utils::KineticHttpResponse] object, with +code+, +message+, +content_string+, and +content+ properties
23
23
  def delete_form_type(kapp_slug, name, headers=default_headers)
24
- info("Deleting form type \"#{name}\" from \"#{kapp_slug}\" kapp")
24
+ @logger.info("Deleting form type \"#{name}\" from \"#{kapp_slug}\" kapp")
25
25
  delete("#{@api_url}/kapps/#{kapp_slug}/formTypes/#{encode(name)}", headers)
26
26
  end
27
27
 
@@ -43,7 +43,7 @@ module KineticSdk
43
43
  # @param headers [Hash] hash of headers to send, default is basic authentication and accept JSON content type
44
44
  # @return [KineticSdk::Utils::KineticHttpResponse] object, with +code+, +message+, +content_string+, and +content+ properties
45
45
  def find_form_types_on_kapp(kapp_slug, params={}, headers=default_headers)
46
- info("Finding Form Types for \"#{kapp_slug}\" kapp")
46
+ @logger.info("Finding Form Types for \"#{kapp_slug}\" kapp")
47
47
  get("#{@api_url}/kapps/#{kapp_slug}/formTypes", params, headers)
48
48
  end
49
49
 
@@ -1,7 +1,7 @@
1
1
  module KineticSdk
2
- class RequestCe
2
+ class Core
3
3
 
4
- # Gets an authentication code
4
+ # Gets an authentication token
5
5
  #
6
6
  # @param client_id [String] the oauth client id
7
7
  # @param client_secret [String] the oauth client secret
@@ -11,7 +11,7 @@ module KineticSdk
11
11
  # retrieve the jwt code
12
12
  jwt_code = jwt_code(client_id, headers)
13
13
  # retrieve the jwt token
14
- info("Retrieving JWT authorization token")
14
+ @logger.info("Retrieving JWT authorization token")
15
15
  url = "#{@server}/app/oauth/token?grant_type=authorization_code&response_type=token&client_id=#{client_id}&code=#{jwt_code}"
16
16
  token_headers = header_accept_json.merge(header_basic_auth(client_id, client_secret))
17
17
  response = post(url, {}, token_headers, 0)
@@ -33,7 +33,7 @@ module KineticSdk
33
33
  # @param headers [Hash] hash of headers to send, default is basic authentication and accept JSON content type
34
34
  # @return [KineticSdk::Utils::KineticHttpResponse] object, with +code+, +message+, +content_string+, and +content+ properties
35
35
  def jwt_code(client_id, headers=default_headers)
36
- info("Retrieving JWT authorization code")
36
+ @logger.info("Retrieving JWT authorization code")
37
37
  url = "#{@server}/app/oauth/authorize?grant_type=authorization_code&response_type=code&client_id=#{client_id}"
38
38
  response = post(url, {}, headers, -1)
39
39
 
@@ -1,5 +1,5 @@
1
1
  module KineticSdk
2
- class RequestCe
2
+ class Core
3
3
 
4
4
  # Add a Kapp
5
5
  #
@@ -22,7 +22,7 @@ module KineticSdk
22
22
  "name" => kapp_name,
23
23
  "slug" => kapp_slug
24
24
  })
25
- info("Adding the \"#{kapp_name}\" Kapp.")
25
+ @logger.info("Adding the \"#{kapp_name}\" Kapp.")
26
26
  post("#{@api_url}/kapps", properties, headers)
27
27
  end
28
28
 
@@ -32,7 +32,7 @@ module KineticSdk
32
32
  # @param headers [Hash] hash of headers to send, default is basic authentication and accept JSON content type
33
33
  # @return [KineticSdk::Utils::KineticHttpResponse] object, with +code+, +message+, +content_string+, and +content+ properties
34
34
  def delete_kapp(kapp_slug, headers=default_headers)
35
- info("Deleting the \"#{kapp_slug}\" Kapp.")
35
+ @logger.info("Deleting the \"#{kapp_slug}\" Kapp.")
36
36
  delete("#{@api_url}/kapps/#{kapp_slug}", headers)
37
37
  end
38
38
 
@@ -42,7 +42,7 @@ module KineticSdk
42
42
  # @param headers [Hash] hash of headers to send, default is basic authentication and accept JSON content type
43
43
  # @return [KineticSdk::Utils::KineticHttpResponse] object, with +code+, +message+, +content_string+, and +content+ properties
44
44
  def export_kapp(kapp_slug, headers=default_headers)
45
- info("Exporting the \"#{kapp_slug}\" Kapp.")
45
+ @logger.info("Exporting the \"#{kapp_slug}\" Kapp.")
46
46
  get("#{@api_url}/kapps/#{kapp_slug}", { 'export' => true }, headers)
47
47
  end
48
48
 
@@ -52,7 +52,7 @@ module KineticSdk
52
52
  # @param headers [Hash] hash of headers to send, default is basic authentication and accept JSON content type
53
53
  # @return [KineticSdk::Utils::KineticHttpResponse] object, with +code+, +message+, +content_string+, and +content+ properties
54
54
  def find_kapps(params={}, headers=default_headers)
55
- info("Finding Kapps.")
55
+ @logger.info("Finding Kapps.")
56
56
  get("#{@api_url}/kapps", params, headers)
57
57
  end
58
58
 
@@ -63,7 +63,7 @@ module KineticSdk
63
63
  # @param headers [Hash] hash of headers to send, default is basic authentication and accept JSON content type
64
64
  # @return [KineticSdk::Utils::KineticHttpResponse] object, with +code+, +message+, +content_string+, and +content+ properties
65
65
  def find_kapp(kapp_slug, params={}, headers=default_headers)
66
- info("Finding Kapp \"#{kapp_slug}\"")
66
+ @logger.info("Finding Kapp \"#{kapp_slug}\"")
67
67
  get("#{@api_url}/kapps/#{kapp_slug}", params, headers)
68
68
  end
69
69
 
@@ -85,7 +85,7 @@ module KineticSdk
85
85
  # @param headers [Hash] hash of headers to send, default is basic authentication and accept JSON content type
86
86
  # @return [KineticSdk::Utils::KineticHttpResponse] object, with +code+, +message+, +content_string+, and +content+ properties
87
87
  def update_kapp(kapp_slug, properties={}, headers=default_headers)
88
- info("Updating the \"#{kapp_slug}\" Kapp.")
88
+ @logger.info("Updating the \"#{kapp_slug}\" Kapp.")
89
89
  put("#{@api_url}/kapps/#{kapp_slug}", properties, headers)
90
90
  end
91
91
 
@@ -1,12 +1,12 @@
1
1
  module KineticSdk
2
- class RequestCe
2
+ class Core
3
3
 
4
- # Retrieve Request CE application version
4
+ # Retrieve Core application version
5
5
  #
6
6
  # @param headers [Hash] hash of headers to send, default is basic authentication and accept JSON content type
7
7
  # @return [KineticSdk::Utils::KineticHttpResponse] object, with +code+, +message+, +content_string+, and +content+ properties
8
8
  def app_version(headers=default_headers)
9
- info("Retrieving Request CE application version.")
9
+ @logger.info("Retrieving Core application version.")
10
10
  get("#{@api_url}/version", {}, headers)
11
11
  end
12
12
 
@@ -1,5 +1,5 @@
1
1
  module KineticSdk
2
- class RequestCe
2
+ class Core
3
3
 
4
4
  # Add an OAuth client
5
5
  #
@@ -7,7 +7,7 @@ module KineticSdk
7
7
  # @param headers [Hash] hash of headers to send, default is basic authentication and accept JSON content type
8
8
  # @return [KineticSdk::Utils::KineticHttpResponse] object, with +code+, +message+, +content_string+, and +content+ properties
9
9
  def add_oauth_client(options, headers=default_headers)
10
- info("Adding the \"#{options['clientId']}\" OAuth client")
10
+ @logger.info("Adding the \"#{options['clientId']}\" OAuth client")
11
11
  post("#{@api_url}/oauthClients", options, headers)
12
12
  end
13
13
 
@@ -18,7 +18,7 @@ module KineticSdk
18
18
  # @param headers [Hash] hash of headers to send, default is basic authentication and accept JSON content type
19
19
  # @return [KineticSdk::Utils::KineticHttpResponse] object, with +code+, +message+, +content_string+, and +content+ properties
20
20
  def find_oauth_client(client_id, params={}, headers=default_headers)
21
- info("Finding OAuth Client \"#{client_id}\"")
21
+ @logger.info("Finding OAuth Client \"#{client_id}\"")
22
22
  get("#{@api_url}/oauthClients/#{encode(client_id)}", params, headers)
23
23
  end
24
24
 
@@ -29,7 +29,7 @@ module KineticSdk
29
29
  # @param headers [Hash] hash of headers to send, default is basic authentication and accept JSON content type
30
30
  # @return [KineticSdk::Utils::KineticHttpResponse] object, with +code+, +message+, +content_string+, and +content+ properties
31
31
  def update_oauth_client(client_id, options, headers=default_headers)
32
- info("Updating the \"#{client_id}\" OAuth client")
32
+ @logger.info("Updating the \"#{client_id}\" OAuth client")
33
33
  put("#{@api_url}/oauthClients/#{encode(client_id)}", options, headers)
34
34
  end
35
35
 
@@ -1,5 +1,5 @@
1
1
  module KineticSdk
2
- class RequestCe
2
+ class Core
3
3
 
4
4
  # Add a Space security policy definition
5
5
  #
@@ -11,7 +11,7 @@ module KineticSdk
11
11
  # @param headers [Hash] hash of headers to send, default is basic authentication and accept JSON content type
12
12
  # @return [KineticSdk::Utils::KineticHttpResponse] object, with +code+, +message+, +content_string+, and +content+ properties
13
13
  def add_space_security_policy_definition(body, headers=default_headers)
14
- info("Adding Space Security Policy Definition \"#{body['name']}\".")
14
+ @logger.info("Adding Space Security Policy Definition \"#{body['name']}\".")
15
15
  # Create the space security policy definition
16
16
  post("#{@api_url}/securityPolicyDefinitions", body, headers)
17
17
  end
@@ -22,7 +22,7 @@ module KineticSdk
22
22
  # @param headers [Hash] hash of headers to send, default is basic authentication and accept JSON content type
23
23
  # @return [KineticSdk::Utils::KineticHttpResponse] object, with +code+, +message+, +content_string+, and +content+ properties
24
24
  def delete_space_security_policy_definition(name, headers=default_headers)
25
- info("Deleting Space Security Policy Definition \"#{name}\".")
25
+ @logger.info("Deleting Space Security Policy Definition \"#{name}\".")
26
26
  # Delete the space security policy definition
27
27
  delete("#{@api_url}/securityPolicyDefinitions/#{encode(name)}", headers)
28
28
  end
@@ -43,7 +43,7 @@ module KineticSdk
43
43
  # @param headers [Hash] hash of headers to send, default is basic authentication and accept JSON content type
44
44
  # @return [KineticSdk::Utils::KineticHttpResponse] object, with +code+, +message+, +content_string+, and +content+ properties
45
45
  def find_space_security_policy_definitions(params={}, headers=default_headers)
46
- info("Finding Space Security Policy Definitions.")
46
+ @logger.info("Finding Space Security Policy Definitions.")
47
47
  get("#{@api_url}/securityPolicyDefinitions", params, headers)
48
48
  end
49
49
 
@@ -54,7 +54,7 @@ module KineticSdk
54
54
  # @param headers [Hash] hash of headers to send, default is basic authentication and accept JSON content type
55
55
  # @return [KineticSdk::Utils::KineticHttpResponse] object, with +code+, +message+, +content_string+, and +content+ properties
56
56
  def find_space_security_policy_definition(name, params={}, headers=default_headers)
57
- info("Finding Space Security Policy Definition \"#{name}\"")
57
+ @logger.info("Finding Space Security Policy Definition \"#{name}\"")
58
58
  get("#{@api_url}/securityPolicyDefinitions/#{encode(name)}", params, headers)
59
59
  end
60
60
 
@@ -69,7 +69,7 @@ module KineticSdk
69
69
  # @param headers [Hash] hash of headers to send, default is basic authentication and accept JSON content type
70
70
  # @return [KineticSdk::Utils::KineticHttpResponse] object, with +code+, +message+, +content_string+, and +content+ properties
71
71
  def update_space_security_policy_definition(name, body, headers=default_headers)
72
- info("Updating Space Security Policy Definition \"#{name}\"")
72
+ @logger.info("Updating Space Security Policy Definition \"#{name}\"")
73
73
  put("#{@api_url}/securityPolicyDefinitions/#{encode(name)}", body, headers)
74
74
  end
75
75
 
@@ -86,7 +86,7 @@ module KineticSdk
86
86
  # @param headers [Hash] hash of headers to send, default is basic authentication and accept JSON content type
87
87
  # @return [KineticSdk::Utils::KineticHttpResponse] object, with +code+, +message+, +content_string+, and +content+ properties
88
88
  def add_security_policy_definition(kapp_slug, body, headers=default_headers)
89
- info("Adding Security Policy Definition \"#{body['name']}\" to the \"#{kapp_slug}\" kapp.")
89
+ @logger.info("Adding Security Policy Definition \"#{body['name']}\" to the \"#{kapp_slug}\" kapp.")
90
90
  # Create the kapp security policy definition
91
91
  post("#{@api_url}/kapps/#{kapp_slug}/securityPolicyDefinitions", body, headers)
92
92
  end
@@ -98,7 +98,7 @@ module KineticSdk
98
98
  # @param headers [Hash] hash of headers to send, default is basic authentication and accept JSON content type
99
99
  # @return [KineticSdk::Utils::KineticHttpResponse] object, with +code+, +message+, +content_string+, and +content+ properties
100
100
  def delete_security_policy_definition(kapp_slug, name, headers=default_headers)
101
- info("Deleting Security Policy Definition \"#{name}\" from the \"#{kapp_slug}\" kapp.")
101
+ @logger.info("Deleting Security Policy Definition \"#{name}\" from the \"#{kapp_slug}\" kapp.")
102
102
  # Delete the kapp security policy definition
103
103
  delete("#{@api_url}/kapps/#{kapp_slug}/securityPolicyDefinitions/#{encode(name)}", headers)
104
104
  end
@@ -121,7 +121,7 @@ module KineticSdk
121
121
  # @param headers [Hash] hash of headers to send, default is basic authentication and accept JSON content type
122
122
  # @return [KineticSdk::Utils::KineticHttpResponse] object, with +code+, +message+, +content_string+, and +content+ properties
123
123
  def find_security_policy_definitions(kapp_slug, params={}, headers=default_headers)
124
- info("Listing Security Policy Definitions on the \"#{kapp_slug}\" kapp.")
124
+ @logger.info("Listing Security Policy Definitions on the \"#{kapp_slug}\" kapp.")
125
125
  get("#{@api_url}/kapps/#{kapp_slug}/securityPolicyDefinitions", params, headers)
126
126
  end
127
127
 
@@ -133,7 +133,7 @@ module KineticSdk
133
133
  # @param headers [Hash] hash of headers to send, default is basic authentication and accept JSON content type
134
134
  # @return [KineticSdk::Utils::KineticHttpResponse] object, with +code+, +message+, +content_string+, and +content+ properties
135
135
  def find_security_policy_definition(kapp_slug, name, params={}, headers=default_headers)
136
- info("Finding Security Policy Definition \"#{name}\" on the \"#{kapp_slug}\" kapp.")
136
+ @logger.info("Finding Security Policy Definition \"#{name}\" on the \"#{kapp_slug}\" kapp.")
137
137
  get("#{@api_url}/kapps/#{kapp_slug}/securityPolicyDefinitions/#{encode(name)}", params, headers)
138
138
  end
139
139
 
@@ -149,7 +149,7 @@ module KineticSdk
149
149
  # @param headers [Hash] hash of headers to send, default is basic authentication and accept JSON content type
150
150
  # @return [KineticSdk::Utils::KineticHttpResponse] object, with +code+, +message+, +content_string+, and +content+ properties
151
151
  def update_security_policy_definition(kapp_slug, name, body, headers=default_headers)
152
- info("Updating Security Policy Definition \"#{name}\" on the \"#{kapp_slug}\" kapp.")
152
+ @logger.info("Updating Security Policy Definition \"#{name}\" on the \"#{kapp_slug}\" kapp.")
153
153
  put("#{@api_url}/kapps/#{kapp_slug}/securityPolicyDefinitions/#{encode(name)}", body, headers)
154
154
  end
155
155
 
@@ -0,0 +1,156 @@
1
+ module KineticSdk
2
+ class Core
3
+
4
+ # Add an attribute value to the space, or update an attribute if it already exists
5
+ #
6
+ # @param attribute_name [String] name of the attribute
7
+ # @param attribute_value [String] value of the attribute
8
+ # @param headers [Hash] hash of headers to send, default is basic authentication and accept JSON content type
9
+ # @return [KineticSdk::Utils::KineticHttpResponse] object, with +code+, +message+, +content_string+, and +content+ properties
10
+ def add_space_attribute(attribute_name, attribute_value, headers=default_headers)
11
+ # first find the space
12
+ response = find_space({ "include" => "attributes"}, headers)
13
+ # hack to try a second time if space isn't found
14
+ if response.status == 404
15
+ sleep 2
16
+ response = find_space({ "include" => "attributes"}, headers)
17
+ end
18
+ space = response.content["space"]
19
+ attributes = space["attributes"]
20
+ # either add or update the attribute value
21
+ exists = false
22
+ attributes.each do |attribute|
23
+ @logger.info("Attribute: #{attribute.inspect}")
24
+ # if the attribute already exists, update it
25
+ if attribute["name"] == attribute_name
26
+ attribute["values"] = [ attribute_value ]
27
+ exists = true
28
+ end
29
+ end
30
+ # add the attribute if it didn't exist
31
+ attributes.push({
32
+ "name" => attribute_name,
33
+ "values" => [ attribute_value ]
34
+ }) unless exists
35
+
36
+ # set the updated attributes list
37
+ body = { "attributes" => attributes }
38
+ if exists
39
+ @logger.info("Updating attribute \"#{attribute_name}\" = \"#{attribute_value}\" in the \"#{space_slug}\" space.")
40
+ else
41
+ @logger.info("Adding attribute \"#{attribute_name}\" = \"#{attribute_value}\" to the \"#{space_slug}\" space.")
42
+ end
43
+ # Update the space
44
+ put("#{@api_url}/space", body, headers)
45
+ end
46
+
47
+ # Update a space
48
+ #
49
+ # @param body [Hash] properties for the Space
50
+ # @param headers [Hash] hash of headers to send, default is basic authentication and accept JSON content type
51
+ # @return [KineticSdk::Utils::KineticHttpResponse] object, with +code+, +message+, +content_string+, and +content+ properties
52
+ def update_space(body={}, headers=default_headers)
53
+ @logger.info("Updating Space \"#{@space_slug}\"")
54
+ put("#{@api_url}/space", body, headers)
55
+ end
56
+
57
+ # Export a space to the export_directory
58
+ #
59
+ # @param headers [Hash] hash of headers to send, default is basic authentication and accept JSON content type
60
+ # @return nil
61
+ def export_space(headers=default_headers)
62
+ raise StandardError.new "An export directory must be defined to export space." if @options[:export_directory].nil?
63
+ @logger.info("Exporting space definition to #{@options[:export_directory]}.")
64
+ # Build up the tree of how files should be written
65
+ export_shape = prepare_shape(
66
+ "space.bridges.{name}",
67
+ "space.datastore.forms.{slug}",
68
+ "space.kapps.{slug}.categories",
69
+ "space.kapps.{slug}.categoryAttributeDefinitions",
70
+ "space.kapps.{slug}.forms.{slug}",
71
+ "space.kapps.{slug}.formAttributeDefinitions",
72
+ "space.kapps.{slug}.formsTypes",
73
+ "space.kapps.{slug}.kappAttributeDefinitions",
74
+ "space.kapps.{slug}.securityPolicyDefinitions",
75
+ "space.kapps.{slug}.webhooks.{name}",
76
+ "space.models.{name}",
77
+ "space.teams.{name}",
78
+ "space.datastoreFormAttributeDefinitions",
79
+ "space.securityPolicyDefinitions",
80
+ "space.spaceAttributeDefinitions",
81
+ "space.teamAttributeDefinitions",
82
+ "space.userAttributeDefinitions",
83
+ "space.userProfileAttributeDefinitions",
84
+ "space.webhooks.{name}",
85
+ )
86
+ core_data = get("#{@api_url}/space", { 'export' => true}, headers).content
87
+ process_export(@options[:export_directory], export_shape, core_data)
88
+ @logger.info("Finished exporting space definition to #{@options[:export_directory]}.")
89
+ end
90
+
91
+ # Find the space
92
+ #
93
+ # @param params [Hash] Query parameters that are added to the URL, such as +include+
94
+ # @param headers [Hash] hash of headers to send, default is basic authentication and accept JSON content type
95
+ # @return [KineticSdk::Utils::KineticHttpResponse] object, with +code+, +message+, +content_string+, and +content+ properties
96
+ def find_space(params={}, headers=default_headers)
97
+ @logger.info("Finding Space \"#{@space_slug}\"")
98
+ get("#{@api_url}/space", params, headers)
99
+ end
100
+
101
+ # Imports a full space definition from the export_directory
102
+ #
103
+ # @param slug [String] the slug of the space that is being imported
104
+ # @param headers [Hash] hash of headers to send, default is basic authentication and accept JSON content type
105
+ # @return nil
106
+ def import_space(slug, headers=default_headers)
107
+ raise StandardError.new "An export directory must be defined to import space." if @options[:export_directory].nil?
108
+ @logger.info("Importing space definition from #{@options[:export_directory]}.")
109
+
110
+ # Loop over all provided files sorting files before folders
111
+ Dir["#{@options[:export_directory]}/**/*.json"].map { |file| [file.count("/"), file] }.sort.map { |file| file[1] }.each do |file|
112
+ rel_path = file.gsub("#{@options[:export_directory]}/", '')
113
+ body = JSON.parse(File.read(file))
114
+ if rel_path == "space.json"
115
+ api_path = "/space"
116
+ @logger.info("Importing #{rel_path} to #{api_path}.")
117
+ body['slug'] = slug
118
+ resp = put("#{@api_url}#{api_path}", body, headers)
119
+ elsif body.is_a?(Array)
120
+ api_path = "/#{rel_path.sub(/^space\//,'').sub(/\.json$/,'')}"
121
+ body.each do |part|
122
+ @logger.info("Importing #{rel_path} to #{api_path}.")
123
+ resp = post("#{@api_url}#{api_path}", part, headers)
124
+ end
125
+ else
126
+ api_path = "/#{rel_path.sub(/^space\//,'').sub(/\/[^\/]+$/,'')}"
127
+ # TODO: Remove this block when core API is updated to not export Key
128
+ if api_path == "/bridges" && body.has_key?("key")
129
+ body.delete("key")
130
+ end
131
+ @logger.info("Importing #{rel_path} to #{api_path}.")
132
+ resp = post("#{@api_url}#{api_path}", body, headers)
133
+ # TODO: Remove this block when core API is updated to not pre-create SPDs
134
+ if api_path == "/kapps"
135
+ kapp_slug = resp.content["kapp"]["slug"]
136
+ delete_security_policy_definitions(kapp_slug)
137
+ end
138
+ end
139
+ end
140
+ @logger.info("Finished importing space definition to #{@options[:export_directory]}.")
141
+ end
142
+
143
+ # Checks if the space exists
144
+ #
145
+ # @param slug [String] slug of the space
146
+ # @param params [Hash] Query parameters that are added to the URL, such as +include+
147
+ # @param headers [Hash] hash of headers to send, default is basic authentication and accept JSON content type
148
+ # @return [KineticSdk::Utils::KineticHttpResponse] object, with +code+, +message+, +content_string+, and +content+ properties
149
+ def space_exists?(slug, params={}, headers=default_headers)
150
+ @logger.info("Checking if the \"#{slug}\" space exists")
151
+ response = get("#{@api_url}/spaces/#{slug}", params, headers)
152
+ response.status == 200
153
+ end
154
+
155
+ end
156
+ end