Sha256: e5de996ed0dd6cc35585f933ee6d2a4852a80b5a7df7d8335d649241cd9918f1
Contents?: true
Size: 1.42 KB
Versions: 1
Compression:
Stored size: 1.42 KB
Contents
module Flexite class Diff class SyncCheckService def initialize(other_tree, token, stage, checksum) @other_tree = other_tree @current_tree = Config.t_nodes @token = Token.new(token) @stage = stage @checksum = checksum end def call check end protected def check if @token.invalid? return { error: 'Invalid token', code: 401 } end diffs = HashDiff.diff(@current_tree, @other_tree, array_path: true) if diffs.blank? return {} end view_diffs = { '+': [], '-': [], '~': [] } @patched = HashDiff.patch!(@current_tree, diffs) diffs.each do |type, depth, *changes| view_diffs[type.to_sym] << [get_depth(type.to_sym == :- ? depth.slice(0..-2) : depth), *changes] end Flexite.cache.write("#{Flexite.state_digest}-#{@checksum}-#{@stage}-diffs", diffs) { diffs: view_diffs } rescue => exc { error: exc.message, code: 500 } end private def get_depth(depth) node = @patched view_depth = depth.each.with_object([]) do |level, memo| node = node[level] case node when ::Hash next if node['name'].blank? memo << node['name'] end end view_depth.join(Flexite.config.diff_depth_separator) end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
flexite-0.0.19 | app/services/flexite/diff/sync_check_service.rb |