Sha256: 82f35e9a3331f31ff037cda6941572cb6f255ecdf4cf2dfaf15e891625f85fc8

Contents?: true

Size: 1.88 KB

Versions: 9

Compression:

Stored size: 1.88 KB

Contents

module Snov
  class GetEmailsBySocialUrl
    attr_reader :client

    def initialize(client: Snov.client, url:)
      @client = client
      @url = url
    end

    def prospect
      @prospect ||= ProspectResult.new(raw_result)
    end

    def raw_result
      @raw_result ||= client.post("/v1/get-emails-from-url", "url" => @url)
                            .deep_transform_keys! { |key| key.underscore }
    end

    class ProspectJob
      include ActiveModel::Model

      attr_accessor :company_name, :company_type, :position, :social_link, :site, :locality, :state,
                    :city, :street, :street2, :country, :start_date, :end_date, :postal, :founded, :size,
                    :industry
    end

    class ProspectJobList
      include ActiveModel::Model
      include Enumerable

      attr_accessor :jobs

      def each(&block)
        jobs.each(&block)
      end
    end

    class ProspectEmail
      include ActiveModel::Model

      attr_accessor :email, :status
    end

    class ProspectData
      include ActiveModel::Model

      attr_reader :emails, :previous_jobs, :current_jobs
      attr_accessor :id, :name, :first_name, :last_name, :source_page, :source, :industry,
                    :country, :locality, :last_update_date, :social, :skills, :links

      def emails=(val)
        @emails = Array.wrap(val).map do |rel|
          ProspectEmail.new(rel)
        end
      end

      def previous_job=(val)
        @previous_jobs = ProspectJobList.new(jobs: Array.wrap(val).map { |job| ProspectJob.new(job) })
      end

      def current_job=(val)
        @current_jobs = ProspectJobList.new(jobs: Array.wrap(val).map { |job| ProspectJob.new(job) })
      end
    end

    class ProspectResult
      include ActiveModel::Model

      attr_accessor :success, :message
      attr_reader :data

      def data=(val)
        @data = ProspectData.new(val)
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

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