module Trailblazer::Developer::Client
Constants
- Diagram
Public Class Methods
push(operation:, name:)
click to toggle source
TODO: remove me!
# File lib/trailblazer/developer/client.rb, line 79 def self.push(operation:, name:) xml = Trailblazer::Diagram::BPMN.to_xml(operation["__activity__"], operation["__sequence__"].map(&:id)) token = "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJub25lIn0.eyJpZCI6MywidXNlcm5hbWUiOiJhcG90b25pY2siLCJlbWFpbCI6Im5pY2tAdHJhaWxibGF6ZXIudG8ifQ." # rubocop:disable Metrics/LineLength conn = Faraday.new(url: "https://api.trb.to") response = conn.post do |req| req.url "/dev/v1/import" req.headers["Content-Type"] = "application/json" req.headers["Authorization"] = token require "base64" req.body = %({ "name": "#{name}", "xml":"#{Base64.strict_encode64(xml)}" }) end puts response.status.inspect end
Public Instance Methods
Diagram(id, body)
click to toggle source
# File lib/trailblazer/developer/client.rb, line 18 def Diagram(id, body) Diagram.new(id, body).freeze end
duplicate(id:, **options)
click to toggle source
# File lib/trailblazer/developer/client.rb, line 44 def duplicate(id:, **options) token = retrieve_token(**options) response = request(body: nil, token: token, url: "/api/v1/diagrams/#{id}/duplicate", method: :get, **options) parse_response(response) end
export_diagram(id:, query:, **options)
click to toggle source
# File lib/trailblazer/developer/client.rb, line 37 def export_diagram(id:, query:, **options) response = request(body: nil, url: "/api/v1/diagrams/#{id}/export#{query}", method: :get, **options) # parse_response(response) response.body end
import(id:, query:"", **options)
click to toggle source
# File lib/trailblazer/developer/client.rb, line 22 def import(id:, query:"", **options) token = retrieve_token(**options) export_diagram(id: id, token: token, query: query, **options) end
new_diagram(token:, **options)
click to toggle source
DISCUSS: do we need that?
# File lib/trailblazer/developer/client.rb, line 52 def new_diagram(token:, **options) response = request(body: nil, url: "/api/v1/diagrams/new", method: :get, token: token, **options) # TODO: use Dry::Struct # TODO: handle unauthorized/errors parse_response(response) end
parse_response(response)
click to toggle source
# File lib/trailblazer/developer/client.rb, line 71 def parse_response(response) diagram = Diagram.new Diagram::Representer.new(diagram).from_json(response.body) # a parsed hash would be cooler? diagram end
request(host:, url:, method:, token:, body:, **)
click to toggle source
# File lib/trailblazer/developer/client.rb, line 60 def request(host:, url:, method:, token:, body:, **) conn = Faraday.new(url: host) conn.send(method) do |req| req.url url req.headers["Content-Type"] = "application/json" req.body = body req.headers["Authorization"] = token end end
retrieve_token(email:, api_key:, url: "/signin", **options)
click to toggle source
# File lib/trailblazer/developer/client.rb, line 27 def retrieve_token(email:, api_key:, url: "/signin", **options) body = JSON.generate({email: email, api_key: api_key}) response = request(token: nil, method: :get, url: url, body: body, **options) return false unless response.status == 200 # token = CGI::Cookie.parse(response.headers["set-cookie"])["token"][0] JSON.parse(response.body)["token"] end