klaro-client 0.7.0 → 0.9.0

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