fc_enrich 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: a1147796dccb881da70e654d2b12e5cef243b66eff4feff1724ec687239d5cb9
4
+ data.tar.gz: '09873689133407f5417ea027ef65bdff980fe94f55b12f1d9f627201146786a7'
5
+ SHA512:
6
+ metadata.gz: b9a4a0d143d97658d104dec92a3530842657db225b6fecb7d44ec7af394cf7286a30d472b50cd78da90181e52ac138d7186ec1093b6e06b4287660c7d2859f90
7
+ data.tar.gz: 30390d4b4c729a78dd3a83a7cfb169593c083d88b250a1957f1cdbde2231d8be0b2dba9e51bbb8d9c279ef6ef8db115e0f5208f4ade334054b9bc23faff0c2fb
@@ -0,0 +1,13 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /_yardoc/
4
+ /coverage/
5
+ /doc/
6
+ /pkg/
7
+ /spec/reports/
8
+ /tmp/
9
+
10
+ /.rspec_status
11
+ /gems.locked
12
+ /vendor/bundle
13
+ /.vscode
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --format documentation
2
+ --color
3
+ --require spec_helper
@@ -0,0 +1,13 @@
1
+ require:
2
+ - rubocop-rspec
3
+
4
+ AllCops:
5
+ NewCops: enable
6
+ Exclude:
7
+ - 'vendor/**/*'
8
+
9
+ Style:
10
+ Enabled: false
11
+
12
+ Metrics/AbcSize:
13
+ Max: 25
@@ -0,0 +1,15 @@
1
+ ---
2
+ language: ruby
3
+ gemfile: gems.rb
4
+ cache: bundler
5
+ rvm:
6
+ - 2.4
7
+ - 2.7
8
+ before_install:
9
+ - yes | gem update --system --force
10
+ - gem install bundler
11
+
12
+ script:
13
+ - bundle install
14
+ - bundle exec rake
15
+ - bin/rubocop
@@ -0,0 +1,2 @@
1
+ ## [0.1.1]
2
+ * PersonEnrichRequest
@@ -0,0 +1,73 @@
1
+ # Full Contact Api
2
+ [![Build Status](https://travis-ci.org/NEXL-LTS/full_contact-ruby.svg?branch=main)](https://travis-ci.org/NEXL-LTS/full_contact-ruby)
3
+
4
+ ## Installation
5
+
6
+ Add this line to your application's Gemfile:
7
+
8
+ ```ruby
9
+ gem 'fc_enrich'
10
+ ```
11
+
12
+ And then execute:
13
+
14
+ $ bundle install
15
+
16
+ Or install it yourself as:
17
+
18
+ $ gem install fc_enrich
19
+
20
+ ## Usage
21
+
22
+ ```ruby
23
+ # setup
24
+ FcEnrich.api_key = "[API_KEY]"
25
+ ```
26
+
27
+ see https://platform.fullcontact.com/docs/apis/enrich/multi-field-request
28
+
29
+ ```ruby
30
+ person_request = FcEnrich::PersonEnrichRequest.new(email: "bart@fullcontact.com")
31
+ person = person_request.perform
32
+ puts person.full_name # "Bart Lorang"
33
+ puts person.age_range # "30-39"
34
+ puts person.gender # "Male"
35
+ puts person.location # "Denver, CO, United States"
36
+ puts person.title # "Co-Founder & Managing Director"
37
+ puts person.organization # "V1.vc"
38
+ puts person.twitter # "https://twitter.com/bartlorang"
39
+ puts person.linkedin # "https://www.linkedin.com/in/bartlorang"
40
+ puts person.bio # "CEO & Co-Founder of @FullContact, Managing Director @v1vc_. Tech Entrepreneur, Investor."
41
+ puts person.avatar # "https://d2ojpxxtu63wzl.cloudfront.net/static/a7e6a5aba590d4933e35eaadabd97fd2_44e00e968ac57725a15b32f9ca714827aff8e4818d290cb0c611f2e2585253b3"
42
+
43
+ # example with all options
44
+ person_request = FcEnrich::PersonEnrichRequest.new(
45
+ emails: ["bart@fullcontact.com", "bart.lorang@fullcontact.com"],
46
+ phones: ["+17202227799", "+13035551234"],
47
+ location: { "address_line1": "123 Main Street",
48
+ "address_line2": "Unit 2",
49
+ "city": "Denver",
50
+ "region": "Colorado",
51
+ "region_code": "CO",
52
+ "postal_code": "80203" },
53
+ name: { "full": "Bart Lorang",
54
+ "given": "Bart",
55
+ "family": "Lorang" },
56
+ profiles: [{ "service": "twitter", "username": "bartlorang" },
57
+ { "service": "twitter", "userid": "5998422" },
58
+ { "service": "linkedin", "url": "https://www.linkedin.com/in/bartlorang" },
59
+ { "service": "github", "url": "https://www.github.com/lorangb"}],
60
+ maids: ["ape2ch30-pifn-cbvi-30yy-nia-zex7aw5u"],
61
+ person_id: "eYxWc0B-dKRxerTw_uQpxCssM_GyPaLErj0Eu3y2FrU6py1J",
62
+ record_id: "customer123",
63
+ infer: true,
64
+ data_filter: ["social", "employment_history"])
65
+ ```
66
+
67
+ ## Development
68
+
69
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
70
+
71
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
72
+
73
+
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "fc_enrich"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start(__FILE__)
@@ -0,0 +1,29 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ #
5
+ # This file was generated by Bundler.
6
+ #
7
+ # The application 'rspec' is installed as part of a gem, and
8
+ # this file is here to facilitate running it.
9
+ #
10
+
11
+ require "pathname"
12
+ ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../gems.rb",
13
+ Pathname.new(__FILE__).realpath)
14
+
15
+ bundle_binstub = File.expand_path("../bundle", __FILE__)
16
+
17
+ if File.file?(bundle_binstub)
18
+ if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
19
+ load(bundle_binstub)
20
+ else
21
+ abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
22
+ Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
23
+ end
24
+ end
25
+
26
+ require "rubygems"
27
+ require "bundler/setup"
28
+
29
+ load Gem.bin_path("rspec-core", "rspec")
@@ -0,0 +1,29 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ #
5
+ # This file was generated by Bundler.
6
+ #
7
+ # The application 'rubocop' is installed as part of a gem, and
8
+ # this file is here to facilitate running it.
9
+ #
10
+
11
+ require "pathname"
12
+ ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../gems.rb",
13
+ Pathname.new(__FILE__).realpath)
14
+
15
+ bundle_binstub = File.expand_path("../bundle", __FILE__)
16
+
17
+ if File.file?(bundle_binstub)
18
+ if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
19
+ load(bundle_binstub)
20
+ else
21
+ abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
22
+ Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
23
+ end
24
+ end
25
+
26
+ require "rubygems"
27
+ require "bundler/setup"
28
+
29
+ load Gem.bin_path("rubocop", "rubocop")
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,30 @@
1
+ require_relative 'lib/fc_enrich/version'
2
+
3
+ Gem::Specification.new do |spec|
4
+ spec.name = "fc_enrich"
5
+ spec.version = FcEnrich::VERSION
6
+ spec.authors = ["Grant Petersen-Speelman"]
7
+ spec.email = ["grant@nexl.io"]
8
+ spec.license = "MIT"
9
+
10
+ spec.summary = %q{A ruby client to interact with Full contact API}
11
+ spec.description = %q{A ruby client to interact with Full contact API}
12
+ spec.homepage = "https://github.com/NEXL-LTS/full_contact-ruby"
13
+ spec.required_ruby_version = Gem::Requirement.new(">= 2.4.0")
14
+
15
+ spec.metadata["homepage_uri"] = spec.homepage
16
+ spec.metadata["source_code_uri"] = "https://github.com/NEXL-LTS/full_contact-ruby"
17
+ spec.metadata["changelog_uri"] = "https://github.com/NEXL-LTS/full_contact-ruby/blob/main/CHANGELOG.md"
18
+
19
+ # Specify which files should be added to the gem when it is released.
20
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
21
+ spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
22
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
23
+ end
24
+ spec.bindir = "exe"
25
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
26
+ spec.add_dependency 'activesupport', '>= 3.2', '< 7.0'
27
+ spec.add_dependency 'hashie', '>= 3.1.0', '< 5.0'
28
+ spec.add_dependency 'multi_json', '>= 1.0.0', '< 2.0'
29
+ spec.add_dependency 'rest-client', '>= 2.0.0', '< 3.0'
30
+ end
data/gems.rb ADDED
@@ -0,0 +1,18 @@
1
+ source "https://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in snov.gemspec
4
+ gemspec
5
+
6
+ gem "rake", "~> 12.0"
7
+ gem "rspec", "~> 3.0"
8
+ gem "rubocop"
9
+ gem "rubocop-rspec"
10
+ gem "simplecov"
11
+ gem "webmock"
12
+
13
+ if ENV['GEM_VERSIONS'] == 'min'
14
+ gem 'activesupport', '~> 3.2.0'
15
+ gem 'hashie', '~> 3.1.0'
16
+ gem 'multi_json', '~> 1.0.0'
17
+ gem 'rest-client', '~> 2.0.0'
18
+ end
@@ -0,0 +1,16 @@
1
+ require "fc_enrich/version"
2
+
3
+ module FcEnrich
4
+ class Error < StandardError; end
5
+ # Your code goes here...
6
+
7
+ def self.api_key=(val)
8
+ @key = val.to_str
9
+ end
10
+
11
+ def self.api_key
12
+ @key
13
+ end
14
+ end
15
+
16
+ require 'fc_enrich/person_enrich_request'
@@ -0,0 +1,15 @@
1
+ require 'rest-client'
2
+ require 'multi_json'
3
+
4
+ module FcEnrich
5
+ class HttpClient
6
+ def post(path, payload_hash)
7
+ response = RestClient.post("https://api.fullcontact.com#{path}",
8
+ MultiJson.encode(payload_hash),
9
+ authorization: "Bearer #{FcEnrich.api_key}")
10
+ MultiJson.decode(response.body)
11
+ rescue RestClient::NotFound
12
+ nil
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,51 @@
1
+ require 'hashie'
2
+ require 'active_support/core_ext/string'
3
+
4
+ require_relative 'http_client'
5
+
6
+ module FcEnrich
7
+ class PersonEnrichRequest < Hashie::Trash
8
+ include Hashie::Extensions::IndifferentAccess
9
+
10
+ property :email
11
+ property :emails
12
+ property :phone
13
+ property :phones
14
+ property :location,
15
+ transform_with: ->(v) { v.transform_keys! { |key| key.to_s.camelize(:lower) } }
16
+ property :name
17
+ property :profiles
18
+ property :maids
19
+ property :personId, from: :person_id
20
+ property :recordId, from: :record_id
21
+ property :dataFilter, from: :data_filter
22
+ property :infer
23
+
24
+ def perform(http_client: HttpClient.new)
25
+ Response.new(
26
+ http_client.post("/v3/person.enrich", to_hash)
27
+ )
28
+ end
29
+
30
+ class Response < Hashie::Trash
31
+ include Hashie::Extensions::IndifferentAccess
32
+ include Hashie::Extensions::IgnoreUndeclared
33
+ include Hashie::Extensions::Coercion
34
+
35
+ property :full_name, from: :fullName
36
+ property :age_range, from: :ageRange
37
+ property :gender
38
+ property :location
39
+ property :title
40
+ property :organization
41
+ property :twitter
42
+ property :linkedin
43
+ property :facebook
44
+ property :bio
45
+ property :avatar
46
+ property :details
47
+
48
+ coerce_key :details, Hashie::Mash
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,3 @@
1
+ module FcEnrich
2
+ VERSION = "0.1.1"
3
+ end
metadata ADDED
@@ -0,0 +1,143 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: fc_enrich
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
+ platform: ruby
6
+ authors:
7
+ - Grant Petersen-Speelman
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2020-12-01 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activesupport
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '3.2'
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '7.0'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: '3.2'
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '7.0'
33
+ - !ruby/object:Gem::Dependency
34
+ name: hashie
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: 3.1.0
40
+ - - "<"
41
+ - !ruby/object:Gem::Version
42
+ version: '5.0'
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: 3.1.0
50
+ - - "<"
51
+ - !ruby/object:Gem::Version
52
+ version: '5.0'
53
+ - !ruby/object:Gem::Dependency
54
+ name: multi_json
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ version: 1.0.0
60
+ - - "<"
61
+ - !ruby/object:Gem::Version
62
+ version: '2.0'
63
+ type: :runtime
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: 1.0.0
70
+ - - "<"
71
+ - !ruby/object:Gem::Version
72
+ version: '2.0'
73
+ - !ruby/object:Gem::Dependency
74
+ name: rest-client
75
+ requirement: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ version: 2.0.0
80
+ - - "<"
81
+ - !ruby/object:Gem::Version
82
+ version: '3.0'
83
+ type: :runtime
84
+ prerelease: false
85
+ version_requirements: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: 2.0.0
90
+ - - "<"
91
+ - !ruby/object:Gem::Version
92
+ version: '3.0'
93
+ description: A ruby client to interact with Full contact API
94
+ email:
95
+ - grant@nexl.io
96
+ executables: []
97
+ extensions: []
98
+ extra_rdoc_files: []
99
+ files:
100
+ - ".gitignore"
101
+ - ".rspec"
102
+ - ".rubocop.yml"
103
+ - ".travis.yml"
104
+ - CHANGELOG.md
105
+ - README.md
106
+ - Rakefile
107
+ - bin/console
108
+ - bin/rspec
109
+ - bin/rubocop
110
+ - bin/setup
111
+ - fc_enrich.gemspec
112
+ - gems.rb
113
+ - lib/fc_enrich.rb
114
+ - lib/fc_enrich/http_client.rb
115
+ - lib/fc_enrich/person_enrich_request.rb
116
+ - lib/fc_enrich/version.rb
117
+ homepage: https://github.com/NEXL-LTS/full_contact-ruby
118
+ licenses:
119
+ - MIT
120
+ metadata:
121
+ homepage_uri: https://github.com/NEXL-LTS/full_contact-ruby
122
+ source_code_uri: https://github.com/NEXL-LTS/full_contact-ruby
123
+ changelog_uri: https://github.com/NEXL-LTS/full_contact-ruby/blob/main/CHANGELOG.md
124
+ post_install_message:
125
+ rdoc_options: []
126
+ require_paths:
127
+ - lib
128
+ required_ruby_version: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - ">="
131
+ - !ruby/object:Gem::Version
132
+ version: 2.4.0
133
+ required_rubygems_version: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - ">="
136
+ - !ruby/object:Gem::Version
137
+ version: '0'
138
+ requirements: []
139
+ rubygems_version: 3.1.4
140
+ signing_key:
141
+ specification_version: 4
142
+ summary: A ruby client to interact with Full contact API
143
+ test_files: []