klaro-client 0.7.0 → 0.9.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/lib/klaro/client/request_handler.rb +29 -5
- data/lib/klaro/client/version.rb +1 -1
- data/lib/klaro/client.rb +14 -0
- metadata +27 -27
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 5e0d58edb131f5c4a730b22fd2be431f152e5a1073e4ab7e5f2bee5e58f2cec1
|
|
4
|
+
data.tar.gz: 9a85e1f21c2bd441cfb09b21d9cb42113a8dd5f12c84546499206ba4a51d66f5
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 7f788fb52455d7166a30dfa75539a028c5f5f8f4710bfa4b39fc10ae4286891d21fd41e62118fbe5d385ea122ab8bb1c4b0ffcf4f2161c88a417e66ee095e7b9
|
|
7
|
+
data.tar.gz: 281c57cd4b29756c5e041059f609bffe0a9a12d94733952a663aba84b8ea19d65a881be0751dc4ab66078abc7f08574c933637d512c8efb68d1c3baad93ffd05
|
|
@@ -10,6 +10,7 @@ module Klaro
|
|
|
10
10
|
@token = nil
|
|
11
11
|
@subdomain = nil
|
|
12
12
|
@workspace = nil
|
|
13
|
+
@caching_options = nil
|
|
13
14
|
end
|
|
14
15
|
|
|
15
16
|
def authenticated?
|
|
@@ -26,6 +27,11 @@ module Klaro
|
|
|
26
27
|
self
|
|
27
28
|
end
|
|
28
29
|
|
|
30
|
+
def with_cache(caching_options)
|
|
31
|
+
@caching_options = caching_options
|
|
32
|
+
self
|
|
33
|
+
end
|
|
34
|
+
|
|
29
35
|
def authenticate(user, password, workspace = nil)
|
|
30
36
|
@workspace = workspace
|
|
31
37
|
@token = get_token(
|
|
@@ -40,12 +46,29 @@ module Klaro
|
|
|
40
46
|
def get(endpoint, raw = false)
|
|
41
47
|
url = "#{base_url}#{endpoint}"
|
|
42
48
|
info("GET `#{url}`")
|
|
43
|
-
response =
|
|
44
|
-
|
|
45
|
-
|
|
49
|
+
response = get_in_cache(url) do
|
|
50
|
+
res = http.get(url, ssl_context: http_ctx)
|
|
51
|
+
raise Error::NoSuchBoardFound unless res.status == 200
|
|
52
|
+
res.to_s
|
|
53
|
+
end
|
|
46
54
|
raw ? response.to_s : JSON.parse(response.to_s)
|
|
47
55
|
end
|
|
48
56
|
|
|
57
|
+
def get_in_cache(url, &bl)
|
|
58
|
+
return bl.call unless @caching_options
|
|
59
|
+
|
|
60
|
+
sha = Digest::SHA1.hexdigest(url)
|
|
61
|
+
file = @caching_options[:path]/sha
|
|
62
|
+
if file.file?
|
|
63
|
+
file.read
|
|
64
|
+
else
|
|
65
|
+
str = bl.call
|
|
66
|
+
file.parent.mkdir_p
|
|
67
|
+
file.write(str)
|
|
68
|
+
str
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
49
72
|
def post(endpoint, body)
|
|
50
73
|
url = "#{base_url}#{endpoint}"
|
|
51
74
|
info("POST `#{url}`")
|
|
@@ -53,6 +76,7 @@ module Klaro
|
|
|
53
76
|
end
|
|
54
77
|
|
|
55
78
|
private
|
|
79
|
+
|
|
56
80
|
def get_token(response)
|
|
57
81
|
raise Error::AuthenticationFailed if response.status >= 300 || response.status <200
|
|
58
82
|
|
|
@@ -74,8 +98,8 @@ module Klaro
|
|
|
74
98
|
OpenSSL::SSL::SSLContext.new
|
|
75
99
|
end
|
|
76
100
|
|
|
77
|
-
def http
|
|
78
|
-
Http.headers(http_headers)
|
|
101
|
+
def http(headers = {})
|
|
102
|
+
Http.headers(http_headers.merge(headers))
|
|
79
103
|
end
|
|
80
104
|
|
|
81
105
|
def http_headers
|
data/lib/klaro/client/version.rb
CHANGED
data/lib/klaro/client.rb
CHANGED
|
@@ -2,6 +2,8 @@ require 'http'
|
|
|
2
2
|
require 'path'
|
|
3
3
|
require 'commonmarker'
|
|
4
4
|
require 'i18n'
|
|
5
|
+
require 'digest'
|
|
6
|
+
require 'ostruct'
|
|
5
7
|
|
|
6
8
|
module Klaro
|
|
7
9
|
class Client
|
|
@@ -11,6 +13,11 @@ module Klaro
|
|
|
11
13
|
@request = RequestHandler.new(base_url)
|
|
12
14
|
end
|
|
13
15
|
|
|
16
|
+
def with_caching(options)
|
|
17
|
+
@request = request.with_cache(options)
|
|
18
|
+
self
|
|
19
|
+
end
|
|
20
|
+
|
|
14
21
|
def absolute_url(url)
|
|
15
22
|
request.base_url + url
|
|
16
23
|
end
|
|
@@ -43,6 +50,13 @@ module Klaro
|
|
|
43
50
|
Stories.dress(request.get("/api/boards/#{location_or_id}/stories/"), self)
|
|
44
51
|
end
|
|
45
52
|
|
|
53
|
+
def board_stories_full(location_or_id)
|
|
54
|
+
hs = { 'Accept': 'application/vnd+klaro.stories.full+json' }
|
|
55
|
+
Stories.dress(
|
|
56
|
+
request.get("/api/boards/#{location_or_id}/stories/", false, hs),
|
|
57
|
+
self)
|
|
58
|
+
end
|
|
59
|
+
|
|
46
60
|
def story(id_or_identifier)
|
|
47
61
|
Story.dress(request.get("/api/stories/#{id_or_identifier}"), self)
|
|
48
62
|
end
|
metadata
CHANGED
|
@@ -1,29 +1,15 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: klaro-client
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.9.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- enspirit
|
|
8
|
-
autorequire:
|
|
8
|
+
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2025-02-09 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
|
-
- !ruby/object:Gem::Dependency
|
|
14
|
-
name: dotenv
|
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
|
16
|
-
requirements:
|
|
17
|
-
- - "~>"
|
|
18
|
-
- !ruby/object:Gem::Version
|
|
19
|
-
version: '2.7'
|
|
20
|
-
type: :runtime
|
|
21
|
-
prerelease: false
|
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
-
requirements:
|
|
24
|
-
- - "~>"
|
|
25
|
-
- !ruby/object:Gem::Version
|
|
26
|
-
version: '2.7'
|
|
27
13
|
- !ruby/object:Gem::Dependency
|
|
28
14
|
name: http
|
|
29
15
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -50,20 +36,20 @@ dependencies:
|
|
|
50
36
|
requirements:
|
|
51
37
|
- - ">="
|
|
52
38
|
- !ruby/object:Gem::Version
|
|
53
|
-
version: '0
|
|
39
|
+
version: '2.0'
|
|
54
40
|
- - "<"
|
|
55
41
|
- !ruby/object:Gem::Version
|
|
56
|
-
version: '
|
|
42
|
+
version: '3.0'
|
|
57
43
|
type: :runtime
|
|
58
44
|
prerelease: false
|
|
59
45
|
version_requirements: !ruby/object:Gem::Requirement
|
|
60
46
|
requirements:
|
|
61
47
|
- - ">="
|
|
62
48
|
- !ruby/object:Gem::Version
|
|
63
|
-
version: '0
|
|
49
|
+
version: '2.0'
|
|
64
50
|
- - "<"
|
|
65
51
|
- !ruby/object:Gem::Version
|
|
66
|
-
version: '
|
|
52
|
+
version: '3.0'
|
|
67
53
|
- !ruby/object:Gem::Dependency
|
|
68
54
|
name: i18n
|
|
69
55
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -78,6 +64,20 @@ dependencies:
|
|
|
78
64
|
- - ">="
|
|
79
65
|
- !ruby/object:Gem::Version
|
|
80
66
|
version: '1.8'
|
|
67
|
+
- !ruby/object:Gem::Dependency
|
|
68
|
+
name: dotenv
|
|
69
|
+
requirement: !ruby/object:Gem::Requirement
|
|
70
|
+
requirements:
|
|
71
|
+
- - "~>"
|
|
72
|
+
- !ruby/object:Gem::Version
|
|
73
|
+
version: '2.7'
|
|
74
|
+
type: :development
|
|
75
|
+
prerelease: false
|
|
76
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
77
|
+
requirements:
|
|
78
|
+
- - "~>"
|
|
79
|
+
- !ruby/object:Gem::Version
|
|
80
|
+
version: '2.7'
|
|
81
81
|
- !ruby/object:Gem::Dependency
|
|
82
82
|
name: path
|
|
83
83
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -120,8 +120,8 @@ dependencies:
|
|
|
120
120
|
- - "~>"
|
|
121
121
|
- !ruby/object:Gem::Version
|
|
122
122
|
version: '3.7'
|
|
123
|
-
description:
|
|
124
|
-
email:
|
|
123
|
+
description:
|
|
124
|
+
email:
|
|
125
125
|
executables: []
|
|
126
126
|
extensions: []
|
|
127
127
|
extra_rdoc_files: []
|
|
@@ -141,11 +141,11 @@ files:
|
|
|
141
141
|
- lib/klaro/client/resource/story.rb
|
|
142
142
|
- lib/klaro/client/support/md_text.rb
|
|
143
143
|
- lib/klaro/client/version.rb
|
|
144
|
-
homepage:
|
|
144
|
+
homepage:
|
|
145
145
|
licenses:
|
|
146
146
|
- MIT
|
|
147
147
|
metadata: {}
|
|
148
|
-
post_install_message:
|
|
148
|
+
post_install_message:
|
|
149
149
|
rdoc_options: []
|
|
150
150
|
require_paths:
|
|
151
151
|
- lib
|
|
@@ -160,8 +160,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
160
160
|
- !ruby/object:Gem::Version
|
|
161
161
|
version: '0'
|
|
162
162
|
requirements: []
|
|
163
|
-
rubygems_version: 3.
|
|
164
|
-
signing_key:
|
|
163
|
+
rubygems_version: 3.5.22
|
|
164
|
+
signing_key:
|
|
165
165
|
specification_version: 4
|
|
166
166
|
summary: Klaro Client
|
|
167
167
|
test_files: []
|