trailblazer-developer 0.0.3 → 0.0.4
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/Gemfile +2 -0
- data/lib/trailblazer/developer/CHANGES.md +4 -0
- data/lib/trailblazer/developer/client.rb +67 -0
- data/lib/trailblazer/developer/generate.rb +2 -2
- data/lib/trailblazer/developer/version.rb +1 -1
- data/lib/trailblazer/developer/wtf.rb +2 -0
- data/trailblazer-developer.gemspec +2 -1
- metadata +20 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c96a1b80f060d5520b184258a4aa1aa833c654419fd720570c02cf88292cdb2a
|
4
|
+
data.tar.gz: eb8b69d890d3e65b598125a1f0548fb9099088260fa30486ce6e93586a932f5f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ee3fe065d14539c5615ba31dc6bd2fe70469a4b72b6031d3519464c7b597d33b8124c70379821ca892c924989ac0df428c9cb9a7aeca94ffdaa608187253240a
|
7
|
+
data.tar.gz: 024b2d614fe4761e272600f2a1f05bae27341a40e5c6e3b7c696ea1827117093c61c5f2529f97ff3b27b74009dde6ea0186ef022d3c70758a6dc15807ff75cec
|
data/Gemfile
CHANGED
@@ -1,7 +1,74 @@
|
|
1
1
|
require "faraday"
|
2
|
+
require "base64"
|
3
|
+
require "json"
|
4
|
+
require "representable/json"
|
2
5
|
|
3
6
|
module Trailblazer::Developer
|
4
7
|
module Client
|
8
|
+
Diagram = Struct.new(:id, :body)
|
9
|
+
|
10
|
+
class Diagram::Representer < Representable::Decorator
|
11
|
+
include Representable::JSON
|
12
|
+
property :id
|
13
|
+
property :body, as: :diagram
|
14
|
+
end
|
15
|
+
|
16
|
+
module_function
|
17
|
+
|
18
|
+
def Diagram(id, body)
|
19
|
+
Diagram.new(id, body).freeze
|
20
|
+
end
|
21
|
+
|
22
|
+
def import(id:, **options)
|
23
|
+
token = retrieve_token(**options)
|
24
|
+
export_diagram(id: id, token: token, **options)
|
25
|
+
end
|
26
|
+
|
27
|
+
def retrieve_token(email:, password:, url: "/login", **options)
|
28
|
+
body = JSON.generate({login: {email: email, password: password}})
|
29
|
+
|
30
|
+
response = request(token: nil, method: :post, url: url, body: body, **options)
|
31
|
+
|
32
|
+
return false unless response.status == 302
|
33
|
+
|
34
|
+
token = CGI::Cookie.parse(response.headers["set-cookie"])["token"][0]
|
35
|
+
end
|
36
|
+
|
37
|
+
def export_diagram(id:, **options)
|
38
|
+
response = request(body: nil, url: "/api/v1/diagrams/#{id}/export", method: :get, **options)
|
39
|
+
|
40
|
+
# parse_response(response)
|
41
|
+
response.body
|
42
|
+
end
|
43
|
+
|
44
|
+
# DISCUSS: do we need that?
|
45
|
+
def new_diagram(token:, **options)
|
46
|
+
response = request(body: nil, url: "/api/v1/diagrams/new", method: :get, token: token, **options)
|
47
|
+
|
48
|
+
# TODO: use Dry::Struct
|
49
|
+
# TODO: handle unauthorized/errors
|
50
|
+
parse_response(response)
|
51
|
+
end
|
52
|
+
|
53
|
+
def request(host:, url:, method:, token:, body:, **)
|
54
|
+
conn = Faraday.new(url: host)
|
55
|
+
|
56
|
+
response = conn.send(method) do |req|
|
57
|
+
req.url url
|
58
|
+
req.headers["Content-Type"] = "application/json"
|
59
|
+
req.body = body
|
60
|
+
req.headers["Authorization"] = token
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
def parse_response(response)
|
65
|
+
diagram = Diagram.new
|
66
|
+
Diagram::Representer.new(diagram).from_json(response.body) # a parsed hash would be cooler?
|
67
|
+
|
68
|
+
diagram
|
69
|
+
end
|
70
|
+
|
71
|
+
# TODO: remove me!
|
5
72
|
def self.push(operation:, name:)
|
6
73
|
xml = Trailblazer::Diagram::BPMN.to_xml(operation["__activity__"], operation["__sequence__"].map(&:id))
|
7
74
|
token = "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJub25lIn0.eyJpZCI6MywidXNlcm5hbWUiOiJhcG90b25pY2siLCJlbWFpbCI6Im5pY2tAdHJhaWxibGF6ZXIudG8ifQ." # rubocop:disable Metrics/LineLength
|
@@ -35,8 +35,8 @@ module Trailblazer
|
|
35
35
|
compute_intermediate(elements)
|
36
36
|
end
|
37
37
|
|
38
|
-
def transform_from_hash(hash)
|
39
|
-
|
38
|
+
def transform_from_hash(hash, parser: Representer::Activity)
|
39
|
+
parser.new(OpenStruct.new).from_hash(hash).elements
|
40
40
|
end
|
41
41
|
|
42
42
|
def find_start_events(elements)
|
@@ -18,7 +18,8 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.require_paths = ["lib"]
|
19
19
|
|
20
20
|
spec.add_development_dependency "bundler"
|
21
|
-
spec.add_development_dependency "minitest"
|
21
|
+
spec.add_development_dependency "minitest"
|
22
|
+
spec.add_development_dependency "minitest-line"
|
22
23
|
spec.add_development_dependency "rake"
|
23
24
|
spec.add_development_dependency "rubocop"
|
24
25
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: trailblazer-developer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nick Sutterer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-08-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -28,16 +28,30 @@ dependencies:
|
|
28
28
|
name: minitest
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '0'
|
34
34
|
type: :development
|
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: '
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: minitest-line
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: rake
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|