openkvk 0.0.4 → 0.0.5
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.
- data/lib/openkvk/api.rb +7 -3
- data/lib/openkvk/configuration.rb +2 -2
- data/lib/openkvk/version.rb +1 -1
- data/lib/openkvk.rb +6 -0
- data/spec/openkvk_spec.rb +18 -1
- data/spec/spec_helper.rb +4 -0
- metadata +2 -2
data/lib/openkvk/api.rb
CHANGED
@@ -8,6 +8,10 @@ module OpenKVK
|
|
8
8
|
|
9
9
|
class API
|
10
10
|
class << self
|
11
|
+
def search(keywords)
|
12
|
+
JSON.parse(get(keywords, "sphinx")).first["RESULT"]
|
13
|
+
end
|
14
|
+
|
11
15
|
def query(query)
|
12
16
|
result = JSON.parse(get(query)).first["RESULT"]
|
13
17
|
result["ROWS"].map { |row| Hashie::Mash.new(Hash[*result["HEADER"].zip(row).flatten]) }
|
@@ -15,11 +19,11 @@ module OpenKVK
|
|
15
19
|
|
16
20
|
private
|
17
21
|
|
18
|
-
def get(query)
|
22
|
+
def get(query, service="api")
|
19
23
|
begin
|
20
|
-
response = Net::HTTP.get_response(URI.parse("
|
24
|
+
response = Net::HTTP.get_response(URI.parse("http://#{service}.#{OpenKVK.host}/json/#{URI.escape(query)}"))
|
21
25
|
if response.kind_of?(Net::HTTPRedirection)
|
22
|
-
response = Net::HTTP.get_response(URI.parse("
|
26
|
+
response = Net::HTTP.get_response(URI.parse("http://#{service}.#{OpenKVK.host}/#{URI.escape(response["Location"])}"))
|
23
27
|
end
|
24
28
|
response.body
|
25
29
|
rescue Exception => e
|
@@ -4,8 +4,8 @@ module OpenKVK
|
|
4
4
|
# An array of valid keys in the options hash when configuring an {OpenKVK::API}
|
5
5
|
VALID_OPTIONS_KEYS = [:host].freeze
|
6
6
|
|
7
|
-
# By default, set
|
8
|
-
DEFAULT_HOST = "
|
7
|
+
# By default, set openkvk.nl as the server
|
8
|
+
DEFAULT_HOST = "openkvk.nl".freeze
|
9
9
|
|
10
10
|
# @private
|
11
11
|
attr_accessor *VALID_OPTIONS_KEYS
|
data/lib/openkvk/version.rb
CHANGED
data/lib/openkvk.rb
CHANGED
@@ -5,6 +5,12 @@ module OpenKVK
|
|
5
5
|
extend Configuration
|
6
6
|
|
7
7
|
class << self
|
8
|
+
|
9
|
+
def search(keywords)
|
10
|
+
numbers = API.search(keywords)
|
11
|
+
numbers.size > 0 ? API.query("SELECT * FROM kvk WHERE kvk IN (#{numbers.join(", ")})") : []
|
12
|
+
end
|
13
|
+
|
8
14
|
def find(options={})
|
9
15
|
if options.is_a?(String)
|
10
16
|
options = {:conditions => ["bedrijfsnaam LIKE '%#{options}%'", "bedrijfsnaam LIKE '%#{options.to_s.upcase}%'", "bedrijfsnaam LIKE '%#{capitalize_and_format_each_word(options)}%'"], :match_condition => :any}
|
data/spec/openkvk_spec.rb
CHANGED
@@ -59,7 +59,24 @@ describe OpenKVK do
|
|
59
59
|
company.kvk.should == "343774520000"
|
60
60
|
end
|
61
61
|
end
|
62
|
-
|
62
|
+
|
63
|
+
describe ".search" do
|
64
|
+
it "should search for a company with full text search" do
|
65
|
+
expect_search("ZiLvErLiNe", '[{"RESULT":[342838240000,343774520000]}]')
|
66
|
+
expect_query("SELECT * FROM kvk WHERE kvk IN (342838240000, 343774520000)", '[{"RESULT":{"TYPES":["bigint","varchar","int","int","varchar","varchar","varchar","varchar","varchar","varchar","bigint","varchar","decimal","decimal","date"],"HEADER":["kvk","bedrijfsnaam","kvks","sub","adres","postcode","plaats","type","status","website","vestiging","rechtsvorm","lat_rad","lon_rad","anbi"],"ROWS":[["343774520000","Zilverline B.V.","34377452",null,"Science Park 400","1098XH","Amsterdam","Hoofdvestiging",null,null,"19993846",null,"0.913791014","0.086494384",null],["342838240000","Zilverline Beheer B.V.","34283824",null,"Prins Hendriklaan 9","1404AR","Bussum","Hoofdvestiging",null,null,"5062055",null,"0.912472656","0.090085531",null]]}}]')
|
67
|
+
|
68
|
+
companies = OpenKVK.search("ZiLvErLiNe")
|
69
|
+
companies.size.should == 2
|
70
|
+
company = companies.first
|
71
|
+
company.bedrijfsnaam.should == "Zilverline B.V."
|
72
|
+
company.kvk.should == "343774520000"
|
73
|
+
company.adres.should == "Science Park 400"
|
74
|
+
company.postcode.should == "1098XH"
|
75
|
+
company.plaats.should == "Amsterdam"
|
76
|
+
company.type.should == "Hoofdvestiging"
|
77
|
+
company.website.should be nil
|
78
|
+
end
|
79
|
+
end
|
63
80
|
|
64
81
|
describe ".find_by_bedrijfsnaam" do
|
65
82
|
it "should find a company" do
|
data/spec/spec_helper.rb
CHANGED
@@ -14,4 +14,8 @@ def expect_query(sql, response)
|
|
14
14
|
OpenKVK::API.expects(:get).with(sql).returns(response)
|
15
15
|
end
|
16
16
|
|
17
|
+
def expect_search(keywords, response)
|
18
|
+
OpenKVK::API.expects(:get).with(keywords, "sphinx").returns(response)
|
19
|
+
end
|
20
|
+
|
17
21
|
load File.expand_path('../../lib/openkvk.rb', __FILE__)
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: openkvk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.0.
|
5
|
+
version: 0.0.5
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Daniel van Hoesel
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date:
|
13
|
+
date: 2012-04-05 00:00:00 +02:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|