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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a335d20215b1a63a952f0e94df992dd342cbf24dc20b91f7b70d41c120cb8dd3
4
- data.tar.gz: 79f2dc801129d1f23b08ff48ec0f57c2384c07a60d91d938c0e2295f83e0a542
3
+ metadata.gz: c96a1b80f060d5520b184258a4aa1aa833c654419fd720570c02cf88292cdb2a
4
+ data.tar.gz: eb8b69d890d3e65b598125a1f0548fb9099088260fa30486ce6e93586a932f5f
5
5
  SHA512:
6
- metadata.gz: 9ae845e9b99bc30d96da9bba11e8b46e439bc1f103b5823402b363ac57fa517baf7a0cf3c189b827ab58cfff1176938215f4af5350a1232a5100577b9ded9f0c
7
- data.tar.gz: 2fc6c5fb824f423489ae41031aa4544172bbe56163681cc4944ee6cb0fd88d24ba173badf6516901fcc359ea4ce208d123f65fe4d6196362d169001a556b92d1
6
+ metadata.gz: ee3fe065d14539c5615ba31dc6bd2fe70469a4b72b6031d3519464c7b597d33b8124c70379821ca892c924989ac0df428c9cb9a7aeca94ffdaa608187253240a
7
+ data.tar.gz: 024b2d614fe4761e272600f2a1f05bae27341a40e5c6e3b7c696ea1827117093c61c5f2529f97ff3b27b74009dde6ea0186ef022d3c70758a6dc15807ff75cec
data/Gemfile CHANGED
@@ -9,3 +9,5 @@ gemspec
9
9
  # gem "trailblazer-activity-dsl-linear", github: "trailblazer/trailblazer-activity-dsl-linear"
10
10
 
11
11
  gem "representable"
12
+ gem "faraday"
13
+ gem "multi_json"
@@ -1,3 +1,7 @@
1
+ # 0.0.4
2
+
3
+ * Allow injecting `:parser` into `Generate.transform_from_hash`.
4
+
1
5
  # 0.0.3
2
6
 
3
7
  * Add `Developer.railway`.
@@ -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
- Representer::Activity.new(OpenStruct.new).from_hash(hash).elements
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)
@@ -1,7 +1,7 @@
1
1
  module Trailblazer
2
2
  module Version
3
3
  module Developer
4
- VERSION = "0.0.3"
4
+ VERSION = "0.0.4"
5
5
  end
6
6
  end
7
7
  end
@@ -40,6 +40,8 @@ module Trailblazer::Developer
40
40
  handle(stack, $!, closest.task, activity, [ctx, flow_options])
41
41
  end
42
42
 
43
+ puts Trailblazer::Activity::Trace::Present.(stack)
44
+
43
45
  returned # FIXME: test me
44
46
  end
45
47
 
@@ -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", "~> 5.0"
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.3
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-06-17 00:00:00.000000000 Z
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: '5.0'
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: '5.0'
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