contact-data 0.0.5 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f6dba41d93c7414e0694e5bc44f6509bae51accf
4
- data.tar.gz: 18968d34c28984e2023b43240d79f25c5cabb79b
3
+ metadata.gz: 3337826afec64e103b908c2facdb350930e3fab8
4
+ data.tar.gz: 2e6b6770b2bfb8f9de82a305b9f3e73bb0557e95
5
5
  SHA512:
6
- metadata.gz: 165a27fe9494deacbb1c7239f62990ed9fef336c9ec20d0e26079411920c489928a431a1bf06d261aae11af4c4a191ff62e8fa3a61813ad35a0c1bcf28f3af0d
7
- data.tar.gz: 5acd8808791687aea804133fb8710aaf1b973e326ecc50991356dd56222426f096c34727f9338a92e446e53f0d6e389b93532ceea8802ba76dd3ea5c971055cb
6
+ metadata.gz: 5deba5292705691dcd8d53fc75fec6132e1f4687f8623a0fc1fc736ea8fbbb7eac9af2ce473453809f4265c5122270270fa5150d102f1fee025e4c8d6673a5de
7
+ data.tar.gz: 4b2a0e6b692548938975f3bbcd6d53a8db9add716648a9140e785f0439832e71438be6cb232d93e53091954cf6635838a127a845f00e6b08e50aaaaa13c76b3b
data/.hound.yml ADDED
@@ -0,0 +1 @@
1
+ inherit_from: .rubocop.yml
data/.rubocop.yml ADDED
@@ -0,0 +1,16 @@
1
+ LineLength:
2
+ Description: 'Limit lines to 120 characters.'
3
+ Max: 120
4
+ Enabled: true
5
+
6
+ FileName:
7
+ Description: 'Use snake_case for source file names.'
8
+ Enabled: false
9
+
10
+ MethodLength:
11
+ Description: 'Avoid methods longer than 10 lines of code.'
12
+ Enabled: false
13
+
14
+ Documentation:
15
+ Description: 'Document classes and non-namespace modules.'
16
+ Enabled: false
data/Gemfile.lock CHANGED
@@ -1,18 +1,21 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- contact-data (0.0.3)
4
+ contact-data (0.0.5)
5
5
  rest-client (~> 1)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
+ addressable (2.3.6)
10
11
  coveralls (0.7.0)
11
12
  multi_json (~> 1.3)
12
13
  rest-client
13
14
  simplecov (>= 0.7)
14
15
  term-ansicolor
15
16
  thor
17
+ crack (0.4.2)
18
+ safe_yaml (~> 1.0.0)
16
19
  diff-lcs (1.2.5)
17
20
  gem-release (0.7.3)
18
21
  mime-types (2.3)
@@ -28,6 +31,7 @@ GEM
28
31
  rspec-expectations (2.14.5)
29
32
  diff-lcs (>= 1.1.3, < 2.0)
30
33
  rspec-mocks (2.14.6)
34
+ safe_yaml (1.0.3)
31
35
  simplecov (0.7.1)
32
36
  multi_json (~> 1.0)
33
37
  simplecov-html (~> 0.7.1)
@@ -36,6 +40,10 @@ GEM
36
40
  tins (~> 1.0)
37
41
  thor (0.19.1)
38
42
  tins (1.3.0)
43
+ vcr (2.9.2)
44
+ webmock (1.17.4)
45
+ addressable (>= 2.2.7)
46
+ crack (>= 0.3.2)
39
47
 
40
48
  PLATFORMS
41
49
  ruby
@@ -48,3 +56,5 @@ DEPENDENCIES
48
56
  rake (~> 10)
49
57
  rspec (~> 2)
50
58
  simplecov (~> 0.7, >= 0.7.1)
59
+ vcr (~> 2)
60
+ webmock (~> 1)
data/Rakefile CHANGED
@@ -1 +1 @@
1
- require "bundler/gem_tasks"
1
+ require 'bundler/gem_tasks'
data/contact-data.gemspec CHANGED
@@ -7,14 +7,14 @@ Gem::Specification.new do |spec|
7
7
  spec.version = ContactData::VERSION
