outliner 1.0.0 → 1.0.2
Sign up to get free protection for your applications and to get access to all the features.
- 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: []
|