ratsit 0.0.1 → 0.0.2
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 +4 -4
- data/README.md +2 -0
- data/lib/ratsit.rb +82 -58
- data/lib/ratsit/errors.rb +3 -0
- data/lib/ratsit/filter/filter.rb +212 -0
- data/lib/ratsit/filter/filter_company.rb +27 -0
- data/lib/ratsit/filter/filter_get_annual_report.rb +21 -0
- data/lib/ratsit/filter/filter_get_companies.rb +27 -0
- data/lib/ratsit/filter/filter_get_company_information_package.rb +23 -0
- data/lib/ratsit/filter/filter_get_person_information_package.rb +23 -0
- data/lib/ratsit/filter/filter_person.rb +30 -0
- data/lib/ratsit/filter/filter_search_one_person.rb +26 -0
- data/lib/ratsit/filter/filter_search_persons.rb +34 -0
- data/lib/ratsit/request/open_request.rb +65 -0
- data/lib/ratsit/request/request.rb +48 -0
- data/lib/ratsit/request/request_get_companies.rb +46 -0
- data/lib/ratsit/request/request_search_one_person.rb +41 -0
- data/lib/ratsit/request/request_search_persons.rb +47 -0
- data/lib/ratsit/request/token_request.rb +35 -0
- data/lib/ratsit/version.rb +2 -1
- data/ratsit.gemspec +3 -2
- metadata +35 -9
- data/lib/ratsit/filters.rb +0 -155
- data/lib/ratsit/package.rb +0 -22
- data/lib/ratsit/person.rb +0 -39
- data/lib/ratsit/request.rb +0 -80
- data/lib/ratsit/search_type.rb +0 -19
@@ -0,0 +1,27 @@
|
|
1
|
+
|
2
|
+
require 'ratsit/errors'
|
3
|
+
require 'ratsit/filter/filter'
|
4
|
+
|
5
|
+
module Ratsit
|
6
|
+
module Filter
|
7
|
+
|
8
|
+
class GetCompaniesFilter < Ratsit::Filter::RatsitFilter
|
9
|
+
include Ratsit::Filter
|
10
|
+
|
11
|
+
def initialize(filters={})
|
12
|
+
super()
|
13
|
+
@filter_defaults = {
|
14
|
+
FILTER_TOKEN => {:parse => method(:parse_string), :default => Ratsit.get_api_key()},
|
15
|
+
FILTER_COMPANY_NAME => {:parse => method(:parse_string), :default => ''},
|
16
|
+
FILTER_ADDRESS => {:parse => method(:parse_string), :default => ''},
|
17
|
+
FILTER_ZIP_CODE => {:parse => method(:parse_string), :default => ''},
|
18
|
+
FILTER_CITY => {:parse => method(:parse_string), :default => ''},
|
19
|
+
FILTER_PHONE => {:parse => method(:parse_string), :default => ''},
|
20
|
+
FILTER_COMPANY_TYPE => {:parse => method(:parse_list), :default => '', :validate => method(:validate_company_types)}
|
21
|
+
}
|
22
|
+
@active_filters = validate_filters(@filter_defaults, filters)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
|
2
|
+
require 'ratsit/errors'
|
3
|
+
require 'ratsit/filter/filter'
|
4
|
+
|
5
|
+
module Ratsit
|
6
|
+
module Filter
|
7
|
+
|
8
|
+
class GetCompanyInformationPackageFilter < Ratsit::Filter::RatsitFilter
|
9
|
+
include Ratsit::Filter
|
10
|
+
|
11
|
+
def initialize(filters={})
|
12
|
+
super()
|
13
|
+
@filter_defaults = {
|
14
|
+
FILTER_TOKEN => {:parse => method(:parse_string), :default => Ratsit.get_api_key()},
|
15
|
+
FILTER_PACKAGES => {:parse => method(:parse_string), :default => '', :validate => method(:validate_package_types)},
|
16
|
+
FILTER_ORG_NR => {:parse => method(:parse_string), :default => ''}
|
17
|
+
}
|
18
|
+
@active_filters = validate_filters(@filter_defaults, filters)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
|
2
|
+
require 'ratsit/errors'
|
3
|
+
require 'ratsit/filter/filter'
|
4
|
+
|
5
|
+
module Ratsit
|
6
|
+
module Filter
|
7
|
+
|
8
|
+
class GetPersonInformationPackageFilter < Ratsit::Filter::RatsitFilter
|
9
|
+
include Ratsit::Filter
|
10
|
+
|
11
|
+
def initialize(filters={})
|
12
|
+
super()
|
13
|
+
@filter_defaults = {
|
14
|
+
FILTER_TOKEN => {:parse => method(:parse_string), :default => Ratsit.get_api_key()},
|
15
|
+
FILTER_PACKAGES => {:parse => method(:parse_string), :default => '', :validate => method(:validate_package_types)},
|
16
|
+
FILTER_PNR => {:parse => method(:parse_string), :default => ''}
|
17
|
+
}
|
18
|
+
@active_filters = validate_filters(@filter_defaults, filters)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
|
2
|
+
require 'ratsit/errors'
|
3
|
+
require 'ratsit/filter/filter'
|
4
|
+
|
5
|
+
module Ratsit
|
6
|
+
module Filter
|
7
|
+
|
8
|
+
|
9
|
+
|
10
|
+
class PersonFilter < Ratsit::Filter::RatsitFilter
|
11
|
+
include Ratsit::Filter
|
12
|
+
#{"Married":true,"Unmarried":true,"Male":true,"Female":true,"CompanyEngagement":true,"NoCompanyEngagement":true,"AgeFrom":"0","AgeTo":"150"}
|
13
|
+
def initialize(filters={})
|
14
|
+
super()
|
15
|
+
@filter_defaults = {
|
16
|
+
FILTER_MARRIED => {:parse => method(:parse_bool), :default => true},
|
17
|
+
FILTER_UNMARRIED => {:parse => method(:parse_bool), :default => true},
|
18
|
+
FILTER_MALE => {:parse => method(:parse_bool), :default => true},
|
19
|
+
FILTER_FEMALE => {:parse => method(:parse_bool), :default => true},
|
20
|
+
FILTER_COMPANY_ENGAGEMENT => {:parse => method(:parse_bool), :default => true},
|
21
|
+
FILTER_NO_COMPANY_ENGAGEMENT => {:parse => method(:parse_bool), :default => true},
|
22
|
+
FILTER_AGE_FROM => {:parse => method(:parse_age), :default => '0'},
|
23
|
+
FILTER_AGE_TO => {:parse => method(:parse_age), :default => '150'}
|
24
|
+
}
|
25
|
+
@active_filters = validate_filters(@filter_defaults, filters)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
|
2
|
+
require 'ratsit/errors'
|
3
|
+
require 'ratsit/filter/filter'
|
4
|
+
|
5
|
+
module Ratsit
|
6
|
+
module Filter
|
7
|
+
|
8
|
+
class SearchOnePersonFilter < Ratsit::Filter::RatsitFilter
|
9
|
+
include Ratsit::Filter
|
10
|
+
|
11
|
+
def initialize(filters={})
|
12
|
+
super()
|
13
|
+
@filter_defaults = {
|
14
|
+
FILTER_TOKEN => {:parse => method(:parse_string), :default => Ratsit.get_api_key()},
|
15
|
+
FILTER_PACKAGES => {:parse => method(:parse_list), :default => '', :validate => method(:validate_package_types)},
|
16
|
+
FILTER_FIRST_NAME => {:parse => method(:parse_string), :default => ''},
|
17
|
+
FILTER_LAST_NAME => {:parse => method(:parse_string), :default => ''},
|
18
|
+
FILTER_SSN => {:parse => method(:parse_string), :default => ''},
|
19
|
+
FILTER_USE_PHONETIC_SEARCH => {:parse => method(:parse_bool_string), :default => 'false'}
|
20
|
+
}
|
21
|
+
@active_filters = validate_filters(@filter_defaults, filters)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
|
2
|
+
require 'ratsit/errors'
|
3
|
+
require 'ratsit/filter/filter'
|
4
|
+
|
5
|
+
module Ratsit
|
6
|
+
module Filter
|
7
|
+
|
8
|
+
class SearchPersonsFilter < Ratsit::Filter::RatsitFilter
|
9
|
+
include Ratsit::Filter
|
10
|
+
|
11
|
+
def initialize(filters={})
|
12
|
+
super()
|
13
|
+
@filter_defaults = {
|
14
|
+
FILTER_TOKEN => {:parse => method(:parse_string), :default => Ratsit.get_api_key()},
|
15
|
+
FILTER_PACKAGES => {:parse => method(:parse_string), :default => '', :validate => method(:validate_package_types)},
|
16
|
+
FILTER_FIRST_NAME => {:parse => method(:parse_string), :default => ''},
|
17
|
+
FILTER_LAST_NAME => {:parse => method(:parse_string), :default => ''},
|
18
|
+
FILTER_SSN => {:parse => method(:parse_string), :default => ''},
|
19
|
+
FILTER_ADDRESS => {:parse => method(:parse_string), :default => ''},
|
20
|
+
FILTER_ZIP_CODE => {:parse => method(:parse_string), :default => ''},
|
21
|
+
FILTER_CITY => {:parse => method(:parse_string), :default => ''},
|
22
|
+
FILTER_MUNICIPALITY => {:parse => method(:parse_string), :default => ''},
|
23
|
+
FILTER_USE_PHONETIC_SEARCH => {:parse => method(:parse_bool), :default => false},
|
24
|
+
FILTER_SEARCH_AGE => {:parse => method(:parse_bool), :default => false},
|
25
|
+
FILTER_AGE_FROM => {:parse => method(:parse_age), :default => '0'},
|
26
|
+
FILTER_AGE_TO => {:parse => method(:parse_age), :default => '150'},
|
27
|
+
FILTER_NUMBER_OF_HITS => {:parse => method(:parse_int), :default => 100}
|
28
|
+
}
|
29
|
+
@active_filters = validate_filters(@filter_defaults, filters)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
|
2
|
+
require 'faraday'
|
3
|
+
require 'uri'
|
4
|
+
require 'json'
|
5
|
+
|
6
|
+
require 'ratsit/errors'
|
7
|
+
require 'ratsit/request/request'
|
8
|
+
|
9
|
+
|
10
|
+
module Ratsit
|
11
|
+
module Request
|
12
|
+
OPEN_REQUEST_EPTS = {
|
13
|
+
:person => 'PersonSearch',
|
14
|
+
:company => 'CompanySearch'
|
15
|
+
}
|
16
|
+
class OpenRequest < Ratsit::Request::RatsitRequest
|
17
|
+
|
18
|
+
def initialize(ept, search_term, search_area, filter_instance)
|
19
|
+
if !Ratsit::Request::OPEN_REQUEST_EPTS.values.include?(ept)
|
20
|
+
raise RatsitRequestError, 'Invalid endpoint specified'
|
21
|
+
end
|
22
|
+
if !search_term.instance_of?(String) || search_term.length == 0
|
23
|
+
raise RatsitRequestError, 'Invalid search term'
|
24
|
+
end
|
25
|
+
if !search_area.instance_of?(String)
|
26
|
+
raise RatsitRequestError, 'Invalid search area'
|
27
|
+
end
|
28
|
+
@ept = ept
|
29
|
+
@search_area = search_area
|
30
|
+
@search_term = search_term
|
31
|
+
@filter_instance = filter_instance || {}
|
32
|
+
super()
|
33
|
+
end
|
34
|
+
|
35
|
+
def exec
|
36
|
+
uri = URI.parse("http://www.ratsit.se/BC/SearchSimple.aspx/#{@ept}")
|
37
|
+
conn = Faraday.new(:url => "#{uri.scheme}://#{uri.host}")
|
38
|
+
@response = conn.post do |req|
|
39
|
+
req.url uri.request_uri
|
40
|
+
req.headers['Content-Type'] = 'application/json'
|
41
|
+
req.body = self.request_body
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def request_body
|
46
|
+
{
|
47
|
+
'who': @search_term,
|
48
|
+
'where': @search_area,
|
49
|
+
'filter': @filter_instance.to_json
|
50
|
+
}.to_json
|
51
|
+
end
|
52
|
+
|
53
|
+
def response_ok
|
54
|
+
return false if @response.nil?
|
55
|
+
@response.status == 200
|
56
|
+
end
|
57
|
+
|
58
|
+
def response_body
|
59
|
+
return nil if @response.nil?
|
60
|
+
@response.body
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
|
2
|
+
require 'ratsit/errors'
|
3
|
+
|
4
|
+
|
5
|
+
module Ratsit
|
6
|
+
module Request
|
7
|
+
class RatsitRequest
|
8
|
+
|
9
|
+
def abstract(msg=nil)
|
10
|
+
_msg = msg || 'This class should not be used directly'
|
11
|
+
raise RatsitAbstractError, _msg
|
12
|
+
end
|
13
|
+
|
14
|
+
def initialize()
|
15
|
+
@abstract_interface_msg = 'This interface is abstract. Implement method in subclass'
|
16
|
+
if self.instance_of?(RatsitRequest)
|
17
|
+
abstract
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def exec()
|
22
|
+
abstract @abstract_interface_msg
|
23
|
+
end
|
24
|
+
|
25
|
+
def response_ok
|
26
|
+
abstract @abstract_interface_msg
|
27
|
+
end
|
28
|
+
|
29
|
+
def response_body
|
30
|
+
abstract @abstract_interface_msg
|
31
|
+
end
|
32
|
+
|
33
|
+
def parseFilterArgs(args, filter_class)
|
34
|
+
if args.nil?
|
35
|
+
raise RatsitFilterError, 'Invalid args to function'
|
36
|
+
end
|
37
|
+
if args.instance_of?(filter_class)
|
38
|
+
return args
|
39
|
+
end
|
40
|
+
if args.is_a?(Hash)
|
41
|
+
return filter_class.new(args)
|
42
|
+
end
|
43
|
+
raise RatsitFilterError, 'Invalid args to function'
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
|
2
|
+
require 'json'
|
3
|
+
|
4
|
+
require 'ratsit/errors'
|
5
|
+
require 'ratsit/request/request'
|
6
|
+
require 'ratsit/request/token_request'
|
7
|
+
|
8
|
+
require 'ratsit/filter/filter_get_companies'
|
9
|
+
|
10
|
+
|
11
|
+
=begin
|
12
|
+
{"get_companies_response":{
|
13
|
+
"get_companies_result":{
|
14
|
+
"ratsit_response_package":{
|
15
|
+
"retreived":"92",
|
16
|
+
"total_matched":"92",
|
17
|
+
"company":[
|
18
|
+
=end
|
19
|
+
|
20
|
+
module Ratsit
|
21
|
+
module Request
|
22
|
+
class GetCompaniesRequest < Ratsit::Request::TokenRequest
|
23
|
+
|
24
|
+
def initialize(args)
|
25
|
+
super('GetCompanies', parseFilterArgs(args, Ratsit::Filter::GetCompaniesFilter))
|
26
|
+
end
|
27
|
+
|
28
|
+
def response
|
29
|
+
if response_ok
|
30
|
+
rsp = @response.body[:get_companies_response][:get_companies_result][:ratsit_response_package] || nil
|
31
|
+
if rsp.nil?
|
32
|
+
raise RatsitError, 'Invalid response from service'
|
33
|
+
end
|
34
|
+
# :retreived (sic!)
|
35
|
+
return {
|
36
|
+
:retrieved => rsp[:retreived].to_i,
|
37
|
+
:total_matched => rsp[:total_matched].to_i,
|
38
|
+
:companies => rsp[:company]
|
39
|
+
}
|
40
|
+
end
|
41
|
+
raise RatsitError, 'Response not ready'
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
|
2
|
+
require 'json'
|
3
|
+
|
4
|
+
require 'ratsit/errors'
|
5
|
+
require 'ratsit/request/request'
|
6
|
+
require 'ratsit/request/token_request'
|
7
|
+
|
8
|
+
require 'ratsit/filter/filter_search_one_person'
|
9
|
+
|
10
|
+
=begin
|
11
|
+
{
|
12
|
+
:search_one_person_response =>
|
13
|
+
{:search_one_person_result =>
|
14
|
+
{:ratsit_response_package =>
|
15
|
+
{:person_search_result =>
|
16
|
+
{:hits =>
|
17
|
+
{:hit=>
|
18
|
+
=end
|
19
|
+
|
20
|
+
module Ratsit
|
21
|
+
module Request
|
22
|
+
class SearchOnePersonRequest < Ratsit::Request::TokenRequest
|
23
|
+
|
24
|
+
def initialize(args)
|
25
|
+
super('SearchOnePerson', parseFilterArgs(args, Ratsit::Filter::SearchOnePersonFilter))
|
26
|
+
end
|
27
|
+
|
28
|
+
def response
|
29
|
+
if response_ok
|
30
|
+
rsp = @response.body[:search_one_person_response][:search_one_person_result][:ratsit_response_package][:person_search_result][:hits][:hit] || nil
|
31
|
+
if rsp.nil?
|
32
|
+
raise RatsitError, 'Invalid response from service'
|
33
|
+
end
|
34
|
+
return rsp
|
35
|
+
end
|
36
|
+
raise RatsitError, 'Response not ready'
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
|
2
|
+
require 'json'
|
3
|
+
|
4
|
+
require 'ratsit/errors'
|
5
|
+
require 'ratsit/request/request'
|
6
|
+
require 'ratsit/request/token_request'
|
7
|
+
|
8
|
+
require 'ratsit/filter/filter_search_persons'
|
9
|
+
|
10
|
+
=begin
|
11
|
+
{"search_persons_response":
|
12
|
+
{"search_persons_result":
|
13
|
+
{"ratsit_response_package":
|
14
|
+
{"person_search_result":
|
15
|
+
{"hits":
|
16
|
+
{"hit": Array || Object
|
17
|
+
|
18
|
+
=end
|
19
|
+
|
20
|
+
module Ratsit
|
21
|
+
module Request
|
22
|
+
class SearchPersonsRequest < Ratsit::Request::TokenRequest
|
23
|
+
|
24
|
+
def initialize(args)
|
25
|
+
super('SearchPersons', parseFilterArgs(args, Ratsit::Filter::SearchPersonsFilter))
|
26
|
+
end
|
27
|
+
|
28
|
+
def response
|
29
|
+
if response_ok
|
30
|
+
rsp = @response.body[:search_persons_response][:search_persons_result][:ratsit_response_package][:person_search_result][:hits][:hit] || nil
|
31
|
+
if rsp.nil?
|
32
|
+
raise RatsitError, 'Invalid response from service'
|
33
|
+
end
|
34
|
+
if rsp.is_a?(Hash)
|
35
|
+
rsp = [rsp]
|
36
|
+
end
|
37
|
+
return {
|
38
|
+
:retrieved => rsp.length,
|
39
|
+
:persons => rsp
|
40
|
+
}
|
41
|
+
end
|
42
|
+
raise RatsitError, 'Response not ready'
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
|
2
|
+
require 'savon'
|
3
|
+
require 'json'
|
4
|
+
require 'ratsit/monkey'
|
5
|
+
require 'ratsit/request/request'
|
6
|
+
|
7
|
+
module Ratsit
|
8
|
+
module Request
|
9
|
+
# should define epts here
|
10
|
+
class TokenRequest < Ratsit::Request::RatsitRequest
|
11
|
+
|
12
|
+
def initialize(ept, filter_instance)
|
13
|
+
super()
|
14
|
+
@ept = ept
|
15
|
+
@filter_instance = filter_instance
|
16
|
+
end
|
17
|
+
|
18
|
+
def exec()
|
19
|
+
begin
|
20
|
+
# debug args: , log_level: :debug, log: true
|
21
|
+
client = Savon.client(wsdl: "https://www.ratsit.se/ratsvc/apipackageservice.asmx?WSDL")
|
22
|
+
@response = client.call(@ept.underscore.to_sym, message: @filter_instance.to_obj)
|
23
|
+
rescue Savon::Error => error
|
24
|
+
raise RatsitError, 'Provider error'
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def response_ok
|
29
|
+
return false if @response.nil?
|
30
|
+
return (@response.success? && !@response.soap_fault? && !@response.http_error?)
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|