klaro-client 0.7.0 → 0.8.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 +13 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4ea12d80f3c5b01aa96ff999724aad9f4d597b852f694e60beeaea622fd208bd
|
4
|
+
data.tar.gz: '098ce985b929b20fef00b597ccb53739ab03f29070753610411674d8f0f599fd'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 01624445eff8d2712316b2a5ce48ba1ed486ad7a674796534f7136c97289aeae4299bc59f5e75fc7ea2232f351430f403491881e099bb857872e586816ab9fd7
|
7
|
+
data.tar.gz: 6514a94419c89d1783b3a8a2a5b7002833b240728cfdaa09f114eb534db21284d33b6e1b522abe551028cb680803f957c0b32007fefb78f0328b92984c2c4a26
|
@@ -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,7 @@ require 'http'
|
|
2
2
|
require 'path'
|
3
3
|
require 'commonmarker'
|
4
4
|
require 'i18n'
|
5
|
+
require 'digest'
|
5
6
|
|
6
7
|
module Klaro
|
7
8
|
class Client
|
@@ -11,6 +12,11 @@ module Klaro
|
|
11
12
|
@request = RequestHandler.new(base_url)
|
12
13
|
end
|
13
14
|
|
15
|
+
def with_caching(options)
|
16
|
+
@request = request.with_cache(options)
|
17
|
+
self
|
18
|
+
end
|
19
|
+
|
14
20
|
def absolute_url(url)
|
15
21
|
request.base_url + url
|
16
22
|
end
|
@@ -43,6 +49,13 @@ module Klaro
|
|
43
49
|
Stories.dress(request.get("/api/boards/#{location_or_id}/stories/"), self)
|
44
50
|
end
|
45
51
|
|
52
|
+
def board_stories_full(location_or_id)
|
53
|
+
hs = { 'Accept': 'application/vnd+klaro.stories.full+json' }
|
54
|
+
Stories.dress(
|
55
|
+
request.get("/api/boards/#{location_or_id}/stories/", false, hs),
|
56
|
+
self)
|
57
|
+
end
|
58
|
+
|
46
59
|
def story(id_or_identifier)
|
47
60
|
Story.dress(request.get("/api/stories/#{id_or_identifier}"), self)
|
48
61
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: klaro-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- enspirit
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-01-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: dotenv
|