Sha256: cb8783b5517f4c676da5757a5f40cab8e7b80209e1a4361f458f0c7b22a0e254

Contents?: true

Size: 1.42 KB

Versions: 8

Compression:

Stored size: 1.42 KB

Contents

module Snov
  class FakeClient
    def self.folder=(val)
      @folder = val
      FileUtils.mkdir_p(@folder)
      ["post_v1_get-profile-by-email", "get_v2_domain-emails-with-info",
       "post_v1_get-prospects-by-email", "post_v1_prospect-list", "get_v1_get-user-lists"].each do |sub_folder|
        FileUtils.cp_r "#{default_folder}/#{sub_folder}", @folder
      end
    end

    def self.folder
      @folder || default_folder
    end

    def self.reset_folder
      @folder = nil
    end

    def self.default_folder
      "#{__dir__}/fake_client"
    end

    def get(path, payload_hash = {})
      data = File.read(filename("get", path, payload_hash))
      MultiJson.load(data)
    rescue Errno::ENOENT
      data = File.read(filename("get", path, 'not_found' => 'true'))
      MultiJson.load(data)
    end

    def post(path, payload_hash = {})
      data = File.read(filename("post", path, payload_hash))
      MultiJson.load(data)
    rescue Errno::ENOENT => e
      file = filename("post", path, 'not_found' => 'true')
      if File.exist?(file)
        MultiJson.load(File.read(file))
      else
        raise Snov::Client::BadRequest, e.message
      end
    end

    private

    def filename(method, path, payload_hash)
      add = payload_hash.to_a.map { |v| v.join("=") }.join("&").tr(".", "_")
      add = "default" if add == ""
      "#{self.class.folder}/#{method}#{path.tr("/", "_")}/#{add.gsub('/', '-')}.json"
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
snov-0.6.5 lib/snov/fake_client.rb
snov-0.6.4 lib/snov/fake_client.rb
snov-0.6.3 lib/snov/fake_client.rb
snov-0.6.2 lib/snov/fake_client.rb
snov-0.6.1 lib/snov/fake_client.rb
snov-0.6.0 lib/snov/fake_client.rb
snov-0.5.0 lib/snov/fake_client.rb
snov-0.4.1 lib/snov/fake_client.rb