outliner 1.0.0 → 1.0.2
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 +6 -0
- data/Dockerfile +11 -5
- data/Gemfile.lock +24 -21
- data/README.md +7 -0
- data/exe/outliner-export +24 -7
- data/exe/outliner-import +3 -3
- data/lib/outliner/client.rb +12 -11
- data/lib/outliner/version.rb +1 -1
- data/outliner.gemspec +6 -5
- metadata +34 -20
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f9c33ead5965c7d3343b0cb626eb725655e4e618938451363c314496648a41e6
|
4
|
+
data.tar.gz: 910e51e24b3e976454f302ca3f348bcfe2405758f34fcbc16c6e5aba08b13f6e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a223dfcc0f99b2071559b842ceba71db4992c99af1601a9c7e7e8b40758614e69eed123f045ae48ab69e0c8e73542daaf63e05bade507986bc05d9631c4d047a
|
7
|
+
data.tar.gz: 459b25c411aec74177ee55eca5290f1a89a3614747f6ff48b89ebab83fa6a8f72b6b392b76e5eadf74170656c7f78e621bcaa27ea4d4b1eb1eb1353dc2ed0b59
|
data/CHANGELOG.md
CHANGED
data/Dockerfile
CHANGED
@@ -1,12 +1,18 @@
|
|
1
|
-
FROM ruby:
|
1
|
+
FROM ruby:3.3-alpine3.19
|
2
|
+
|
3
|
+
RUN apk add --no-cache git openssh-client rsync && \
|
4
|
+
echo -e "StrictHostKeyChecking no" >> /etc/ssh/ssh_config && \
|
5
|
+
mkdir /root/.ssh
|
2
6
|
|
3
7
|
WORKDIR /outliner
|
4
8
|
COPY . /outliner/
|
5
9
|
|
6
|
-
RUN gem
|
10
|
+
RUN echo "gem: --no-ri --no-rdoc" > ~/.gemrc && \
|
11
|
+
apk add --no-cache alpine-sdk && \
|
12
|
+
gem update --system && \
|
13
|
+
gem install bundler && \
|
7
14
|
bundle install && \
|
8
|
-
apk
|
9
|
-
|
10
|
-
mkdir /root/.ssh
|
15
|
+
apk del --no-cache alpine-sdk && \
|
16
|
+
rm ~/.gemrc
|
11
17
|
|
12
18
|
ENTRYPOINT ["/outliner/entrypoint.sh"]
|
data/Gemfile.lock
CHANGED
@@ -1,42 +1,45 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
outliner (0.2
|
4
|
+
outliner (1.0.2)
|
5
5
|
httparty (~> 0.17)
|
6
|
+
rake (>= 12.3)
|
6
7
|
|
7
8
|
GEM
|
8
9
|
remote: https://rubygems.org/
|
9
10
|
specs:
|
10
|
-
addressable (2.
|
11
|
-
public_suffix (>= 2.0.2, <
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
11
|
+
addressable (2.8.6)
|
12
|
+
public_suffix (>= 2.0.2, < 6.0)
|
13
|
+
bigdecimal (3.1.6)
|
14
|
+
crack (1.0.0)
|
15
|
+
bigdecimal
|
16
|
+
rexml
|
17
|
+
hashdiff (1.1.0)
|
18
|
+
httparty (0.21.0)
|
19
|
+
mini_mime (>= 1.0.0)
|
17
20
|
multi_xml (>= 0.5.2)
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
minitest (5.8.5)
|
21
|
+
json (2.7.1)
|
22
|
+
mini_mime (1.1.5)
|
23
|
+
minitest (5.22.2)
|
22
24
|
multi_xml (0.6.0)
|
23
|
-
public_suffix (
|
24
|
-
rake (
|
25
|
-
|
26
|
-
webmock (3.
|
27
|
-
addressable (>= 2.
|
25
|
+
public_suffix (5.0.4)
|
26
|
+
rake (13.1.0)
|
27
|
+
rexml (3.2.6)
|
28
|
+
webmock (3.23.0)
|
29
|
+
addressable (>= 2.8.0)
|
28
30
|
crack (>= 0.3.2)
|
29
31
|
hashdiff (>= 0.4.0, < 2.0.0)
|
30
32
|
|
31
33
|
PLATFORMS
|
32
34
|
ruby
|
35
|
+
x86_64-linux
|
33
36
|
|
34
37
|
DEPENDENCIES
|
35
38
|
bundler (~> 2.0)
|
36
|
-
|
39
|
+
json (~> 2.7)
|
40
|
+
minitest (~> 5.8)
|
37
41
|
outliner!
|
38
|
-
|
39
|
-
webmock (~> 3.6.0)
|
42
|
+
webmock (~> 3.6)
|
40
43
|
|
41
44
|
BUNDLED WITH
|
42
|
-
2.
|
45
|
+
2.5.4
|
data/README.md
CHANGED
@@ -28,6 +28,13 @@ require 'outliner'
|
|
28
28
|
client = Outliner.new('https://knowledge.example.com')
|
29
29
|
pp client.auth_info
|
30
30
|
pp client.collections_list(offset: 0, limit: 10)
|
31
|
+
# This works around a 302 redirect bug in httparty
|
32
|
+
begin
|
33
|
+
r = @client.fileOperations__redirect({id: FILE_OPERATION_ID}, format: nil, no_follow: true)
|
34
|
+
rescue HTTParty::RedirectionTooDeep => e
|
35
|
+
# Download this using response = HTTParty.get e.response.header['location'] if needed
|
36
|
+
pp e.response.header['location']
|
37
|
+
end
|
31
38
|
```
|
32
39
|
|
33
40
|
### Import
|
data/exe/outliner-export
CHANGED
@@ -20,13 +20,30 @@ local_directory = ARGV[0]
|
|
20
20
|
CLIENT = Outliner::Client.new ENV['OUTLINE_BASE_URI']
|
21
21
|
|
22
22
|
# Download the complete zip
|
23
|
-
response = CLIENT.
|
23
|
+
response = CLIENT.collections__export_all(format: "outline-markdown")
|
24
|
+
|
25
|
+
raise 'Failed to trigger export_all action' if not response['success']
|
26
|
+
|
27
|
+
file_operation_id = response['data']['fileOperation']['id']
|
28
|
+
fop_info_response = nil
|
29
|
+
i = 0
|
30
|
+
loop do
|
31
|
+
i += 1
|
32
|
+
raise 'Timed out waiting for the file export operation to complete' if i > 20
|
33
|
+
sleep(2*i)
|
34
|
+
fop_info_response = CLIENT.fileOperations__info(id: file_operation_id)
|
35
|
+
raise 'Failed to query export file operation info' if not fop_info_response['ok']
|
36
|
+
break if fop_info_response['data']['state'] == 'complete'
|
37
|
+
end
|
24
38
|
|
25
|
-
|
26
|
-
|
27
|
-
|
39
|
+
begin
|
40
|
+
fop_redirect_response = CLIENT.fileOperations__redirect({id: file_operation_id}, {no_follow: true})
|
41
|
+
rescue HTTParty::RedirectionTooDeep => e
|
42
|
+
response = HTTParty.get e.response.header['location']
|
43
|
+
file = Tempfile.new('download.zip')
|
44
|
+
File.open(file.path, 'w') { |f| f.write(response.body) }
|
45
|
+
`unzip -o "#{file.path}" -d "#{local_directory}"`
|
46
|
+
file.unlink
|
47
|
+
end
|
28
48
|
|
29
|
-
`unzip -o "#{file.path}" -d "#{local_directory}"`
|
30
49
|
|
31
|
-
# Delete tempfile
|
32
|
-
file.unlink
|
data/exe/outliner-import
CHANGED
@@ -28,7 +28,7 @@ def create_documents_recursively(directory, collection_id, parent_document_id =
|
|
28
28
|
}
|
29
29
|
|
30
30
|
params[:parentDocumentId] = parent_document_id if parent_document_id
|
31
|
-
CLIENT.
|
31
|
+
CLIENT.documents__create(params)
|
32
32
|
puts "[-] #{file}"
|
33
33
|
end
|
34
34
|
|
@@ -42,7 +42,7 @@ def create_documents_recursively(directory, collection_id, parent_document_id =
|
|
42
42
|
publish: true,
|
43
43
|
parentDocumentId: parent_document_id
|
44
44
|
}
|
45
|
-
response = CLIENT.
|
45
|
+
response = CLIENT.documents__create(params)
|
46
46
|
create_documents_recursively(dir, collection_id, response['data']['id'])
|
47
47
|
end
|
48
48
|
Dir.chdir cwd
|
@@ -65,7 +65,7 @@ begin
|
|
65
65
|
rescue StandardError? => e
|
66
66
|
# If we fail, print an error, and delete the collection
|
67
67
|
puts "[E] Import failed with error: #{e.message}"
|
68
|
-
CLIENT.
|
68
|
+
CLIENT.collections__delete(id: root_collection_id)
|
69
69
|
puts '[E] Deleted collection, please report the issue or retry'
|
70
70
|
exit 1
|
71
71
|
end
|
data/lib/outliner/client.rb
CHANGED
@@ -11,27 +11,28 @@ module Outliner
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def find_or_create_collection(name)
|
14
|
-
collections = self.
|
14
|
+
collections = self.collections__list(limit: 100)['data']
|
15
15
|
collections.filter!{|c|c['name'] == name}
|
16
16
|
if collections.size >= 1
|
17
17
|
collections[0]['id']
|
18
18
|
else
|
19
|
-
self.
|
19
|
+
self.collections__create(name: name, description: 'Imported Collection')['data']['id']
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
23
|
-
def method_missing(method_name, params = {})
|
24
|
-
method_name =
|
25
|
-
|
23
|
+
def method_missing(method_name, params = {}, options = {})
|
24
|
+
method_name = "/#{method_name.to_s.sub('__', '.')}"
|
25
|
+
|
26
26
|
options = {
|
27
|
-
body:
|
27
|
+
body: params.to_json,
|
28
28
|
headers: {
|
29
|
-
'Accept'=>'application/json',
|
30
|
-
'Content-Type'
|
31
|
-
'User-Agent'
|
29
|
+
'Accept' => 'application/json',
|
30
|
+
'Content-Type' => 'application/json',
|
31
|
+
'User-Agent' => "Outliner/#{Outliner::VERSION}",
|
32
|
+
'Authorization' => "Bearer #{@token}"
|
32
33
|
},
|
33
|
-
format: :json
|
34
|
-
}
|
34
|
+
format: :json,
|
35
|
+
}.merge!(options)
|
35
36
|
|
36
37
|
self.class.post(method_name, options)
|
37
38
|
end
|
data/lib/outliner/version.rb
CHANGED
data/outliner.gemspec
CHANGED
@@ -23,10 +23,11 @@ Gem::Specification.new do |spec|
|
|
23
23
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
24
24
|
spec.require_paths = ["lib"]
|
25
25
|
|
26
|
-
spec.add_dependency "httparty", "~> 0.
|
26
|
+
spec.add_dependency "httparty", "~> 0.21"
|
27
|
+
spec.add_dependency "json", "~> 2.7"
|
27
28
|
|
28
|
-
spec.add_development_dependency "bundler", "~> 2.
|
29
|
-
spec.
|
30
|
-
spec.add_development_dependency "webmock", "~> 3.
|
31
|
-
spec.add_development_dependency "minitest", "~> 5.
|
29
|
+
spec.add_development_dependency "bundler", "~> 2.1"
|
30
|
+
spec.add_dependency "rake", ">= 13.1"
|
31
|
+
spec.add_development_dependency "webmock", "~> 3.23"
|
32
|
+
spec.add_development_dependency "minitest", "~> 5.22"
|
32
33
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: outliner
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nemo
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-03-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httparty
|
@@ -16,71 +16,85 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '0.
|
19
|
+
version: '0.21'
|
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: '0.21'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: json
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '2.
|
34
|
-
type: :
|
33
|
+
version: '2.7'
|
34
|
+
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '2.
|
40
|
+
version: '2.7'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: bundler
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '2.1'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '2.1'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rake
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '13.1'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '13.1'
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: webmock
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
58
72
|
requirements:
|
59
73
|
- - "~>"
|
60
74
|
- !ruby/object:Gem::Version
|
61
|
-
version: 3.
|
75
|
+
version: '3.23'
|
62
76
|
type: :development
|
63
77
|
prerelease: false
|
64
78
|
version_requirements: !ruby/object:Gem::Requirement
|
65
79
|
requirements:
|
66
80
|
- - "~>"
|
67
81
|
- !ruby/object:Gem::Version
|
68
|
-
version: 3.
|
82
|
+
version: '3.23'
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
84
|
name: minitest
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
72
86
|
requirements:
|
73
87
|
- - "~>"
|
74
88
|
- !ruby/object:Gem::Version
|
75
|
-
version: 5.
|
89
|
+
version: '5.22'
|
76
90
|
type: :development
|
77
91
|
prerelease: false
|
78
92
|
version_requirements: !ruby/object:Gem::Requirement
|
79
93
|
requirements:
|
80
94
|
- - "~>"
|
81
95
|
- !ruby/object:Gem::Version
|
82
|
-
version: 5.
|
83
|
-
description:
|
96
|
+
version: '5.22'
|
97
|
+
description:
|
84
98
|
email:
|
85
99
|
- outliner@captnemo.in
|
86
100
|
executables:
|
@@ -114,7 +128,7 @@ metadata:
|
|
114
128
|
homepage_uri: https://github.com/captn3m0/outliner
|
115
129
|
source_code_uri: https://github.com/captn3m0/outliner
|
116
130
|
changelog_uri: https://github.com/captn3m0/outliner/blob/master/CHANGELOG.md
|
117
|
-
post_install_message:
|
131
|
+
post_install_message:
|
118
132
|
rdoc_options: []
|
119
133
|
require_paths:
|
120
134
|
- lib
|
@@ -129,8 +143,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
129
143
|
- !ruby/object:Gem::Version
|
130
144
|
version: '0'
|
131
145
|
requirements: []
|
132
|
-
rubygems_version: 3.
|
133
|
-
signing_key:
|
146
|
+
rubygems_version: 3.3.25
|
147
|
+
signing_key:
|
134
148
|
specification_version: 4
|
135
149
|
summary: A simple HTTParty based client for outline knowledge base.
|
136
150
|
test_files: []
|