Sha256: 0711a61bdb8001a27e9d5bafaa5e68e3f46c6177501391dcff640a888983a02b

Contents?: true

Size: 1.09 KB

Versions: 15

Compression:

Stored size: 1.09 KB

Contents

require 'httparty'

module Watchdocs
  module Rails
    module Recordings
      module Exporter
        class WatchdocsApiError < StandardError; end

        DEFAULT_ERROR = 'Unknown API Error occured.'.freeze

        class << self
          def export(payload)
            response = HTTParty.post(
              api_url,
              body: payload.to_json,
              headers: { 'Content-Type' => 'application/json' }
            )
            check_response(response)
          end

          private

          def check_response(response)
            case response.code.to_s.chars.first
            when '2'
              true
            when '4', '5'
              raise WatchdocsApiError, get_error(response.body)
            else
              raise WatchdocsApiError, DEFAULT_ERROR
            end
          end

          def get_error(response_body)
            JSON.parse(response_body)['errors'].join(', ')
          rescue
            DEFAULT_ERROR
          end

          def api_url
            Watchdocs::Rails.configuration.export_url
          end
        end
      end
    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
watchdocs-rails-0.4.6 lib/watchdocs/rails/recordings/exporter.rb
watchdocs-rails-0.4.5 lib/watchdocs/rails/recordings/exporter.rb
watchdocs-rails-0.4.4 lib/watchdocs/rails/recordings/exporter.rb
watchdocs-rails-0.4.3 lib/watchdocs/rails/recordings/exporter.rb
watchdocs-rails-0.4.2 lib/watchdocs/rails/recordings/exporter.rb
watchdocs-rails-0.4.1 lib/watchdocs/rails/recordings/exporter.rb
watchdocs-rails-0.4.0 lib/watchdocs/rails/recordings/exporter.rb
watchdocs-rails-0.3.7 lib/watchdocs/rails/recordings/exporter.rb
watchdocs-rails-0.3.6 lib/watchdocs/rails/recordings/exporter.rb
watchdocs-rails-0.3.5 lib/watchdocs/rails/recordings/exporter.rb
watchdocs-rails-0.3.4 lib/watchdocs/rails/recordings/exporter.rb
watchdocs-rails-0.3.3 lib/watchdocs/rails/recordings/exporter.rb
watchdocs-rails-0.3.2 lib/watchdocs/rails/recordings/exporter.rb
watchdocs-rails-0.3.1 lib/watchdocs/rails/recordings/exporter.rb
watchdocs-rails-0.3.0 lib/watchdocs/rails/recordings/exporter.rb