diff options
| author | Robert | 2017-08-21 20:24:50 +0200 | 
|---|---|---|
| committer | Robert | 2017-08-22 09:37:30 +0200 | 
| commit | 61c4a303183284fc107325aeeef5ace7a3e68c0c (patch) | |
| tree | 71bbfe5e5fe9eddb9e381aa0536b44476f461bc1 /app/services | |
| parent | 327b1ec771a056451b0635ba80cc346fa1765299 (diff) | |
| download | chouette-core-61c4a303183284fc107325aeeef5ace7a3e68c0c.tar.bz2 | |
Refs: #4273@3h;
Debugging Java Integration (ZipService -> HTTPService -> Object Creation)
   - Created an ErrorFormat concern to see what went wrong in the HTTP call
     as so many things can go wrong due to:
      * Timeout Issues
      * Illegal database setup or cleaning before tests
Diffstat (limited to 'app/services')
| -rw-r--r-- | app/services/http_service.rb | 15 | ||||
| -rw-r--r-- | app/services/retry_service.rb | 13 | 
2 files changed, 18 insertions, 10 deletions
| diff --git a/app/services/http_service.rb b/app/services/http_service.rb index ae7d0e413..6cf8ef93b 100644 --- a/app/services/http_service.rb +++ b/app/services/http_service.rb @@ -20,7 +20,6 @@ module HTTPService extend self        raise "Error on api request status : #{resp.status} => #{resp.body}"      end    end -    # host: 'http://localhost:3000',    # path: '/api/v1/netex_imports.json',    # token: '13-74009c36638f587c9eafb1ce46e95585', @@ -32,14 +31,14 @@ module HTTPService extend self        c.request :multipart        c.request :url_encoded        c.adapter Faraday.default_adapter - -      if upload -        name = upload.keys.first -        value, mime_type, as_name = upload.values.first -        params.update( name => Faraday::UploadIO.new(value, mime_type, as_name ) ) -      end - +        require 'pry' +        binding.pry        return c.post path, params      end    end + +  # Expose this in order to make the service replaceable +  def upload(*triple) +    Faraday::UploadIO.new(*triple) +  end  end diff --git a/app/services/retry_service.rb b/app/services/retry_service.rb index 21b1def36..245dd32df 100644 --- a/app/services/retry_service.rb +++ b/app/services/retry_service.rb @@ -16,8 +16,9 @@ class RetryService    # @param@ block:    # This optional code is excuted before each retry, it is passed the result of the failed attempt, thus    # an `Exception` and the number of execution already tried. -  def initialize( delays: [], rescue_from: [], &blk ) +  def initialize( delays: [], rescue_from: [], logger: nil, &blk )      @intervals             = delays +    @logger                = logger      @registered_exceptions = Array(rescue_from) << Retry      @failure_callback      = blk    end @@ -31,6 +32,7 @@ class RetryService      result = execute_protected blk      return result if result.ok?      @intervals.each_with_index do | interval, retry_count | +      warn "retry #{retry_count + 1 }; sleeping #{interval}; cause: #{result.value.inspect}"        sleep interval        @failure_callback.try(:call, result.value, retry_count + 1)        result = execute_protected blk @@ -43,7 +45,9 @@ class RetryService    private    def execute_protected blk -    Result.ok(blk.()) +    result = blk.() +    return result if Result === result +    Result.ok(result)    rescue Exception => e      if @registered_exceptions.any?{ |re| e.is_a? re }        Result.error(e) @@ -51,4 +55,9 @@ class RetryService        raise      end    end + +  def warn message +    return unless @logger +    @logger.try :warn, message +  end  end | 