8
8
  spec.authors = ['Xenapto']
9
9
  spec.email = ['developers@xenapto.com']
10
- spec.description = %q{A Ruby gem to retrieve information about people and organizations from http://public.xenapto.com}
10
+ spec.description = %q(A Ruby gem to retrieve data about people and organizations from http://public.xenapto.com)
11
11
  spec.summary = %q{Example: ContactData.search('John Smith III')}
12
12
  spec.homepage = 'https://github.com/Xenapto/contact-data'
13
13
  spec.license = 'MIT'
14
14
 
15
- spec.files = `git ls-files`.split($/)
16
- spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
17
- spec.test_files = spec.files.grep(%r{^(test|spec|features|coverage)/})
15
+ spec.files = `git ls-files`.split($RS)
16
+ spec.executables = spec.files.grep(/^bin\//) { |f| File.basename(f) }
17
+ spec.test_files = spec.files.grep(/^(test|spec|features|coverage)\//)
18
18
  spec.require_paths = ['lib']
19
19
 
20
20
  spec.add_runtime_dependency 'rest-client', '~> 1'
@@ -25,4 +25,6 @@ Gem::Specification.new do |spec|
25
25
  spec.add_development_dependency 'gem-release', '~> 0'
26
26
  spec.add_development_dependency 'simplecov', '~> 0.7', '>= 0.7.1' # https://github.com/colszowka/simplecov/issues/281
27
27
  spec.add_development_dependency 'coveralls', '~> 0'
28
+ spec.add_development_dependency 'vcr', '~> 2'
29
+ spec.add_development_dependency 'webmock', '~> 1'
28
30
  end
data/lib/contact-data.rb CHANGED
@@ -1,12 +1,6 @@
1
1
  # encoding: utf-8
2
- require 'contact-data/links'
2
+ require 'logger'
3
+ require 'contact-data/contact'
4
+ require 'contact-data/link'
3
5
  require 'contact-data/fetcher'
4
6
  require 'contact-data/deprecated'
5
-
6
- class ContactData
7
- class << self
8
- def search(name)
9
- Fetcher.get(:search, params: { name: name })
10
- end
11
- end
12
- end
@@ -0,0 +1,11 @@
1
+ # encoding: utf-8
2
+ module ContactData
3
+ class Contact
4
+ class << self
5
+ def search(name, options = {})
6
+ options[:params] = { name: name }
7
+ Fetcher.get(:search, options)
8
+ end
9
+ end
10
+ end
11
+ end
@@ -1,5 +1,5 @@
1
1
  # encoding: utf-8
2
- class ContactData
2
+ module ContactData
3
3
  class Deprecated
4
4
  class << self
5
5
  def search(name)
@@ -7,11 +7,11 @@ class ContactData
7
7
  end
8
8
 
9
9
  def find_contacts_in(text)
10
- Fetcher.post('text/find_contacts', payload: {text: text})
10
+ Fetcher.post('text/find_contacts', payload: { text: text })
11
11
  end
12
12
 
13
13
  def link_metadata(url)
14
- Fetcher.get("link/#{CGI::escape(url)}", :noformat => true)
14
+ Fetcher.get("link/#{CGI.escape(url)}", noformat: true)
15
15
  end
16
16
  end
17
17
  end
@@ -1,14 +1,19 @@
1
1
  # encoding: utf-8
2
- class ContactData
2
+ module ContactData
3
3
  class Fetcher
4
4
  URL = 'http://public.xenapto.com'
5
5
  API = 'api/v2'
6
6
 
7
+ LOGLEVEL = Logger::WARN
8
+
7
9
  class << self
8
10
  [:get, :post].each do |http_method|
9
11
  define_method(http_method) do |api_method, options = {}|
12
+ log_level(options)
10
13
  url = get_url_from(api_method, options)
11
- fetch_and_parse url, http_method, options
14
+ result = fetch_and_parse url, http_method, options
15
+ log_level(LOGLEVEL)
16
+ result
12
17
  end
13
18
  end
14
19
 
@@ -33,10 +38,12 @@ class ContactData
33
38
 
34
39
  def fetch_and_parse(url, method = :get, options = {})
35
40
  json = fetch(url, method, options)
41
+ logger.info { "Parsing #{json.length} characters of JSON" }
36
42
  parse json
37
43
  end
38
44
 
39
45
  def fetch(url, method = :get, options = {})
46
+ logger.info { "Using #{method.to_s.upcase} for #{url}" }
40
47
  args = { url: url, method: method }
41
48
  args[:headers] = { params: options[:params] } if options.key? :params
42
49
  args[:payload] = options[:payload] if options.key? :payload
@@ -46,6 +53,18 @@ class ContactData
46
53
  def parse(json)
47
54
  JSON.parse(json, symbolize_names: true, allow_nan: true)
48
55
  end
56
+
57
+ def logger
58
+ @logger ||= Logger.new(STDOUT)
59
+ end
60
+
61
+ def log_level(options = {})
62
+ logger.level = if options.is_a?(Hash)
63
+ options[:verbose] ? Logger::INFO : LOGLEVEL
64
+ else
65
+ options
66
+ end
67
+ end
49
68
  end
50
69
  end
51
70
  end
@@ -0,0 +1,17 @@
1
+ # encoding: utf-8
2
+ module ContactData
3
+ class Link
4
+ BASE = :links
5
+
6
+ class << self
7
+ def latest(params = {})
8
+ options = { base: BASE }
9
+
10
+ options[:verbose] = params.delete(:verbose) if params.key? :verbose
11
+ options[:params] = params unless params.empty?
12
+
13
+ Fetcher.get(:latest, options)
14
+ end
15
+ end
16
+ end
17
+ end
@@ -1,3 +1,4 @@
1
- class ContactData
2
- VERSION = "0.0.5"
1
+ # Gem version
2
+ module ContactData
3
+ VERSION = '0.0.6'
3
4
  end
@@ -6,6 +6,8 @@ describe ContactData do
6
6
  let(:name) { 'Derek Jones III' }
7
7
 
8
8
  it 'searches for a contact by name' do
9
- expect{ ContactData.search(name) }.to raise_error(RestClient::ResourceNotFound)
9
+ VCR.use_cassette('name_search') do
10
+ expect { ContactData::Contact.search(name, verbose: true) }.to raise_error(RestClient::ResourceNotFound)
11
+ end
10
12
  end
11
13
  end
@@ -5,21 +5,34 @@ require 'contact-data'
5
5
  describe ContactData::Deprecated do
6
6
  let(:name) { 'Derek Jones III' }
7
7
 
8
- it 'searches for a contact by name' do
9
- result = ContactData::Deprecated.search(name)
10
- expect(result).to be_a(Hash)
8
+ context 'contact' do
9
+ it 'searches by name' do
10
+ VCR.use_cassette('deprecated_contact_search') do
11
+ result = ContactData::Deprecated.search(name)
12
+ expect(result).to be_a(Hash)
13
+ end
14
+ end
11
15
  end
12
16
 
13
- it 'finds contact names in text' do
14
- text = 'lorem ipsum john smith dolor sit amet'
15
- result = ContactData::Deprecated.find_contacts_in(text)
16
- expect(result).to be_a(Hash)
17
+ context 'contact name' do
18
+ it 'finds contact names in text' do
19
+ text = 'lorem ipsum john smith dolor sit amet'
20
+
21
+ VCR.use_cassette('deprecated_contact_name_search') do
22
+ result = ContactData::Deprecated.find_contacts_in(text)
23
+ expect(result).to be_a(Hash)
24
+ end
25
+ end
17
26
  end
18
27
 
19
- it 'finds information about a url' do
20
- url = 'http://www.iana.org/numbers'
21
- result = ContactData::Deprecated.link_metadata(url)
22
- puts result # debug
23
- expect(result).to be_a(Hash)
28
+ context 'link' do
29
+ it 'finds information about a url' do
30
+ url = 'http://www.iana.org/numbers'
31
+
32
+ VCR.use_cassette('deprecated_link_metadata') do
33
+ result = ContactData::Deprecated.link_metadata(url)
34
+ expect(result).to be_a(Hash)
35
+ end
36
+ end
24
37
  end
25
38
  end
@@ -0,0 +1,12 @@
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+ require 'contact-data'
4
+
5
+ describe ContactData::Link do
6
+ it 'gets latest links with related slug' do
7
+ VCR.use_cassette('links_latest') do
8
+ result = ContactData::Link.latest verbose: true
9
+ expect(result).to be_an(Array)
10
+ end
11
+ end
12
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,15 +1,18 @@
1
- # Initialize simplecov for coverage report.
2
1
  require 'simplecov'
3
2
  require 'coveralls'
4
3
  SimpleCov.start
5
4
  Coveralls.wear!('rails') if ENV['COVERALLS_REPO_TOKEN']
6
5
 
6
+ # Requires supporting ruby files with custom matchers and macros, etc,
7
+ # in spec/support/ and its subdirectories.
8
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
9
+
7
10
  RSpec.configure do |config|
8
- # Run specs in random order to surface order dependencies. If you find an
11
+ # Run specs in random order to surface order dependencies. If you find an
9
12
  # order dependency and want to debug it, you can fix the order by providing
10
13
  # the seed, which is printed after each run.
11
14
  # --seed 1234
12
- config.order = "random"
15
+ config.order = 'random'
13
16
 
14
17
  # Manually-added
15
18
  config.color_enabled = true
@@ -0,0 +1,55 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: http://public.xenapto.com/text/find_contacts.json
6
+ body:
7
+ encoding: US-ASCII
8
+ string: text=lorem%20ipsum%20john%20smith%20dolor%20sit%20amet
9
+ headers:
10
+ Accept:
11
+ - "*/*; q=0.5, application/xml"
12
+ Accept-Encoding:
13
+ - gzip, deflate
14
+ Content-Length:
15
+ - '54'
16
+ Content-Type:
17
+ - application/x-www-form-urlencoded
18
+ User-Agent:
19
+ - Ruby
20
+ response:
21
+ status:
22
+ code: 200
23
+ message: OK
24
+ headers:
25
+ Date:
26
+ - Thu, 12 Jun 2014 10:59:28 GMT
27
+ Status:
28
+ - 200 OK
29
+ Connection:
30
+ - close
31
+ Content-Type:
32
+ - application/json; charset=utf-8
33
+ Content-Length:
34
+ - '82'
35
+ X-Ua-Compatible:
36
+ - IE=Edge,chrome=1
37
+ Etag:
38
+ - '"9251905d056c3fe9e82e21beca343642"'
39
+ Cache-Control:
40
+ - max-age=0, private, must-revalidate
41
+ Set-Cookie:
42
+ - _xendata_session=BAh7BkkiD3Nlc3Npb25faWQGOgZFVEkiJWVhYmNlOTZjM2QyODcwM2UyNzFlMmNiNGRkMGI2Y2I5BjsAVA%3D%3D--8e1aa6c22b16cb0bd337cff3b47eb626b7471410;
43
+ path=/; HttpOnly
44
+ X-Request-Id:
45
+ - e3b51f6551e990a0aa31307b47d6b00f
46
+ X-Runtime:
47
+ - '0.373982'
48
+ X-Rack-Cache:
49
+ - invalidate, pass
50
+ body:
51
+ encoding: UTF-8
52
+ string: '{"contacts":["lorem-ipsum","john-smith"],"mentions":[],"emails":[],"version":"v1"}'
53
+ http_version:
54
+ recorded_at: Thu, 12 Jun 2014 10:59:29 GMT
55
+ recorded_with: VCR 2.9.2
@@ -0,0 +1,79 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://public.xenapto.com/name/Derek%20Jones%20III.json
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept:
11
+ - "*/*; q=0.5, application/xml"
12
+ Accept-Encoding:
13
+ - gzip, deflate
14
+ User-Agent:
15
+ - Ruby
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ Date:
22
+ - Thu, 12 Jun 2014 10:53:38 GMT
23
+ Status:
24
+ - 200 OK
25
+ Connection:
26
+ - close
27
+ Content-Type:
28
+ - application/json; charset=utf-8
29
+ Content-Length:
30
+ - '8969'
31
+ X-Ua-Compatible:
32
+ - IE=Edge,chrome=1
33
+ Etag:
34
+ - '"35cd248dfd59f6150cb71b1fbc24e9f1"'
35
+ Cache-Control:
36
+ - max-age=0, private, must-revalidate
37
+ X-Request-Id:
38
+ - 041d78ac9619fdb578fc62a3e2971b73
39
+ X-Runtime:
40
+ - '2.674721'
41
+ X-Rack-Cache:
42
+ - miss
43
+ body:
44
+ encoding: UTF-8
45
+ string: '{"contacts":[{"id":11942383,"updated_at":"2014-06-12T10:16:15Z","source":"fsa","name":"Derek
46
+ Jones","source_slug":"282759","canonical_slug":"derek-jones","website":null,"source_id":282759,"last_fetched":"2014-06-12T10:16:12Z","source_created_at":null,"source_updated_at":null,"contact_type":"person","source_namespace":"indiv","page_link":"http://www.fsa.gov.uk/register/indivBasicDetails.do?sid=282759","api_link":"/indivBasicDetails.do?sid=282759","description":null,"name_is_common_phrase":false,"levenshtein_distance":0,"source_priority":6,"identities":[{"description":"Derek
47
+ Jones","service":"fsa","slug":"dxj00029","updated_at":"2014-06-07T14:29:30Z","url":"http://www.fsa.gov.uk/register//indivbasicdetails.do?sid=282759"},{"description":"Derek
48
+ Jones","service":"avatar","slug":null,"updated_at":"2013-12-12T07:28:47Z","url":null}],"relationships":[],"funding_rounds":[],"links":[]},{"id":11942385,"updated_at":"2014-06-12T10:16:19Z","source":"fsa","name":"Derek
49
+ John Jones","source_slug":"360573","canonical_slug":"derek-jones","website":null,"source_id":360573,"last_fetched":"2014-06-12T10:16:17Z","source_created_at":null,"source_updated_at":null,"contact_type":"person","source_namespace":"indiv","page_link":"http://www.fsa.gov.uk/register/indivBasicDetails.do?sid=360573","api_link":"/indivBasicDetails.do?sid=360573","description":null,"name_is_common_phrase":false,"levenshtein_distance":0,"source_priority":6,"identities":[{"description":"Derek
50
+ John Jones","service":"fsa","slug":"djj01040","updated_at":"2014-06-07T14:29:34Z","url":"http://www.fsa.gov.uk/register//indivbasicdetails.do?sid=360573"},{"description":"Derek
51
+ John Jones","service":"avatar","slug":null,"updated_at":"2013-12-12T07:28:51Z","url":null}],"relationships":[],"funding_rounds":[],"links":[]},{"id":11942384,"updated_at":"2014-06-12T10:16:23Z","source":"fsa","name":"Derek
52
+ Andrew Jones","source_slug":"368843","canonical_slug":"derek-jones","website":null,"source_id":368843,"last_fetched":"2014-06-12T10:16:21Z","source_created_at":null,"source_updated_at":null,"contact_type":"person","source_namespace":"indiv","page_link":"http://www.fsa.gov.uk/register/indivBasicDetails.do?sid=368843","api_link":"/indivBasicDetails.do?sid=368843","description":null,"name_is_common_phrase":false,"levenshtein_distance":0,"source_priority":6,"identities":[{"description":"Derek
53
+ Andrew Jones","service":"fsa","slug":"daj01053","updated_at":"2014-06-07T14:29:38Z","url":"http://www.fsa.gov.uk/register//indivbasicdetails.do?sid=368843"},{"description":"Derek
54
+ Andrew Jones","service":"avatar","slug":null,"updated_at":"2013-12-12T07:28:51Z","url":null}],"relationships":[],"funding_rounds":[],"links":[]},{"id":11942381,"updated_at":"2014-06-12T10:16:28Z","source":"fsa","name":"Derek
55
+ Jones","source_slug":"267093","canonical_slug":"derek-jones","website":null,"source_id":267093,"last_fetched":"2014-06-12T10:16:25Z","source_created_at":null,"source_updated_at":null,"contact_type":"person","source_namespace":"indiv","page_link":"http://www.fsa.gov.uk/register/indivBasicDetails.do?sid=267093","api_link":"/indivBasicDetails.do?sid=267093","description":null,"name_is_common_phrase":false,"levenshtein_distance":0,"source_priority":6,"identities":[{"description":"Derek
56
+ Jones","service":"avatar","slug":null,"updated_at":"2013-12-12T07:28:46Z","url":null},{"description":"Derek
57
+ Jones","service":"fsa","slug":"dxj00016","updated_at":"2014-06-06T23:04:55Z","url":"http://www.fsa.gov.uk/register//indivbasicdetails.do?sid=267093"}],"relationships":[],"funding_rounds":[],"links":[]},{"id":11942382,"updated_at":"2014-06-12T10:16:32Z","source":"fsa","name":"Derek
58
+ Jones","source_slug":"490042","canonical_slug":"derek-jones","website":null,"source_id":490042,"last_fetched":"2014-06-12T10:16:29Z","source_created_at":null,"source_updated_at":null,"contact_type":"person","source_namespace":"indiv","page_link":"http://www.fsa.gov.uk/register/indivBasicDetails.do?sid=490042","api_link":"/indivBasicDetails.do?sid=490042","description":null,"name_is_common_phrase":false,"levenshtein_distance":0,"source_priority":6,"identities":[{"description":"Derek
59
+ Jones","service":"avatar","slug":null,"updated_at":"2013-12-12T07:28:57Z","url":null},{"description":"Derek
60
+ Jones","service":"fsa","slug":"dxj01164","updated_at":"2014-06-06T23:04:59Z","url":"http://www.fsa.gov.uk/register//indivbasicdetails.do?sid=490042"}],"relationships":[],"funding_rounds":[],"links":[]},{"id":11942380,"updated_at":"2014-06-12T10:16:36Z","source":"fsa","name":"Derek
61
+ Jones","source_slug":"729794","canonical_slug":"derek-jones","website":null,"source_id":729794,"last_fetched":"2014-06-12T10:16:33Z","source_created_at":null,"source_updated_at":null,"contact_type":"person","source_namespace":"indiv","page_link":"http://www.fsa.gov.uk/register/indivBasicDetails.do?sid=729794","api_link":"/indivBasicDetails.do?sid=729794","description":null,"name_is_common_phrase":false,"levenshtein_distance":0,"source_priority":6,"identities":[{"description":"Derek
62
+ Jones","service":"fsa","slug":"dxj01321","updated_at":"2014-06-07T14:29:44Z","url":"http://www.fsa.gov.uk/register//indivbasicdetails.do?sid=729794"},{"description":"Derek
63
+ Jones","service":"avatar","slug":null,"updated_at":"2013-12-12T07:29:07Z","url":null}],"relationships":[],"funding_rounds":[],"links":[]},{"id":11942388,"updated_at":"2014-06-12T10:16:39Z","source":"fsa","name":"Derek
64
+ Powell Jones","source_slug":"370909","canonical_slug":"derek-jones","website":null,"source_id":370909,"last_fetched":"2014-06-12T10:16:37Z","source_created_at":null,"source_updated_at":null,"contact_type":"person","source_namespace":"indiv","page_link":"http://www.fsa.gov.uk/register/indivBasicDetails.do?sid=370909","api_link":"/indivBasicDetails.do?sid=370909","description":null,"name_is_common_phrase":false,"levenshtein_distance":0,"source_priority":6,"identities":[{"description":"Derek
65
+ Powell Jones","service":"fsa","slug":"dpj01022","updated_at":"2014-06-07T14:29:48Z","url":"http://www.fsa.gov.uk/register//indivbasicdetails.do?sid=370909"},{"description":"Derek
66
+ Powell Jones","service":"avatar","slug":null,"updated_at":"2013-12-12T07:28:52Z","url":null}],"relationships":[],"funding_rounds":[],"links":[]},{"id":11942387,"updated_at":"2014-06-12T10:16:43Z","source":"fsa","name":"Derek
67
+ Peter Jones","source_slug":"521125","canonical_slug":"derek-jones","website":null,"source_id":521125,"last_fetched":"2014-06-12T10:16:41Z","source_created_at":null,"source_updated_at":null,"contact_type":"person","source_namespace":"indiv","page_link":"http://www.fsa.gov.uk/register/indivBasicDetails.do?sid=521125","api_link":"/indivBasicDetails.do?sid=521125","description":null,"name_is_common_phrase":false,"levenshtein_distance":0,"source_priority":6,"identities":[{"description":"Derek
68
+ Peter Jones","service":"fsa","slug":"dpj01028","updated_at":"2014-06-07T14:29:52Z","url":"http://www.fsa.gov.uk/register//indivbasicdetails.do?sid=521125"},{"description":"Derek
69
+ Peter Jones","service":"avatar","slug":null,"updated_at":"2013-12-12T07:28:59Z","url":null}],"relationships":[],"funding_rounds":[],"links":[]},{"id":11942386,"updated_at":"2014-06-12T10:16:48Z","source":"fsa","name":"Derek
70
+ Leslie Jones","source_slug":"568698","canonical_slug":"derek-jones","website":null,"source_id":568698,"last_fetched":"2014-06-12T10:16:45Z","source_created_at":null,"source_updated_at":null,"contact_type":"person","source_namespace":"indiv","page_link":"http://www.fsa.gov.uk/register/indivBasicDetails.do?sid=568698","api_link":"/indivBasicDetails.do?sid=568698","description":null,"name_is_common_phrase":false,"levenshtein_distance":0,"source_priority":6,"identities":[{"description":"Derek
71
+ Leslie Jones","service":"fsa","slug":"dlj01043","updated_at":"2014-06-07T14:29:56Z","url":"http://www.fsa.gov.uk/register//indivbasicdetails.do?sid=568698"},{"description":"Derek
72
+ Leslie Jones","service":"avatar","slug":null,"updated_at":"2013-12-12T07:29:03Z","url":null}],"relationships":[],"funding_rounds":[],"links":[]},{"id":11942389,"updated_at":"2014-06-12T10:16:53Z","source":"fsa","name":"Derek
73
+ Robert Jones","source_slug":"720500","canonical_slug":"derek-jones","website":null,"source_id":720500,"last_fetched":"2014-06-12T10:16:50Z","source_created_at":null,"source_updated_at":null,"contact_type":"person","source_namespace":"indiv","page_link":"http://www.fsa.gov.uk/register/indivBasicDetails.do?sid=720500","api_link":"/indivBasicDetails.do?sid=720500","description":null,"name_is_common_phrase":false,"levenshtein_distance":0,"source_priority":6,"identities":[{"description":"Derek
74
+ Robert Jones","service":"fsa","slug":"drj01066","updated_at":"2014-06-07T14:30:00Z","url":"http://www.fsa.gov.uk/register//indivbasicdetails.do?sid=720500"},{"description":"Derek
75
+ Robert Jones","service":"avatar","slug":null,"updated_at":"2013-12-12T07:29:06Z","url":null}],"relationships":[],"funding_rounds":[],"links":[]}],"name":"Derek
76
+ Jones","slug":"derek-jones","count":10,"version":"v1"}'
77
+ http_version:
78
+ recorded_at: Thu, 12 Jun 2014 10:53:38 GMT
79
+ recorded_with: VCR 2.9.2