klaro-client 0.3.0 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/klaro/client.rb +25 -10
- data/lib/klaro/client/request_handler.rb +13 -1
- data/lib/klaro/client/resource.rb +34 -0
- data/lib/klaro/client/resource/board.rb +6 -0
- data/lib/klaro/client/resource/dimension.rb +13 -0
- data/lib/klaro/client/resource/dimension_value.rb +6 -0
- data/lib/klaro/client/resource/dimensions.rb +7 -0
- data/lib/klaro/client/resource/stories.rb +7 -0
- data/lib/klaro/client/resource/story.rb +8 -4
- data/lib/klaro/client/support/md_text.rb +30 -0
- data/lib/klaro/client/version.rb +10 -0
- metadata +31 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1a258ae74415243864b134896b5dbd98ec2d73220cac4a8199089614db5f66d8
|
4
|
+
data.tar.gz: a2bc070c56903aeffedc957e82806e9fe41224b736766448211b27b0574aa886
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4f244ffb939719fe8ead74b056cb953885a919bd0fe31d36d45d5ea14b71dd3e922aa9850a49dd8f41a196cf7b72530bc3dcdaa8277de8d711e642b69ea40952
|
7
|
+
data.tar.gz: e833371db1db694bd8b8c5987c332c088356235334f1556583137cca0f745707547586e102631bd77bed15af2786d702add4752dff32e448afdeba34bb0e39f4
|
data/lib/klaro/client.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'http'
|
2
2
|
require 'path'
|
3
|
+
require 'redcarpet'
|
3
4
|
|
4
5
|
module Klaro
|
5
6
|
class Client
|
@@ -9,20 +10,32 @@ module Klaro
|
|
9
10
|
@request = RequestHandler.new(base_url)
|
10
11
|
end
|
11
12
|
|
12
|
-
def
|
13
|
-
request.
|
13
|
+
def with_token(*args, &bl)
|
14
|
+
request.with_token(*args, &bl)
|
14
15
|
end
|
15
16
|
|
16
|
-
def
|
17
|
-
|
18
|
-
stories_list.map do |s|
|
19
|
-
Story.new(request.get("/api/stories/#{s['id']}"))
|
20
|
-
end
|
17
|
+
def login(*args, &bl)
|
18
|
+
request.authenticate(*args, &bl)
|
21
19
|
end
|
22
20
|
|
23
|
-
def
|
24
|
-
|
25
|
-
|
21
|
+
def dimension(code_or_id)
|
22
|
+
Dimension.dress(request.get("/api/dimensions/#{code_or_id}"))
|
23
|
+
end
|
24
|
+
|
25
|
+
def dimensions
|
26
|
+
Dimensions.dress(request.get('/api/dimensions'))
|
27
|
+
end
|
28
|
+
|
29
|
+
def board(location_or_id)
|
30
|
+
Board.dress(request.get("/api/boards/#{location_or_id}"))
|
31
|
+
end
|
32
|
+
|
33
|
+
def board_stories(location_or_id)
|
34
|
+
Stories.dress(request.get("/api/boards/#{location_or_id}/stories/"))
|
35
|
+
end
|
36
|
+
|
37
|
+
def story(id_or_identifier)
|
38
|
+
Story.dress(request.get("/api/stories/#{id_or_identifier}"))
|
26
39
|
end
|
27
40
|
|
28
41
|
def upload_image(image_path)
|
@@ -36,6 +49,8 @@ module Klaro
|
|
36
49
|
end
|
37
50
|
end
|
38
51
|
end
|
52
|
+
require_relative 'client/version'
|
39
53
|
require_relative 'client/errors'
|
54
|
+
require_relative 'client/support/md_text'
|
40
55
|
require_relative 'client/request_handler'
|
41
56
|
require_relative 'client/resource'
|
@@ -1,11 +1,22 @@
|
|
1
1
|
module Klaro
|
2
2
|
class Client
|
3
3
|
class RequestHandler
|
4
|
+
Http = HTTP
|
4
5
|
|
5
6
|
attr_reader :base_url, :token
|
6
7
|
|
7
8
|
def initialize(url)
|
8
9
|
@base_url = url
|
10
|
+
@token = nil
|
11
|
+
end
|
12
|
+
|
13
|
+
def authenticated?
|
14
|
+
not(@token.nil?)
|
15
|
+
end
|
16
|
+
|
17
|
+
def with_token(token_type, access_token)
|
18
|
+
@token = "#{token_type} #{access_token}"
|
19
|
+
self
|
9
20
|
end
|
10
21
|
|
11
22
|
def authenticate(user, password)
|
@@ -56,7 +67,8 @@ module Klaro
|
|
56
67
|
def http
|
57
68
|
Http.headers(
|
58
69
|
{
|
59
|
-
Authorization
|
70
|
+
"Authorization" => @token,
|
71
|
+
"Content-Type" => "application/json"
|
60
72
|
}
|
61
73
|
)
|
62
74
|
end
|
@@ -1,7 +1,41 @@
|
|
1
1
|
module Klaro
|
2
2
|
class Client
|
3
3
|
class Resource < OpenStruct
|
4
|
+
|
5
|
+
class << self
|
6
|
+
alias :dress :new
|
7
|
+
end
|
8
|
+
|
4
9
|
end # class Resource
|
10
|
+
class Collection
|
11
|
+
include Enumerable
|
12
|
+
|
13
|
+
def initialize(items)
|
14
|
+
@items = items.map{|i| self.class.dress_one(i) }
|
15
|
+
end
|
16
|
+
|
17
|
+
def each(*args, &bl)
|
18
|
+
@items.each(*args, &bl)
|
19
|
+
end
|
20
|
+
|
21
|
+
class << self
|
22
|
+
alias :dress :new
|
23
|
+
|
24
|
+
def item(clazz)
|
25
|
+
@item_class = clazz
|
26
|
+
end
|
27
|
+
|
28
|
+
def dress_one(item)
|
29
|
+
@item_class.dress(item)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
5
34
|
end # class Client
|
6
35
|
end # module Klaro
|
7
36
|
require_relative 'resource/story'
|
37
|
+
require_relative 'resource/stories'
|
38
|
+
require_relative 'resource/dimension'
|
39
|
+
require_relative 'resource/dimension_value'
|
40
|
+
require_relative 'resource/dimensions'
|
41
|
+
require_relative 'resource/board'
|
@@ -2,6 +2,14 @@ module Klaro
|
|
2
2
|
class Client
|
3
3
|
class Story < Resource
|
4
4
|
|
5
|
+
def title
|
6
|
+
@title ||= MdText.new(self.description.split("\n").first)
|
7
|
+
end
|
8
|
+
|
9
|
+
def summary
|
10
|
+
@summary ||= MdText.new(self.description.split("\n")[1..-1].join("\n"))
|
11
|
+
end
|
12
|
+
|
5
13
|
def download_and_relocate_attachments(root_path, target_folder, client)
|
6
14
|
as = self.attachments.map do |attachment|
|
7
15
|
url = attachment["url"]
|
@@ -12,10 +20,6 @@ module Klaro
|
|
12
20
|
self.class.new(self.to_h.merge(
|
13
21
|
attachments: as
|
14
22
|
))
|
15
|
-
rescue => ex
|
16
|
-
puts ex.message
|
17
|
-
puts ex.backtrace.join("\n")
|
18
|
-
raise
|
19
23
|
end
|
20
24
|
|
21
25
|
def download_and_relocate_images(root_path, target_folder, client)
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module Klaro
|
2
|
+
class Client
|
3
|
+
class MdText
|
4
|
+
|
5
|
+
RENDERER = Redcarpet::Render::HTML.new({
|
6
|
+
filter_html: true,
|
7
|
+
hard_wrap: true,
|
8
|
+
no_links: false,
|
9
|
+
no_styles: true,
|
10
|
+
safe_links_only: true,
|
11
|
+
with_toc_data: false
|
12
|
+
})
|
13
|
+
|
14
|
+
MARKDOWN = Redcarpet::Markdown.new(RENDERER)
|
15
|
+
|
16
|
+
def initialize(src)
|
17
|
+
@src = src
|
18
|
+
end
|
19
|
+
|
20
|
+
def to_s
|
21
|
+
@src
|
22
|
+
end
|
23
|
+
|
24
|
+
def to_html
|
25
|
+
MARKDOWN.render(to_s).strip
|
26
|
+
end
|
27
|
+
|
28
|
+
end # class MdText
|
29
|
+
end # class Client
|
30
|
+
end # module Klaro
|
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.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- enspirit
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-04-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: dotenv
|
@@ -30,14 +30,34 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '4.
|
33
|
+
version: '4.2'
|
34
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: '4.
|
40
|
+
version: '4.2'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: redcarpet
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '3.0'
|
48
|
+
- - ">="
|
49
|
+
- !ruby/object:Gem::Version
|
50
|
+
version: '3.4'
|
51
|
+
type: :runtime
|
52
|
+
prerelease: false
|
53
|
+
version_requirements: !ruby/object:Gem::Requirement
|
54
|
+
requirements:
|
55
|
+
- - "~>"
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
version: '3.0'
|
58
|
+
- - ">="
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '3.4'
|
41
61
|
- !ruby/object:Gem::Dependency
|
42
62
|
name: path
|
43
63
|
requirement: !ruby/object:Gem::Requirement
|
@@ -93,7 +113,14 @@ files:
|
|
93
113
|
- lib/klaro/client/errors.rb
|
94
114
|
- lib/klaro/client/request_handler.rb
|
95
115
|
- lib/klaro/client/resource.rb
|
116
|
+
- lib/klaro/client/resource/board.rb
|
117
|
+
- lib/klaro/client/resource/dimension.rb
|
118
|
+
- lib/klaro/client/resource/dimension_value.rb
|
119
|
+
- lib/klaro/client/resource/dimensions.rb
|
120
|
+
- lib/klaro/client/resource/stories.rb
|
96
121
|
- lib/klaro/client/resource/story.rb
|
122
|
+
- lib/klaro/client/support/md_text.rb
|
123
|
+
- lib/klaro/client/version.rb
|
97
124
|
homepage:
|
98
125
|
licenses:
|
99
126
|
- MIT
|