ratsit 0.0.1 → 0.0.2

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