ratsit 0.0.1 → 0.0.2

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