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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 42126059ba59e044d7d25c44aa0a9d86769071ffcea570c564b7e9ddaa0b92c8
4
- data.tar.gz: 0af95727702d75a8a7830b920efcd36b43def5642461b46aed86419b9ca71e16
3
+ metadata.gz: 5e0d58edb131f5c4a730b22fd2be431f152e5a1073e4ab7e5f2bee5e58f2cec1
4
+ data.tar.gz: 9a85e1f21c2bd441cfb09b21d9cb42113a8dd5f12c84546499206ba4a51d66f5
5
5
  SHA512:
6
- metadata.gz: a99dbe5bcfba816260d8e68a0174ab48f688b00fa28b98356060fb34ab32e96b97694c402477347b81cb01b56d10fa6f7df0efb2da3d470678fc49ca303ae4f5
7
- data.tar.gz: b360ded9145f755cca8249181ffd65eb5c5ee103b061b70ee439ee9703e79262c2f1cf58ae734487ee7e88b47c08c88cf9f914094eb29454bf6721450e528aa2
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 = http.get(url, ssl_context: http_ctx)
44
- raise Error::NoSuchBoardFound if response.status >= 300 || response.status <200
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
@@ -2,7 +2,7 @@ module Klaro
2
2
  class Client
3
3
  module Version
4
4
  MAJOR = 0
5
- MINOR = 7
5
+ MINOR = 9
6
6
  TINY = 0
7
7
  end
8
8
  VERSION = "#{Version::MAJOR}.#{Version::MINOR}.#{Version::TINY}"
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.7.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: 2023-12-08 00:00:00.000000000 Z
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.26'
39
+ version: '2.0'
54
40
  - - "<"
55
41
  - !ruby/object:Gem::Version
56
- version: '1.0'
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.26'
49
+ version: '2.0'
64
50
  - - "<"
65
51
  - !ruby/object:Gem::Version
66
- version: '1.0'
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.3.26
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: []