Sha256: 3e4891947371531c615f5ed158ae9225dd63ae9d6d9c254dc43ea10b8150677d

Contents?: true

Size: 1.33 KB

Versions: 52

Compression:

Stored size: 1.33 KB

Contents

# frozen_string_literal: true

require 'avm/data/instance/unit'
require 'eac_ruby_utils/core_ext'
require 'curb'
require 'open-uri'

module Avm
  module EacRedmineBase0
    class DataUnit < ::Avm::Data::Instance::Unit
      common_constructor :instance

      EXTENSION = '.tar'

      def do_dump(data_path)
        ::File.open(data_path, 'wb') do |file|
          file << URI.parse(export_url).read
        end
      end

      def do_load(data_path)
        do_load_by_web(data_path) || do_load_by_rake(data_path) || raise('Failed to load')
      end

      def do_load_by_web(data_path)
        c = Curl::Easy.new(import_url)
        c.multipart_form_post = true
        c.http_post(Curl::PostField.file('redmine_with_git_tableless_load[path]', data_path))
        c.perform
        true
      rescue Curl::Err::ConnectionFailedError
        false
      end

      def do_load_by_rake(data_path)
        instance.bundle('exec', 'rake', "redmine_with_git:load:all[#{data_path}]").system
        true
      end

      def export_url
        url('/backup/export')
      end

      def import_url
        url('/backup/import.json')
      end

      def url(path)
        uri = ::Addressable::URI.parse(instance.read_entry('web.url')) + path
        uri.query_values = { key: instance.read_entry('admin.api_key') }
        uri.to_s
      end
    end
  end
end

Version data entries

52 entries across 52 versions & 2 rubygems

Version Path
avm-tools-0.114.1 sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/data_unit.rb
avm-tools-0.114.0 sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/data_unit.rb
avm-tools-0.113.6 sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/data_unit.rb
avm-tools-0.113.5 sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/data_unit.rb
avm-tools-0.113.4 sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/data_unit.rb
avm-eac_redmine_base0-0.3.1 lib/avm/eac_redmine_base0/data_unit.rb
avm-tools-0.113.3 sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/data_unit.rb
avm-tools-0.113.2 sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/data_unit.rb
avm-eac_redmine_base0-0.3.0 lib/avm/eac_redmine_base0/data_unit.rb
avm-tools-0.110.0 vendor/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/data_unit.rb
avm-tools-0.109.1 vendor/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/data_unit.rb
avm-tools-0.109.0 vendor/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/data_unit.rb
avm-tools-0.108.0 vendor/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/data_unit.rb
avm-eac_redmine_base0-0.2.2 lib/avm/eac_redmine_base0/data_unit.rb
avm-tools-0.107.0 vendor/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/data_unit.rb
avm-tools-0.106.0 vendor/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/data_unit.rb
avm-eac_redmine_base0-0.2.0 lib/avm/eac_redmine_base0/data_unit.rb
avm-tools-0.105.0 vendor/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/data_unit.rb
avm-tools-0.104.0 vendor/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/data_unit.rb
avm-eac_redmine_base0-0.1.0 lib/avm/eac_redmine_base0/data_unit.rb