contact-data 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
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