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.
@@ -1,3 +1,4 @@
1
+
1
2
  module Ratsit
2
- VERSION = '0.0.1'
3
+ VERSION = '0.0.2'
3
4
  end
@@ -9,8 +9,8 @@ Gem::Specification.new do |spec|
9
9
  spec.authors = ["Stefan Nyman"]
10
10
  spec.email = ["stefan@qoorp.com"]
11
11
 
12
- spec.summary = "Ratsit searches..."
13
- spec.description = "Ratsit searches..."
12
+ spec.summary = "Perform Ratsit searches for persons and companies."
13
+ spec.description = "Can search using either the open api endpoints or by using an api key. Search methods: OpenPersonSearch, OpenCompanySearch, SearchCompanies, SearchPersons, SearchOnePerson."
14
14
  spec.homepage = "http://github.com/qoorp/ratsit"
15
15
  spec.license = "MIT"
16
16
 
@@ -32,4 +32,5 @@ Gem::Specification.new do |spec|
32
32
  spec.add_development_dependency "rspec", "~> 3.2"
33
33
 
34
34
  spec.add_runtime_dependency "faraday", "~> 0.9.2"
35
+ spec.add_runtime_dependency "savon", "~> 2.10.0"
35
36
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ratsit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stefan Nyman
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-01-22 00:00:00.000000000 Z
11
+ date: 2016-01-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -66,7 +66,23 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: 0.9.2
69
- description: Ratsit searches...
69
+ - !ruby/object:Gem::Dependency
70
+ name: savon
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 2.10.0
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 2.10.0
83
+ description: 'Can search using either the open api endpoints or by using an api key.
84
+ Search methods: OpenPersonSearch, OpenCompanySearch, SearchCompanies, SearchPersons,
85
+ SearchOnePerson.'
70
86
  email:
71
87
  - stefan@qoorp.com
72
88
  executables: []
@@ -83,12 +99,22 @@ files:
83
99
  - bin/setup
84
100
  - lib/ratsit.rb
85
101
  - lib/ratsit/errors.rb
86
- - lib/ratsit/filters.rb
102
+ - lib/ratsit/filter/filter.rb
103
+ - lib/ratsit/filter/filter_company.rb
104
+ - lib/ratsit/filter/filter_get_annual_report.rb
105
+ - lib/ratsit/filter/filter_get_companies.rb
106
+ - lib/ratsit/filter/filter_get_company_information_package.rb
107
+ - lib/ratsit/filter/filter_get_person_information_package.rb
108
+ - lib/ratsit/filter/filter_person.rb
109
+ - lib/ratsit/filter/filter_search_one_person.rb
110
+ - lib/ratsit/filter/filter_search_persons.rb
87
111
  - lib/ratsit/monkey.rb
88
- - lib/ratsit/package.rb
89
- - lib/ratsit/person.rb
90
- - lib/ratsit/request.rb
91
- - lib/ratsit/search_type.rb
112
+ - lib/ratsit/request/open_request.rb
113
+ - lib/ratsit/request/request.rb
114
+ - lib/ratsit/request/request_get_companies.rb
115
+ - lib/ratsit/request/request_search_one_person.rb
116
+ - lib/ratsit/request/request_search_persons.rb
117
+ - lib/ratsit/request/token_request.rb
92
118
  - lib/ratsit/version.rb
93
119
  - ratsit.gemspec
94
120
  homepage: http://github.com/qoorp/ratsit
@@ -115,5 +141,5 @@ rubyforge_project:
115
141
  rubygems_version: 2.4.5.1
116
142
  signing_key:
117
143
  specification_version: 4
118
- summary: Ratsit searches...
144
+ summary: Perform Ratsit searches for persons and companies.
119
145
  test_files: []
