trailblazer-developer 0.0.3 → 0.0.4

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: 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