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.
@@ -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