@@ -1,155 +0,0 @@
1
-
2
- require 'ratsit/errors'
3
- require 'json'
4
-
5
- module Ratsit
6
-
7
- # Person filters
8
- FILTER_MARRIED = 'Married'
9
- FILTER_UNMARRIED = 'Unmarried'
10
- FILTER_MALE = 'Male'
11
- FILTER_FEMALE = 'Female'
12
- FILTER_COMPANY_ENGAGEMENT = 'CompanyEngagement'
13
- FILTER_NO_COMPANY_ENGAGEMENT = 'NoCompanyEngagement'
14
- FILTER_AGE_FROM = 'AgeFrom'
15
- FILTER_AGE_TO = 'AgeTo'
16
-
17
- # Company filters
18
- FILTER_AB = 'AB'
19
- FILTER_EF = 'EF'
20
- FILTER_HB = 'HB'
21
- FILTER_OTHER = 'Other'
22
-
23
-
24
- class RatsitFilter
25
-
26
- def initialize()
27
- @active_filters = {}
28
- @filter_defaults = {}
29
- end
30
-
31
- def active_filters
32
- return (@active_filters.nil?)? nil: @active_filters
33
- end
34
-
35
- def to_json
36
- af = self.active_filters
37
- return '{}' if af.nil?
38
- af.to_json
39
- end
40
-
41
- def update(filter_key='', filter_value)
42
- #puts "update #{filter_key}: #{filter_value}"
43
- if !filter_key.is_a?(String)
44
- raise RatsitFilterError, 'Invalid filter key'
45
- end
46
- if filter_value.nil?
47
- raise RatsitFilterError, 'Invalid filter value'
48
- end
49
- if !@active_filters.has_key?(filter_key)
50
- raise RatsitFilterError, 'Non-existent filter key'
51
- end
52
- @curr_filters = Marshal.load(Marshal.dump(@active_filters))
53
- @curr_filters[filter_key] = filter_value
54
- @active_filters = validate_filters(@filter_defaults, @curr_filters)
55
- end
56
-
57
- def reset(filter_name='')
58
- if !filter_name.is_a?(String)
59
- raise RatsitFilterError, 'Invalid filter key'
60
- end
61
- if !@filter_defaults.has_key?(filter_name)
62
- raise RatsitFilterError, 'Non-existent filter key'
63
- end
64
- @active_filters[filter_name] = @filter_defaults[filter_name][:default]
65
- end
66
-
67
- end
68
-
69
- class PersonFilter < RatsitFilter
70
- include Ratsit
71
- #{"Married":true,"Unmarried":true,"Male":true,"Female":true,"CompanyEngagement":true,"NoCompanyEngagement":true,"AgeFrom":"0","AgeTo":"150"}
72
- def initialize(filters={})
73
- super()
74
- @filter_defaults = {
75
- FILTER_MARRIED => {:parse => method(:parse_bool), :default => true},
76
- FILTER_UNMARRIED => {:parse => method(:parse_bool), :default => true},
77
- FILTER_MALE => {:parse => method(:parse_bool), :default => true},
78
- FILTER_FEMALE => {:parse => method(:parse_bool), :default => true},
79
- FILTER_COMPANY_ENGAGEMENT => {:parse => method(:parse_bool), :default => true},
80
- FILTER_NO_COMPANY_ENGAGEMENT => {:parse => method(:parse_bool), :default => true},
81
- FILTER_AGE_FROM => {:parse => method(:parse_age), :default => '0'},
82
- FILTER_AGE_TO => {:parse => method(:parse_age), :default => '150'}
83
- }
84
- @active_filters = validate_filters(@filter_defaults, filters)
85
- end
86
- end
87
-
88
- class CompanyFilter < RatsitFilter
89
- include Ratsit
90
- #{"AB":true,"EF":true,"HB":true,"Other":true}
91
- def initialize(filters={})
92
- super()
93
- @filter_defaults = {
94
- FILTER_AB => {:parse => method(:parse_bool), :default => true},
95
- FILTER_EF => {:parse => method(:parse_bool), :default => true},
96
- FILTER_HB => {:parse => method(:parse_bool), :default => true},
97
- FILTER_OTHER => {:parse => method(:parse_bool), :default => true}
98
- }
99
- @active_filters = validate_filters(@filter_defaults, filters)
100
- end
101
- end
102
-
103
- class EstateFilter < RatsitFilter
104
- include Ratsit
105
- def initialize()
106
- raise NotImplementedError, 'Functionality doesn\'t exist'
107
- end
108
- end
109
-
110
- private
111
-
112
- def parse_bool(arg)
113
- return arg if arg.is_a?(TrueClass) || arg.is_a?(FalseClass)
114
- raise RatsitFilterError, 'Invalid bool representation' if !arg.is_a?(String)
115
- return true if arg.downcase == 'true'
116
- return false if arg.downcase == 'false'
117
- raise RatsitFilterError, 'Invalid textual bool value'
118
- end
119
-
120
- def parse_age(arg)
121
- if arg.is_a?(String)
122
- if !(arg =~ /^[0-9]+$/)
123
- raise RatsitFilterError, 'Invalid age in filter'
124
- end
125
- larg = arg.to_i
126
- elsif arg.is_a?(Integer)
127
- larg = arg
128
- else
129
- raise RatsitFilterError, 'Invalid arg type in filter'
130
- end
131
- # ratsit specifies these ages.
132
- if larg < 0 || larg > 150
133
- raise RatsitFilterError, 'Invalid age'
134
- end
135
- return "#{larg}"
136
- end
137
-
138
- def validate_filters(filter_defaults={}, filters={})
139
- if !filters.is_a?(Hash)
140
- filters = {}
141
- end
142
- filters.reject! { |k,_| !filter_defaults.keys.include? k }
143
- filter_defaults.each do |filter_name, defs|
144
- if !filters.keys.include? filter_name
145
- filters[filter_name] = defs[:default]
146
- end
147
- filters[filter_name] = defs[:parse].call(filters[filter_name])
148
- end
149
- if filters[FILTER_AGE_TO].to_i < filters[FILTER_AGE_FROM].to_i
150
- raise RatsitFilterError, 'Invalid age span'
151
- end
152
- return filters
153
- end
154
-
155
- end
@@ -1,22 +0,0 @@
1
-
2
- module Ratsit
3
- PACKAGE_SMALL_1 = 'small 1'
4
- PACKAGE_SMALL_2 = 'small 2'
5
- PACKAGE_SMALL_3 = 'small 3'
6
- PACKAGE_REMARK = 'anmarkning'
7
- PACKAGE_MEDIUM = 'medium'
8
- PACKAGE_LARGE = 'large'
9
-
10
- def Ratsit.validate_package(package)
11
- raise RatsitError, 'Invalid package argument type' if !package.is_a?(String)
12
- return [
13
- PACKAGE_SMALL_1,
14
- PACKAGE_SMALL_2,
15
- PACKAGE_SMALL_3,
16
- PACKAGE_REMARK,
17
- PACKAGE_MEDIUM,
18
- PACKAGE_LARGE
19
- ].include?(package)
20
- end
21
-
22
- end
@@ -1,39 +0,0 @@
1
-
2
- require 'ratsit/monkey'
3
- require 'ratsit/errors'
4
-
5
- module Ratsit
6
-
7
- class Person
8
-
9
- def initialize(json_obj)
10
- if !json_obj.is_a?(Hash)
11
- raise RatsitError, 'Invalid Person initializer'
12
- end
13
- @json_source = json_obj
14
- json_obj.each do |k, v|
15
- case k
16
- when 'FirstName'
17
- v.gsub!("<b>", "")
18
- v.gsub!("</b>", "")
19
- when 'Gender'
20
- v = v.gsub("icon_", "")
21
- v = v.gsub(".png", "")
22
- when 'Married'
23
- v = v.gsub("icon_", "")
24
- v = v.gsub(".png", "")
25
- when 'CompanyEngagement'
26
- v = v.gsub("icon_", "")
27
- v = v.gsub(".png", "")
28
- else
29
- v = v
30
- end
31
- self.class.send(:define_method, k.underscore) {
32
- return v
33
- }
34
- end
35
- end
36
-
37
- end
38
-
39
- end
@@ -1,80 +0,0 @@
1
-
2
- require 'faraday'
3
- require 'uri'
4
- require 'json'
5
- require 'ratsit/errors'
6
- require 'ratsit/filters'
7
- require 'ratsit/search_type'
8
-
9
- module Ratsit
10
-
11
- class RatsitRequest
12
-
13
- def initialize()
14
-
15
- end
16
-
17
- def exec()
18
- uri = self.build_uri
19
- conn = Faraday.new(:url => "http://#{uri.host}")
20
- #puts "http://#{uri.host}"
21
- #puts self.compose_request_body
22
- @response = conn.post do |req|
23
- req.url uri.request_uri
24
- req.headers['Content-Type'] = 'application/json'
25
- req.body = self.compose_request_body
26
- end
27
- #puts @response.body
28
- #puts @response.status
29
- end
30
-
31
- def response_ok
32
- return false if @response.nil?
33
- return @response.status == 200
34
- end
35
-
36
- def response_body
37
- return nil if @response.nil?
38
- return @response.body
39
- end
40
- end
41
-
42
- class RatsitOpenRequest < RatsitRequest
43
-
44
- def initialize(search_term, search_area, search_type, filters)
45
- super()
46
- if search_type == Ratsit::SEARCH_TYPE_ESTATE
47
- raise RatsitRequestError, 'Estate search is not available in open api'
48
- end
49
- @base_url = 'http://www.ratsit.se/BC/SearchSimple.aspx/'
50
- @search_term = search_term
51
- @search_area = search_area
52
- @search_type = search_type
53
- @search_filter = filters
54
- self
55
- end
56
-
57
- def build_uri
58
- if !Ratsit.validate_search_type(@search_type)
59
- raise RatsitRequestError, 'Invalid search type'
60
- end
61
- URI.parse("#{@base_url}#{@search_type}")
62
- end
63
-
64
- def compose_request_body
65
- {
66
- 'who': @search_term,
67
- 'where': @search_area,
68
- 'filter': @search_filter.to_json
69
- }.to_json
70
- end
71
-
72
- end
73
-
74
- class RatsitTokenRequest < RatsitRequest
75
- def initialize()
76
- raise NotImplementedError, 'Token requests are not supported yet'
77
- end
78
- end
79
-
80
- end
@@ -1,19 +0,0 @@
1
-
2
- require 'ratsit/errors'
3
-
4
- module Ratsit
5
-
6
- SEARCH_TYPE_PERSON = 'PersonSearch'
7
- SEARCH_TYPE_COMPANY = 'CompanySearch'
8
- SEARCH_TYPE_ESTATE = 'EstateSearch'
9
-
10
- def Ratsit.validate_search_type(search_type)
11
- raise RatsitError, 'Invalid search_type argument' if !search_type.is_a?(String)
12
- return [
13
- SEARCH_TYPE_PERSON,
14
- SEARCH_TYPE_COMPANY,
15
- SEARCH_TYPE_ESTATE
16
- ].include?(search_type)
17
- end
18
-
19
- end