springcm-sdk 0.5.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 +4 -4
- data/CHANGELOG.md +16 -0
- data/lib/springcm-sdk/account.rb +1 -0
- data/lib/springcm-sdk/change_security_task.rb +27 -0
- data/lib/springcm-sdk/client.rb +33 -0
- data/lib/springcm-sdk/document.rb +35 -1
- data/lib/springcm-sdk/folder.rb +62 -1
- data/lib/springcm-sdk/group.rb +23 -0
- data/lib/springcm-sdk/helpers.rb +16 -0
- data/lib/springcm-sdk/middleware/rate_limit.rb +1 -0
- data/lib/springcm-sdk/mixins/attributes.rb +40 -3
- data/lib/springcm-sdk/resource.rb +7 -0
- data/lib/springcm-sdk/resource_list.rb +12 -3
- data/lib/springcm-sdk/user.rb +23 -0
- data/lib/springcm-sdk/version.rb +1 -1
- data/lib/springcm-sdk.rb +6 -0
- data/springcm-sdk.gemspec +2 -2
- metadata +9 -8
- data/exe/springcm +0 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 82c89b40586e83b4ac5e875be284b7f399be97beeeba634e3e500dd8e98fcff2
|
4
|
+
data.tar.gz: b0584226929818e8088afc36c9172cdc21a4d894217fd1e877eb126da1d731a7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f09f4b7a972bdda28ca3c48653acec5da3e9f8fe77170ff46b7973b0c66d4a911fecb376308377661a1e00680d110412353cf8d2adcc8e3134e39930fc470048
|
7
|
+
data.tar.gz: 661b3763c4fdeace47f06e4bf0cd731960809dd6b6454da7a2cf908bd83190b6ac74ee687efaa5a489b30b8bb79760aa90ae156181368a6d27fa244f3d9b3a6e
|
data/CHANGELOG.md
CHANGED
@@ -4,6 +4,21 @@ All notable changes to springcm-sdk will be documented in this file.
|
|
4
4
|
|
5
5
|
## [Unreleased]
|
6
6
|
|
7
|
+
## [0.6.0] - 2020-01-13
|
8
|
+
### Added
|
9
|
+
* Document versions via #versions method. Document versions behave much like
|
10
|
+
normal Documents, but have some different behaviors.
|
11
|
+
* Document#download method.
|
12
|
+
* Resource#reload! method, to reload a resource object in-place.
|
13
|
+
* Security setting updates for Folders.
|
14
|
+
* Users and Groups.
|
15
|
+
|
16
|
+
### Changed
|
17
|
+
* Path is expanded when retrieving individual Folders.
|
18
|
+
|
19
|
+
### Removed
|
20
|
+
* `springcm` executable. Will be provided via the springcm-cli gem.
|
21
|
+
|
7
22
|
## [0.5.0] - 2020-01-03
|
8
23
|
### Added
|
9
24
|
* #patch and #put for Resources.
|
@@ -124,3 +139,4 @@ All notable changes to springcm-sdk will be documented in this file.
|
|
124
139
|
[0.3.6]: https://github.com/paulholden2/springcm-sdk/releases/tag/0.3.6
|
125
140
|
[0.4.0]: https://github.com/paulholden2/springcm-sdk/releases/tag/0.4.0
|
126
141
|
[0.5.0]: https://github.com/paulholden2/springcm-sdk/releases/tag/0.5.0
|
142
|
+
[0.6.0]: https://github.com/paulholden2/springcm-sdk/releases/tag/0.6.0
|
data/lib/springcm-sdk/account.rb
CHANGED
@@ -22,6 +22,7 @@ module Springcm
|
|
22
22
|
# you can call #all_attribute_groups instead, as attribute group
|
23
23
|
# configurations do not frequently change.
|
24
24
|
def attribute_groups(offset: 0, limit: 20)
|
25
|
+
Helpers.validate_offset_limit!(offset, limit)
|
25
26
|
conn = @client.authorized_connection(url: @client.object_api_url)
|
26
27
|
res = conn.get do |req|
|
27
28
|
req.url "accounts/current/attributegroups"
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require "springcm-sdk/resource"
|
2
|
+
|
3
|
+
module Springcm
|
4
|
+
class ChangeSecurityTask < Resource
|
5
|
+
def await!(interval: 1, tries: 10, backoff: 2)
|
6
|
+
while tries > 0
|
7
|
+
return true if complete?
|
8
|
+
sleep(interval)
|
9
|
+
interval *= backoff
|
10
|
+
tries -= 1
|
11
|
+
end
|
12
|
+
raise Springcm::ChangeSecurityTaskAwaitTimeout.new
|
13
|
+
end
|
14
|
+
|
15
|
+
def await(interval: 1, tries: 10, backoff: 2)
|
16
|
+
begin
|
17
|
+
await!(interval: interval, tries: tries, backoff: backoff)
|
18
|
+
rescue Springcm::ChangeSecurityTaskAwaitTimeout => timeout
|
19
|
+
return false
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def complete?
|
24
|
+
get.status == "Success"
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
data/lib/springcm-sdk/client.rb
CHANGED
@@ -3,6 +3,7 @@ require "json"
|
|
3
3
|
require "springcm-sdk/account"
|
4
4
|
require "springcm-sdk/folder"
|
5
5
|
require "springcm-sdk/document"
|
6
|
+
require "springcm-sdk/group"
|
6
7
|
require "springcm-sdk/middleware"
|
7
8
|
|
8
9
|
module Springcm
|
@@ -159,6 +160,38 @@ module Springcm
|
|
159
160
|
end
|
160
161
|
end
|
161
162
|
|
163
|
+
def groups(offset: 0, limit: 20)
|
164
|
+
Helpers.validate_offset_limit!(offset, limit)
|
165
|
+
conn = authorized_connection(url: object_api_url)
|
166
|
+
res = conn.get do |req|
|
167
|
+
req.url "groups"
|
168
|
+
req.params["offset"] = offset
|
169
|
+
req.params["limit"] = limit
|
170
|
+
end
|
171
|
+
if res.success?
|
172
|
+
data = JSON.parse(res.body)
|
173
|
+
ResourceList.new(data, self, Group, self)
|
174
|
+
else
|
175
|
+
nil
|
176
|
+
end
|
177
|
+
end
|
178
|
+
|
179
|
+
def users(offset: 0, limit: 20)
|
180
|
+
Helpers.validate_offset_limit!(offset, limit)
|
181
|
+
conn = authorized_connection(url: object_api_url)
|
182
|
+
res = conn.get do |req|
|
183
|
+
req.url "users"
|
184
|
+
req.params["offset"] = offset
|
185
|
+
req.params["limit"] = limit
|
186
|
+
end
|
187
|
+
if res.success?
|
188
|
+
data = JSON.parse(res.body)
|
189
|
+
ResourceList.new(data, self, User, self)
|
190
|
+
else
|
191
|
+
nil
|
192
|
+
end
|
193
|
+
end
|
194
|
+
|
162
195
|
# Check if client is successfully authenticated
|
163
196
|
# @return [Boolean] Whether a valid, unexpired access token is held.
|
164
197
|
def authenticated?
|
@@ -1,6 +1,7 @@
|
|
1
1
|
require "springcm-sdk/resource"
|
2
2
|
require "springcm-sdk/mixins/access_level"
|
3
3
|
require "springcm-sdk/mixins/attributes"
|
4
|
+
require "springcm-sdk/mixins/parent_folder"
|
4
5
|
require "springcm-sdk/history_item"
|
5
6
|
|
6
7
|
module Springcm
|
@@ -15,6 +16,23 @@ module Springcm
|
|
15
16
|
}
|
16
17
|
end
|
17
18
|
|
19
|
+
def download
|
20
|
+
io = StringIO.new
|
21
|
+
conn = @client.authorized_connection(url: @client.download_api_url)
|
22
|
+
res = conn.get do |req|
|
23
|
+
req.url resource_uri
|
24
|
+
req.options.on_data = Proc.new do |chunk, total_bytes|
|
25
|
+
io << chunk
|
26
|
+
end
|
27
|
+
end
|
28
|
+
if res.success?
|
29
|
+
io.rewind
|
30
|
+
io
|
31
|
+
else
|
32
|
+
nil
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
18
36
|
def history(offset: 0, limit: 20)
|
19
37
|
Helpers.validate_offset_limit!(offset, limit)
|
20
38
|
conn = @client.authorized_connection(url: @client.object_api_url)
|
@@ -31,6 +49,22 @@ module Springcm
|
|
31
49
|
end
|
32
50
|
end
|
33
51
|
|
52
|
+
def versions(offset: 0, limit: 20)
|
53
|
+
Helpers.validate_offset_limit!(offset, limit)
|
54
|
+
conn = @client.authorized_connection(url: @client.object_api_url)
|
55
|
+
res = conn.get do |req|
|
56
|
+
req.url "#{resource_uri}/versions"
|
57
|
+
req.params["offset"] = offset
|
58
|
+
req.params["limit"] = limit
|
59
|
+
end
|
60
|
+
if res.success?
|
61
|
+
data = JSON.parse(res.body)
|
62
|
+
ResourceList.new(data, self, Document, @client, method_override: :versions)
|
63
|
+
else
|
64
|
+
nil
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
34
68
|
def delete!
|
35
69
|
unsafe_delete
|
36
70
|
end
|
@@ -39,7 +73,7 @@ module Springcm
|
|
39
73
|
private :unsafe_delete
|
40
74
|
|
41
75
|
def delete
|
42
|
-
reload
|
76
|
+
reload!
|
43
77
|
if path.start_with?("/#{@client.account.name}/Trash")
|
44
78
|
raise Springcm::DeleteRefusedError.new(path)
|
45
79
|
end
|
data/lib/springcm-sdk/folder.rb
CHANGED
@@ -1,9 +1,12 @@
|
|
1
1
|
require "springcm-sdk/resource"
|
2
|
+
require "springcm-sdk/document"
|
2
3
|
require "springcm-sdk/resource_list"
|
4
|
+
require "springcm-sdk/change_security_task"
|
3
5
|
require "springcm-sdk/mixins/access_level"
|
4
6
|
require "springcm-sdk/mixins/parent_folder"
|
5
7
|
require "springcm-sdk/mixins/documents"
|
6
8
|
require "springcm-sdk/helpers"
|
9
|
+
require "uri"
|
7
10
|
|
8
11
|
module Springcm
|
9
12
|
class Folder < Resource
|
@@ -13,7 +16,7 @@ module Springcm
|
|
13
16
|
|
14
17
|
def self.resource_params
|
15
18
|
{
|
16
|
-
"expand" => "attributegroups"
|
19
|
+
"expand" => "attributegroups,path"
|
17
20
|
}
|
18
21
|
end
|
19
22
|
|
@@ -71,5 +74,63 @@ module Springcm
|
|
71
74
|
nil
|
72
75
|
end
|
73
76
|
end
|
77
|
+
|
78
|
+
def upload(name:, file:, type: :binary)
|
79
|
+
file_types = {
|
80
|
+
binary: "application/octet-stream",
|
81
|
+
pdf: "application/pdf",
|
82
|
+
csv: "text/csv",
|
83
|
+
txt: "text/plain"
|
84
|
+
}
|
85
|
+
if !type.nil? && !file_types.keys.include?(type)
|
86
|
+
raise ArgumentError.new("File type must be one of: nil, #{file_types.map(&:inspect).join(", ")}")
|
87
|
+
end
|
88
|
+
conn = @client.authorized_connection(url: @client.upload_api_url)
|
89
|
+
res = conn.post do |req|
|
90
|
+
req.headers["Content-Type"] = file_types[type]
|
91
|
+
req.headers["Content-Length"] = file.size.to_s
|
92
|
+
req.url "folders/#{uid}/documents?name=#{URI.escape(name)}"
|
93
|
+
req.body = file
|
94
|
+
end
|
95
|
+
if res.success?
|
96
|
+
data = JSON.parse(res.body)
|
97
|
+
Document.new(data, @client)
|
98
|
+
else
|
99
|
+
nil
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
def update_security(group:, access:)
|
104
|
+
Helpers.validate_access!(access)
|
105
|
+
if !group.is_a?(Springcm::Group)
|
106
|
+
raise ArgumentError.new("Invalid group; must be a Springcm::Group")
|
107
|
+
end
|
108
|
+
if group.group_type != "Security"
|
109
|
+
raise ArgumentError.new("Invalid group type; must be a security group")
|
110
|
+
end
|
111
|
+
conn = @client.authorized_connection(url: @client.object_api_url)
|
112
|
+
res = conn.post do |req|
|
113
|
+
req.headers["Content-Type"] = "application/json"
|
114
|
+
req.url "changesecuritytasks"
|
115
|
+
req.body = {
|
116
|
+
"Status" => "",
|
117
|
+
"Security" => {
|
118
|
+
"Groups" => [
|
119
|
+
{
|
120
|
+
"Item" => group.raw,
|
121
|
+
"AccessType" => access.to_s.split('_').map(&:capitalize).join
|
122
|
+
}
|
123
|
+
]
|
124
|
+
},
|
125
|
+
"Folder" => raw
|
126
|
+
}.to_json
|
127
|
+
end
|
128
|
+
if res.success?
|
129
|
+
data = JSON.parse(res.body)
|
130
|
+
ChangeSecurityTask.new(data, @client)
|
131
|
+
else
|
132
|
+
nil
|
133
|
+
end
|
134
|
+
end
|
74
135
|
end
|
75
136
|
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require "springcm-sdk/resource"
|
2
|
+
require "springcm-sdk/user"
|
3
|
+
|
4
|
+
module Springcm
|
5
|
+
class Group < Resource
|
6
|
+
# @return [ResourceList] Users that are a member of the specified Group.
|
7
|
+
def users(offset: 0, limit: 20)
|
8
|
+
Helpers.validate_offset_limit!(offset, limit)
|
9
|
+
conn = @client.authorized_connection(url: @client.object_api_url)
|
10
|
+
res = conn.get do |req|
|
11
|
+
req.url "#{resource_uri}/groupmembers"
|
12
|
+
req.params["offset"] = offset
|
13
|
+
req.params["limit"] = limit
|
14
|
+
end
|
15
|
+
if res.success?
|
16
|
+
data = JSON.parse(res.body)
|
17
|
+
ResourceList.new(data, self, User, @client)
|
18
|
+
else
|
19
|
+
nil
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
data/lib/springcm-sdk/helpers.rb
CHANGED
@@ -13,6 +13,7 @@ module Springcm
|
|
13
13
|
|
14
14
|
def self.serialize_field(field_config, value)
|
15
15
|
type = field_config.type
|
16
|
+
name = field_config.name
|
16
17
|
repeating = field_config.repeating_attribute?
|
17
18
|
serialized = {
|
18
19
|
"AttributeType" => type,
|
@@ -46,5 +47,20 @@ module Springcm
|
|
46
47
|
value
|
47
48
|
end
|
48
49
|
end
|
50
|
+
|
51
|
+
def self.validate_access!(access)
|
52
|
+
access_types = [
|
53
|
+
:inherit_from_parent_folder,
|
54
|
+
:no_access,
|
55
|
+
:view,
|
56
|
+
:view_create,
|
57
|
+
:view_edit,
|
58
|
+
:view_edit_delete,
|
59
|
+
:view_edit_delete_set_access
|
60
|
+
]
|
61
|
+
if !access_types.include?(access)
|
62
|
+
raise ArgumentError.new("Access must be one of: #{access_types.map(&:inspect).join(", ")}")
|
63
|
+
end
|
64
|
+
end
|
49
65
|
end
|
50
66
|
end
|
@@ -10,6 +10,7 @@ module Springcm
|
|
10
10
|
|
11
11
|
def call(env)
|
12
12
|
@app.call(env).on_complete do |response_env|
|
13
|
+
return response_env if response_env[:response].env.response_headers["Content-Type"] != "application/json"
|
13
14
|
body = JSON.parse(response_env[:body])
|
14
15
|
if body.fetch("Error", {}).fetch("ErrorCode", nil) == 103
|
15
16
|
raise Springcm::RateLimitExceededError.new
|
@@ -8,7 +8,26 @@ module Springcm
|
|
8
8
|
@data["AttributeGroups"] = value
|
9
9
|
end
|
10
10
|
|
11
|
-
|
11
|
+
# TODO: Clean this whole mess up. This pattern sucks. Better:
|
12
|
+
# doc = client.document(...)
|
13
|
+
# group = doc.attribute_group("My Data")
|
14
|
+
# attr = group.attribute("My Field")
|
15
|
+
# attr.type
|
16
|
+
# attr.repeating?
|
17
|
+
# attr.value
|
18
|
+
# attr.value = 2
|
19
|
+
# attr.value = [1, 2, 3]
|
20
|
+
# attr.value[0] = 3
|
21
|
+
# attr.insert(at: 0, value: 5)
|
22
|
+
# doc.patch
|
23
|
+
|
24
|
+
def set_attribute(group:, field:, index: nil, value:, mode: :insert)
|
25
|
+
if ![:insert, :replace].include?(mode)
|
26
|
+
raise ArgumentError.new("Set attribute mode must be one of: :insert, :replace")
|
27
|
+
end
|
28
|
+
if mode == :replace && (index.nil? || index < 0)
|
29
|
+
raise ArgumentError.new("When set attribute mode is :replace, index must be a non-negative integer")
|
30
|
+
end
|
12
31
|
group_config = @client.account.all_attribute_groups.select { |g|
|
13
32
|
g.name == group
|
14
33
|
}.first
|
@@ -24,10 +43,28 @@ module Springcm
|
|
24
43
|
if !field_set_config.nil? && field_set_config["RepeatingAttribute"]
|
25
44
|
set_name = field_set_config["Name"]
|
26
45
|
set_data = group_data.fetch(set_name, {})
|
27
|
-
|
46
|
+
field_data = {
|
47
|
+
"#{field}" => Springcm::Helpers.serialize_field(field_config, value)
|
48
|
+
}
|
49
|
+
if mode == :insert
|
50
|
+
set_data["Items"].insert(index || -1, field_data)
|
51
|
+
elsif
|
52
|
+
set_data["Items"][index] = field_data
|
53
|
+
end
|
54
|
+
set_data["Items"].reject!(&:nil?)
|
28
55
|
group_data[set_name] = set_data
|
29
56
|
else
|
30
|
-
|
57
|
+
serialized = Springcm::Helpers.serialize_field(field_config, value)
|
58
|
+
if field_config.repeating_attribute?
|
59
|
+
if mode == :insert
|
60
|
+
group_data[field]["Value"].insert(index || -1, serialized["Value"])
|
61
|
+
else
|
62
|
+
group_data[field]["Value"][index] = serialized["Value"]
|
63
|
+
end
|
64
|
+
group_data[field]["Value"].reject!(&:nil?)
|
65
|
+
else
|
66
|
+
group_data[field] = serialized
|
67
|
+
end
|
31
68
|
end
|
32
69
|
groups[group] = group_data
|
33
70
|
attribute_groups = groups
|
@@ -13,6 +13,13 @@ module Springcm
|
|
13
13
|
get
|
14
14
|
end
|
15
15
|
|
16
|
+
# Resend a request to the API for this resource and modify the data for
|
17
|
+
# the current object in-place.
|
18
|
+
def reload!
|
19
|
+
@data = reload.raw
|
20
|
+
self
|
21
|
+
end
|
22
|
+
|
16
23
|
# Send a GET request for this resource.
|
17
24
|
def get
|
18
25
|
conn = @client.authorized_connection(url: @client.object_api_url)
|
@@ -4,9 +4,10 @@ module Springcm
|
|
4
4
|
# that are retrieved in this manner are attached to a parent object, e.g.
|
5
5
|
# the account for attribute groups, or a folder for documents.
|
6
6
|
class ResourceList < Object
|
7
|
-
def initialize(data, parent_object, kind, client)
|
7
|
+
def initialize(data, parent_object, kind, client, method_override: nil)
|
8
8
|
@parent_object = parent_object
|
9
9
|
@kind = kind
|
10
|
+
@method_override = method_override
|
10
11
|
super(data, client)
|
11
12
|
end
|
12
13
|
|
@@ -45,9 +46,13 @@ module Springcm
|
|
45
46
|
@parent_object.send(method, offset: offset, limit: limit)
|
46
47
|
end
|
47
48
|
|
49
|
+
# TODO: Better pattern for generating related links
|
50
|
+
# Possibly a Springcm::DocumentVersion object?
|
48
51
|
def method_for_kind!(kind)
|
49
52
|
method = nil
|
50
|
-
if
|
53
|
+
if !@method_override.nil?
|
54
|
+
method = @method_override
|
55
|
+
elsif kind == Springcm::Folder
|
51
56
|
method = :folders
|
52
57
|
elsif kind == Springcm::Document
|
53
58
|
method = :documents
|
@@ -55,8 +60,12 @@ module Springcm
|
|
55
60
|
method = :attribute_groups
|
56
61
|
elsif kind == Springcm::HistoryItem
|
57
62
|
method = :history
|
63
|
+
elsif kind == Springcm::Group
|
64
|
+
method = :groups
|
65
|
+
elsif kind == Springcm::User
|
66
|
+
method = :users
|
58
67
|
else
|
59
|
-
raise ArgumentError.new("Resource kind must be one of: Springcm::Document, Springcm::Folder, Springcm::AttributeGroup, Springcm::HistoryItem.")
|
68
|
+
raise ArgumentError.new("Resource kind must be one of: Springcm::Document, Springcm::Folder, Springcm::AttributeGroup, Springcm::HistoryItem, Springcm::User, Springcm::Group.")
|
60
69
|
end
|
61
70
|
return method
|
62
71
|
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require "springcm-sdk/resource"
|
2
|
+
require "springcm-sdk/group"
|
3
|
+
|
4
|
+
module Springcm
|
5
|
+
class User < Resource
|
6
|
+
# @return [ResourceList] Groups that the specified User is a member of.
|
7
|
+
def groups(offset: 0, limit: 20)
|
8
|
+
Helpers.validate_offset_limit!(offset, limit)
|
9
|
+
conn = @client.authorized_connection(url: @client.object_api_url)
|
10
|
+
res = conn.get do |req|
|
11
|
+
req.url "#{resource_uri}/groups"
|
12
|
+
req.params["offset"] = offset
|
13
|
+
req.params["limit"] = limit
|
14
|
+
end
|
15
|
+
if res.success?
|
16
|
+
data = JSON.parse(res.body)
|
17
|
+
ResourceList.new(data, self, Group, @client)
|
18
|
+
else
|
19
|
+
nil
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
data/lib/springcm-sdk/version.rb
CHANGED
data/lib/springcm-sdk.rb
CHANGED
data/springcm-sdk.gemspec
CHANGED
@@ -34,10 +34,10 @@ Gem::Specification.new do |spec|
|
|
34
34
|
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
35
35
|
end
|
36
36
|
spec.bindir = "exe"
|
37
|
-
spec.executables = [
|
37
|
+
spec.executables = []
|
38
38
|
spec.require_paths = ["lib"]
|
39
39
|
|
40
|
-
spec.add_dependency "faraday", "~> 0
|
40
|
+
spec.add_dependency "faraday", "~> 1.0"
|
41
41
|
|
42
42
|
spec.add_development_dependency "bundler", "~> 2.0"
|
43
43
|
spec.add_development_dependency "rake", "~> 13.0"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: springcm-sdk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Paul Holden
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-01-
|
11
|
+
date: 2020-01-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0
|
19
|
+
version: '1.0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0
|
26
|
+
version: '1.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -140,8 +140,7 @@ description: A library for working with the SpringCM REST API and associated obj
|
|
140
140
|
in Ruby applications.
|
141
141
|
email:
|
142
142
|
- pholden@stria.com
|
143
|
-
executables:
|
144
|
-
- springcm
|
143
|
+
executables: []
|
145
144
|
extensions: []
|
146
145
|
extra_rdoc_files: []
|
147
146
|
files:
|
@@ -157,14 +156,15 @@ files:
|
|
157
156
|
- bin/.gitignore
|
158
157
|
- bin/console
|
159
158
|
- bin/setup
|
160
|
-
- exe/springcm
|
161
159
|
- lib/springcm-sdk.rb
|
162
160
|
- lib/springcm-sdk/account.rb
|
163
161
|
- lib/springcm-sdk/attribute.rb
|
164
162
|
- lib/springcm-sdk/attribute_group.rb
|
163
|
+
- lib/springcm-sdk/change_security_task.rb
|
165
164
|
- lib/springcm-sdk/client.rb
|
166
165
|
- lib/springcm-sdk/document.rb
|
167
166
|
- lib/springcm-sdk/folder.rb
|
167
|
+
- lib/springcm-sdk/group.rb
|
168
168
|
- lib/springcm-sdk/helpers.rb
|
169
169
|
- lib/springcm-sdk/history_item.rb
|
170
170
|
- lib/springcm-sdk/middleware.rb
|
@@ -178,6 +178,7 @@ files:
|
|
178
178
|
- lib/springcm-sdk/object.rb
|
179
179
|
- lib/springcm-sdk/resource.rb
|
180
180
|
- lib/springcm-sdk/resource_list.rb
|
181
|
+
- lib/springcm-sdk/user.rb
|
181
182
|
- lib/springcm-sdk/version.rb
|
182
183
|
- springcm-sdk.gemspec
|
183
184
|
homepage: https://github.com/paulholden2/springcm-sdk
|
@@ -187,7 +188,7 @@ metadata:
|
|
187
188
|
allowed_push_host: https://rubygems.org
|
188
189
|
homepage_uri: https://github.com/paulholden2/springcm-sdk
|
189
190
|
source_code_uri: https://github.com/paulholden2/springcm-sdk
|
190
|
-
documentation_uri: https://rubydoc.info/github/paulholden2/springcm-sdk/0.
|
191
|
+
documentation_uri: https://rubydoc.info/github/paulholden2/springcm-sdk/0.6.0
|
191
192
|
changelog_uri: https://github.com/paulholden2/springcm-sdk/blob/master/CHANGELOG.md
|
192
193
|
post_install_message:
|
193
194
|
rdoc_options: []
|
data/exe/springcm
DELETED