ratsit 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2e5949f1ca309cd41832cb8f648f0f51e6957302
|
4
|
+
data.tar.gz: 53be756f285f8a21e755a09c62428b2b588abe00
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bf45d638a1fd05c20c29fe7ebf3c9ea49d85826dc195797ffbf1171c97d7b386494cb5438a4d111e64a176b47b2955316e43ef5c8bf6296563caef0986bc372c
|
7
|
+
data.tar.gz: be59024c037d0b9597d2ed7168a46d1fc45331a985a4b909fb9b9f3e16ce6d0b09206b06d9938b7a927c53b3742843d2441c6d43f6346020f49d1679ea9bc31c
|
data/README.md
CHANGED
data/lib/ratsit.rb
CHANGED
@@ -1,82 +1,106 @@
|
|
1
|
-
|
2
|
-
require 'ratsit/package'
|
3
|
-
require 'ratsit/search_type'
|
4
|
-
require 'ratsit/request'
|
5
|
-
require 'ratsit/filters'
|
1
|
+
|
6
2
|
require 'ratsit/errors'
|
7
|
-
require '
|
3
|
+
require 'ratsit/monkey'
|
4
|
+
require 'ratsit/version'
|
8
5
|
|
9
|
-
|
6
|
+
require 'ratsit/filter/filter'
|
7
|
+
require 'ratsit/filter/filter_company'
|
8
|
+
require 'ratsit/filter/filter_get_annual_report'
|
9
|
+
require 'ratsit/filter/filter_get_companies'
|
10
|
+
require 'ratsit/filter/filter_get_company_information_package'
|
11
|
+
require 'ratsit/filter/filter_get_person_information_package'
|
12
|
+
require 'ratsit/filter/filter_person'
|
13
|
+
require 'ratsit/filter/filter_search_one_person'
|
14
|
+
require 'ratsit/filter/filter_search_persons'
|
10
15
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
+
require 'ratsit/request/request'
|
17
|
+
require 'ratsit/request/open_request'
|
18
|
+
require 'ratsit/request/token_request'
|
19
|
+
require 'ratsit/request/request_get_companies'
|
20
|
+
require 'ratsit/request/request_search_one_person'
|
21
|
+
require 'ratsit/request/request_search_persons'
|
16
22
|
|
17
|
-
class RatsitSearch
|
18
23
|
|
19
|
-
|
20
|
-
attr_reader :results
|
24
|
+
module Ratsit
|
21
25
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
@api_key = @env_api_key
|
26
|
+
def Ratsit.get_api_key
|
27
|
+
key_key = 'RATSIT_API_KEY'
|
28
|
+
if ENV[key_key].nil?
|
29
|
+
raise RatsitError, 'No api key specified'
|
27
30
|
end
|
31
|
+
return ENV[key_key]
|
32
|
+
end
|
28
33
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
end
|
33
|
-
if search_arg.length == 0
|
34
|
-
raise RatsitError, 'Invalid search argument length'
|
35
|
-
end
|
36
|
-
if !search_area.is_a?(String)
|
37
|
-
raise RatsitError, 'Invalid search area'
|
38
|
-
end
|
39
|
-
request_class = (!@api_key.nil?)? Ratsit::RatsitTokenRequest: Ratsit::RatsitOpenRequest
|
40
|
-
@request = request_class.new(search_arg, search_area, @search_type, @filter)
|
41
|
-
@request.exec()
|
42
|
-
# check this...
|
43
|
-
if @request.response_ok
|
44
|
-
#puts "response ok"
|
45
|
-
#@results = @request.response_body.to_json
|
46
|
-
@results = @request.response_body
|
47
|
-
else
|
48
|
-
@results = nil
|
49
|
-
end
|
50
|
-
@results
|
34
|
+
def Ratsit.OpenPersonSearch(search_term, search_area, filter_instance=nil)
|
35
|
+
if !filter_instance.nil? && !filter_instance.instance_of?(Ratsit::Filter::PersonFilter)
|
36
|
+
raise RatsitFilterError, 'Invalid filter given to function'
|
51
37
|
end
|
38
|
+
req = Ratsit::Request::OpenRequest.new(Ratsit::Request::OPEN_REQUEST_EPTS[:person], search_term, search_area, filter_instance || Ratsit::Filter::PersonFilter.new())
|
39
|
+
req.exec()
|
40
|
+
if req.response_ok
|
41
|
+
return req.response_body
|
42
|
+
end
|
43
|
+
nil
|
44
|
+
end
|
52
45
|
|
46
|
+
def Ratsit.OpenCompanySearch(search_term, search_area, filter_instance=nil)
|
47
|
+
if !filter_instance.nil? && !filter_instance.instance_of?(Ratsit::Filter::CompanyFilter)
|
48
|
+
raise RatsitFilterError, 'Invalid filter given to function'
|
49
|
+
end
|
50
|
+
req = Ratsit::Request::OpenRequest.new(Ratsit::Request::OPEN_REQUEST_EPTS[:company], search_term, search_area, filter_instance || Ratsit::Filter::CompanyFilter.new())
|
51
|
+
req.exec()
|
52
|
+
if req.response_ok
|
53
|
+
return req.response_body
|
54
|
+
end
|
55
|
+
nil
|
53
56
|
end
|
54
57
|
|
55
|
-
|
58
|
+
def Ratsit.doTokenRequest(req_class, filter_args)
|
59
|
+
req = req_class.new(filter_args)
|
60
|
+
puts req
|
61
|
+
req.exec()
|
62
|
+
return req.response
|
63
|
+
nil
|
64
|
+
end
|
56
65
|
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
end
|
66
|
+
def Ratsit.SearchCompanies(args=nil)
|
67
|
+
return Ratsit.doTokenRequest(Ratsit::Request::GetCompaniesRequest, args)
|
68
|
+
end
|
61
69
|
|
70
|
+
def Ratsit.SearchOnePerson(args=nil)
|
71
|
+
return Ratsit.doTokenRequest(Ratsit::Request::SearchOnePersonRequest, args)
|
62
72
|
end
|
63
73
|
|
64
|
-
|
74
|
+
def Ratsit.SearchPersons(args=nil)
|
75
|
+
return Ratsit.doTokenRequest(Ratsit::Request::SearchPersonsRequest, args)
|
76
|
+
end
|
65
77
|
|
66
|
-
def initialize()
|
67
|
-
super(Ratsit::SEARCH_TYPE_COMPANY, Ratsit::CompanyFilter.new())
|
68
|
-
self
|
69
|
-
end
|
70
78
|
|
79
|
+
end
|
80
|
+
|
81
|
+
=begin
|
82
|
+
def Ratsit.GetAnnualReport(args=nil)
|
83
|
+
return Ratsit.doTokenRequest('GetAnnualReport', Ratsit.parseFilterArgs(args, Ratsit::Filter::GetAnnualReportFilter))
|
71
84
|
end
|
72
85
|
|
73
|
-
|
86
|
+
def Ratsit.GetCompanies(args=nil)
|
87
|
+
return Ratsit.doTokenRequest('GetCompanies', Ratsit.parseFilterArgs(args, Ratsit::Filter::GetCompaniesFilter))
|
88
|
+
end
|
74
89
|
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
end
|
90
|
+
def Ratsit.GetCompanyInformationPackage(args=nil)
|
91
|
+
return Ratsit.doTokenRequest('GetCompanyInformationPackage', Ratsit.parseFilterArgs(args, Ratsit::Filter::GetCompanyInformationPackageFilter))
|
92
|
+
end
|
79
93
|
|
94
|
+
def Ratsit.GetPersonInformationPackage(args=nil)
|
95
|
+
return Ratsit.doTokenRequest('GetPersonInformationPackage', Ratsit.parseFilterArgs(args, Ratsit::Filter::GetPersonInformationPackageFilter))
|
80
96
|
end
|
81
97
|
|
82
|
-
|
98
|
+
def Ratsit.SearchOnePerson(args=nil)
|
99
|
+
return Ratsit.doTokenRequest('SearchOnePerson', Ratsit.parseFilterArgs(args, Ratsit::Filter::SearchOnePersonFilter))
|
100
|
+
end
|
101
|
+
|
102
|
+
def Ratsit.SearchPersons(args=nil)
|
103
|
+
return Ratsit.doTokenRequest('SearchPersons', Ratsit.parseFilterArgs(args, Ratsit::Filter::SearchPersonsFilter))
|
104
|
+
end
|
105
|
+
=end
|
106
|
+
|
data/lib/ratsit/errors.rb
CHANGED
@@ -0,0 +1,212 @@
|
|
1
|
+
|
2
|
+
require 'json'
|
3
|
+
require 'ratsit/errors'
|
4
|
+
|
5
|
+
module Ratsit
|
6
|
+
module Filter
|
7
|
+
|
8
|
+
# Person filters
|
9
|
+
FILTER_MARRIED = 'Married'
|
10
|
+
FILTER_UNMARRIED = 'Unmarried'
|
11
|
+
FILTER_MALE = 'Male'
|
12
|
+
FILTER_FEMALE = 'Female'
|
13
|
+
FILTER_COMPANY_ENGAGEMENT = 'CompanyEngagement'
|
14
|
+
FILTER_NO_COMPANY_ENGAGEMENT = 'NoCompanyEngagement'
|
15
|
+
FILTER_AGE_FROM = 'AgeFrom'
|
16
|
+
FILTER_AGE_TO = 'AgeTo'
|
17
|
+
|
18
|
+
FILTER_FIRST_NAME = 'firstName'
|
19
|
+
FILTER_LAST_NAME = 'lastName'
|
20
|
+
FILTER_SSN = 'ssn'
|
21
|
+
FILTER_USE_PHONETIC_SEARCH = 'usePhoneticSearch'
|
22
|
+
|
23
|
+
# Company filters
|
24
|
+
FILTER_AB = 'AB'
|
25
|
+
FILTER_EF = 'EF'
|
26
|
+
FILTER_HB = 'HB'
|
27
|
+
FILTER_KB = 'KB'
|
28
|
+
FILTER_HB_KB = "#{FILTER_HB}/#{FILTER_KB}"
|
29
|
+
FILTER_OTHER = 'Other'
|
30
|
+
|
31
|
+
|
32
|
+
# token filters
|
33
|
+
FILTER_TOKEN = 'token'
|
34
|
+
FILTER_IDS = 'IDs'
|
35
|
+
FILTER_COMPANY_NAME = 'companyName'
|
36
|
+
FILTER_ADDRESS = 'address'
|
37
|
+
FILTER_ZIP_CODE = 'zipCode'
|
38
|
+
FILTER_CITY = 'city'
|
39
|
+
FILTER_MUNICIPALITY = 'municipality'
|
40
|
+
FILTER_PHONE = 'phone'
|
41
|
+
FILTER_COMPANY_TYPE = 'companyType'
|
42
|
+
FILTER_SEARCH_AGE = 'searchAge'
|
43
|
+
|
44
|
+
FILTER_PACKAGES = 'packages'
|
45
|
+
FILTER_ORG_NR = 'orgnr'
|
46
|
+
FILTER_PNR = 'pnr'
|
47
|
+
|
48
|
+
FILTER_NUMBER_OF_HITS = 'numberOfHits'
|
49
|
+
|
50
|
+
FILTER_PACKAGE_SMALL_1 = 'small 1'
|
51
|
+
FILTER_PACKAGE_SMALL_2 = 'small 2'
|
52
|
+
FILTER_PACKAGE_SMALL_3 = 'small 3'
|
53
|
+
FILTER_PACKAGE_REMARK = 'anmärkning'
|
54
|
+
FILTER_PACKAGE_MEDIUM = 'medium'
|
55
|
+
FILTER_PACKAGE_LARGE = 'large'
|
56
|
+
|
57
|
+
class RatsitFilter
|
58
|
+
|
59
|
+
def abstract(msg=nil)
|
60
|
+
_msg = msg || 'This class should not be used directly'
|
61
|
+
raise RatsitAbstractError, _msg
|
62
|
+
end
|
63
|
+
|
64
|
+
def initialize()
|
65
|
+
@abstract_interface_msg = 'This interface is abstract. Implement method in subclass'
|
66
|
+
if self.instance_of?(RatsitFilter)
|
67
|
+
abstract
|
68
|
+
end
|
69
|
+
@active_filters = {}
|
70
|
+
@filter_defaults = {}
|
71
|
+
end
|
72
|
+
|
73
|
+
def active_filters
|
74
|
+
return (@active_filters.nil?)? nil: @active_filters
|
75
|
+
end
|
76
|
+
|
77
|
+
def to_json
|
78
|
+
af = self.active_filters
|
79
|
+
return '{}' if af.nil?
|
80
|
+
af.to_json
|
81
|
+
end
|
82
|
+
|
83
|
+
def to_obj
|
84
|
+
@active_filters
|
85
|
+
end
|
86
|
+
|
87
|
+
def update(filter_key='', filter_value)
|
88
|
+
#puts "update #{filter_key}: #{filter_value}"
|
89
|
+
if !filter_key.is_a?(String)
|
90
|
+
raise RatsitFilterError, 'Invalid filter key'
|
91
|
+
end
|
92
|
+
if filter_value.nil?
|
93
|
+
raise RatsitFilterError, 'Invalid filter value'
|
94
|
+
end
|
95
|
+
if !@active_filters.has_key?(filter_key)
|
96
|
+
raise RatsitFilterError, 'Non-existent filter key'
|
97
|
+
end
|
98
|
+
@curr_filters = Marshal.load(Marshal.dump(@active_filters))
|
99
|
+
@curr_filters[filter_key] = filter_value
|
100
|
+
@active_filters = validate_filters(@filter_defaults, @curr_filters)
|
101
|
+
end
|
102
|
+
|
103
|
+
def reset(filter_name='')
|
104
|
+
if !filter_name.is_a?(String)
|
105
|
+
raise RatsitFilterError, 'Invalid filter key'
|
106
|
+
end
|
107
|
+
if !@filter_defaults.has_key?(filter_name)
|
108
|
+
raise RatsitFilterError, 'Non-existent filter key'
|
109
|
+
end
|
110
|
+
@active_filters[filter_name] = @filter_defaults[filter_name][:default]
|
111
|
+
end
|
112
|
+
|
113
|
+
end
|
114
|
+
|
115
|
+
private
|
116
|
+
|
117
|
+
def parse_string(arg)
|
118
|
+
return arg if arg.is_a?(String)
|
119
|
+
raise RatsitFilterError, 'Invalid string'
|
120
|
+
end
|
121
|
+
|
122
|
+
def parse_bool(arg)
|
123
|
+
return arg if arg.is_a?(TrueClass) || arg.is_a?(FalseClass)
|
124
|
+
raise RatsitFilterError, 'Invalid bool representation' if !arg.is_a?(String)
|
125
|
+
return true if arg.downcase == 'true'
|
126
|
+
return false if arg.downcase == 'false'
|
127
|
+
raise RatsitFilterError, 'Invalid textual bool value'
|
128
|
+
end
|
129
|
+
|
130
|
+
def parse_bool_string(arg)
|
131
|
+
return arg if arg == 'true' || arg == 'false'
|
132
|
+
return 'true' if arg.is_a?(TrueClass)
|
133
|
+
return 'false' if arg.is_a?(FalseClass)
|
134
|
+
raise RatsitFilterError, 'Invalid string representation of bool'
|
135
|
+
end
|
136
|
+
|
137
|
+
def parse_age(arg)
|
138
|
+
if arg.is_a?(String)
|
139
|
+
if !(arg =~ /^[0-9]+$/)
|
140
|
+
raise RatsitFilterError, 'Invalid age in filter'
|
141
|
+
end
|
142
|
+
larg = arg.to_i
|
143
|
+
elsif arg.is_a?(Integer)
|
144
|
+
larg = arg
|
145
|
+
else
|
146
|
+
raise RatsitFilterError, 'Invalid arg type in filter'
|
147
|
+
end
|
148
|
+
# ratsit specifies these ages.
|
149
|
+
if larg < 0 || larg > 150
|
150
|
+
raise RatsitFilterError, 'Invalid age'
|
151
|
+
end
|
152
|
+
"#{larg}"
|
153
|
+
end
|
154
|
+
|
155
|
+
def parse_int(arg)
|
156
|
+
return arg if arg.is_a?(Integer)
|
157
|
+
return arg.to_i if arg =~ /^[0-9]+$/
|
158
|
+
raise RatsitFilterError, 'Invalid integer'
|
159
|
+
end
|
160
|
+
|
161
|
+
def parse_list(arg)
|
162
|
+
return arg.join(',') if arg.is_a?(Array)
|
163
|
+
return arg if arg.is_a?(String)
|
164
|
+
raise RatsitFilterError, 'Invalid array'
|
165
|
+
end
|
166
|
+
|
167
|
+
def validate_list(lst, accepted_values=[])
|
168
|
+
if lst.is_a?(Array)
|
169
|
+
arr = lst
|
170
|
+
elsif lst.is_a?(String)
|
171
|
+
arr = lst.split(',').map(&:strip)
|
172
|
+
end
|
173
|
+
err = []
|
174
|
+
arr.each { |v| err.push(v) if !accepted_values.include?(v) }
|
175
|
+
if err.length > 0
|
176
|
+
raise RatsitFilterError, "Invalid list values: #{err.join(',')}"
|
177
|
+
end
|
178
|
+
arr.join(',')
|
179
|
+
end
|
180
|
+
|
181
|
+
def validate_company_types(lst)
|
182
|
+
return validate_list(lst, [FILTER_AB, FILTER_EF, FILTER_HB_KB, FILTER_OTHER])
|
183
|
+
end
|
184
|
+
|
185
|
+
def validate_package_types(lst)
|
186
|
+
return validate_list(lst, [FILTER_PACKAGE_SMALL_1, FILTER_PACKAGE_SMALL_2, FILTER_PACKAGE_SMALL_3, FILTER_PACKAGE_REMARK, FILTER_PACKAGE_MEDIUM, FILTER_PACKAGE_LARGE])
|
187
|
+
end
|
188
|
+
|
189
|
+
def validate_filters(filter_defaults={}, filters={})
|
190
|
+
if !filters.is_a?(Hash)
|
191
|
+
filters = {}
|
192
|
+
end
|
193
|
+
filters.reject! { |k,_| !filter_defaults.keys.include? k }
|
194
|
+
filter_defaults.each do |filter_name, defs|
|
195
|
+
if !filters.keys.include? filter_name
|
196
|
+
filters[filter_name] = defs[:default]
|
197
|
+
end
|
198
|
+
filters[filter_name] = defs[:parse].call(filters[filter_name])
|
199
|
+
if defs.has_key?(:validate)
|
200
|
+
filters[filter_name] = defs[:validate].call(filters[filter_name])
|
201
|
+
end
|
202
|
+
end
|
203
|
+
if filters.keys.include?(FILTER_AGE_TO) && filters.keys.include?(FILTER_AGE_FROM)
|
204
|
+
if filters[FILTER_AGE_TO].to_i < filters[FILTER_AGE_FROM].to_i
|
205
|
+
raise RatsitFilterError, 'Invalid age span'
|
206
|
+
end
|
207
|
+
end
|
208
|
+
filters
|
209
|
+
end
|
210
|
+
|
211
|
+
end
|
212
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
require 'ratsit/errors'
|
4
|
+
require 'ratsit/filter/filter'
|
5
|
+
|
6
|
+
module Ratsit
|
7
|
+
module Filter
|
8
|
+
|
9
|
+
|
10
|
+
|
11
|
+
class CompanyFilter < Ratsit::Filter::RatsitFilter
|
12
|
+
include Ratsit::Filter
|
13
|
+
#{"AB":true,"EF":true,"HB":true,"Other":true}
|
14
|
+
def initialize(filters={})
|
15
|
+
super()
|
16
|
+
@filter_defaults = {
|
17
|
+
FILTER_AB => {:parse => method(:parse_bool), :default => true},
|
18
|
+
FILTER_EF => {:parse => method(:parse_bool), :default => true},
|
19
|
+
FILTER_HB => {:parse => method(:parse_bool), :default => true},
|
20
|
+
FILTER_OTHER => {:parse => method(:parse_bool), :default => true}
|
21
|
+
}
|
22
|
+
@active_filters = validate_filters(@filter_defaults, filters)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
|
2
|
+
require 'ratsit/errors'
|
3
|
+
require 'ratsit/filter/filter'
|
4
|
+
|
5
|
+
module Ratsit
|
6
|
+
module Filter
|
7
|
+
class GetAnnualReportFilter < Ratsit::Filter::RatsitFilter
|
8
|
+
include Ratsit::Filter
|
9
|
+
|
10
|
+
def initialize(filters={})
|
11
|
+
super()
|
12
|
+
@filter_defaults = {
|
13
|
+
FILTER_TOKEN => {:parse => method(:parse_string), :default => Ratsit.get_api_key()},
|
14
|
+
FILTER_IDS => {:parse => method(:parse_list), :default => '', :validate => method(:validate_list)}
|
15
|
+
}
|
16
|
+
@active_filters = validate_filters(@filter_defaults, filters)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
end
|