ytj_client 0.2.3 → 0.3.0
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.
- checksums.yaml +4 -4
- data/README.md +9 -0
- data/lib/ytj_client/version.rb +1 -1
- data/lib/ytj_client.rb +35 -23
- data/ytj_client.gemspec +5 -5
- metadata +5 -35
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3142145b51eb5ec959bfe42e543652001c6fb6f2
|
4
|
+
data.tar.gz: 38e3f18fa1bb7542cac34a54021c38871b494621
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3828ad63472ee118bbc0f8b81a98364a6b55bad71a2fa9884fbc07656d074662af92019d90cf0a3a979e3c2365d849f99520c12d456837eeb167dec5437b9664
|
7
|
+
data.tar.gz: ee1d868008dd5a2d7b81fd59e29cc9b78a67012d7bed10b377bb0d8279eb8a34a2d644a93a2d93fc9d47007ea1753a3c1e9416c5afafed86cd6b102233524124
|
data/README.md
CHANGED
@@ -54,6 +54,15 @@ YtjClient.fetch_company('2331972-7')
|
|
54
54
|
```
|
55
55
|
## Version history
|
56
56
|
|
57
|
+
### 0.3.0
|
58
|
+
|
59
|
+
- Breaking changes, new API methods:
|
60
|
+
- fetch_company (fetch details of a company with business_id)
|
61
|
+
- fetch_companies (fetch companies between two dates)
|
62
|
+
- fetch_all_companies (fetch all companies since the year 1896)
|
63
|
+
- fetch_companies supports :mode argument, to save into CSV or just return the array
|
64
|
+
- Dependency updates
|
65
|
+
|
57
66
|
### 0.2.3
|
58
67
|
|
59
68
|
- Fixes to fetching all the companies:
|
data/lib/ytj_client/version.rb
CHANGED
data/lib/ytj_client.rb
CHANGED
@@ -10,13 +10,15 @@ require 'active_support/core_ext/string/inflections'
|
|
10
10
|
|
11
11
|
require 'json'
|
12
12
|
require 'csv'
|
13
|
+
require 'date'
|
13
14
|
|
14
15
|
module YtjClient
|
15
16
|
|
16
17
|
YTJ_API_URL = 'http://avoindata.prh.fi:80/bis/v1/'.freeze
|
17
18
|
TR_API_URL = 'http://avoindata.prh.fi:80/tr/v1?totalResults=false&maxResults=1000&resultsFrom=0
|
18
19
|
'.freeze
|
19
|
-
|
20
|
+
START_YEAR = 1896
|
21
|
+
CSV_FILENAME = 'companies.csv'.freeze
|
20
22
|
|
21
23
|
class << self
|
22
24
|
|
@@ -40,15 +42,23 @@ module YtjClient
|
|
40
42
|
logger.error "Error fetching data from YTJ: #{$!.message} - #{$!.backtrace}"
|
41
43
|
end
|
42
44
|
|
43
|
-
def fetch_all_companies
|
44
|
-
overall_fetched_companies =
|
45
|
-
end_year = Time.now.year
|
45
|
+
def fetch_all_companies
|
46
|
+
overall_fetched_companies = []
|
46
47
|
|
48
|
+
end_year = Time.now.year
|
47
49
|
end_year.downto(START_YEAR).to_a.each do |year|
|
48
|
-
overall_fetched_companies
|
50
|
+
overall_fetched_companies << fetch_timespan(start_date: "#{year}-01-01", end_date: "#{year}-12-31", options: {mode: :csv})
|
49
51
|
end
|
50
52
|
|
51
|
-
logger.info "Fetched #{overall_fetched_companies} companies and saved
|
53
|
+
logger.info "Fetched #{overall_fetched_companies.size} companies and saved to #{CSV_FILENAME}"
|
54
|
+
overall_fetched_companies
|
55
|
+
rescue
|
56
|
+
logger.error "Error fetching data from TR API: #{$!.message} - #{$!.backtrace}"
|
57
|
+
end
|
58
|
+
|
59
|
+
def fetch_companies(start_date:, end_date:, options: {})
|
60
|
+
overall_fetched_companies = fetch_timespan(start_date: start_date, end_date: end_date, options: options)
|
61
|
+
logger.info "Fetched #{overall_fetched_companies.size} companies."
|
52
62
|
return overall_fetched_companies
|
53
63
|
rescue
|
54
64
|
logger.error "Error fetching data from TR API: #{$!.message} - #{$!.backtrace}"
|
@@ -56,26 +66,33 @@ module YtjClient
|
|
56
66
|
|
57
67
|
private
|
58
68
|
|
59
|
-
def
|
60
|
-
url = url = TR_API_URL+"&companyRegistrationFrom=#{
|
69
|
+
def fetch_timespan(start_date:, end_date:, options: {})
|
70
|
+
url = url = TR_API_URL+"&companyRegistrationFrom=#{start_date}&companyRegistrationTo=#{end_date}"
|
61
71
|
fetched_companies = 0
|
72
|
+
all_companies = []
|
62
73
|
while true
|
63
74
|
companies, url = fetch_1000_companies(url)
|
64
75
|
logger.info "Fetched #{companies.size} companies."
|
65
76
|
logger.info "Next URL: #{url}"
|
66
|
-
|
77
|
+
case options[:mode]
|
78
|
+
when :csv
|
79
|
+
logger.debug "Saving to CSV file."
|
80
|
+
save_companies(companies)
|
81
|
+
all_companies << companies
|
82
|
+
when :array
|
83
|
+
logger.debug "Returning as an Array."
|
84
|
+
all_companies << companies
|
85
|
+
end
|
67
86
|
fetched_companies += companies.size
|
68
87
|
if url.blank?
|
69
|
-
logger.info "No more companies to get for
|
88
|
+
logger.info "No more companies to get for between #{start_date} and #{end_date}. Last response was #{companies.size} companies: #{companies}"
|
70
89
|
break
|
71
90
|
end
|
72
91
|
logger.info "Got #{fetched_companies} companies now, fetching some more"
|
73
92
|
sleep 5
|
74
93
|
end
|
75
|
-
logger.info "Got #{fetched_companies}
|
76
|
-
|
77
|
-
rescue
|
78
|
-
logger.error "Error fetching data for year #{year} from TR API: #{$!.message} - #{$!.backtrace}"
|
94
|
+
logger.info "Got #{fetched_companies} companies between #{start_date} and #{end_date}. Moving on."
|
95
|
+
all_companies.flatten
|
79
96
|
end
|
80
97
|
|
81
98
|
def fetch_1000_companies(url)
|
@@ -83,16 +100,11 @@ module YtjClient
|
|
83
100
|
return response["results"], response["nextResultsUri"]
|
84
101
|
end
|
85
102
|
|
86
|
-
def save_companies(companies
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
companies.each do |company|
|
91
|
-
csv << [company["businessId"], company["companyForm"], company["name"], company["registrationDate"]]
|
92
|
-
end
|
103
|
+
def save_companies(companies)
|
104
|
+
CSV.open(CSV_FILENAME, "ab") do |csv|
|
105
|
+
companies.each do |company|
|
106
|
+
csv << [company["registrationDate"], company["businessId"], company["companyForm"], company["name"]]
|
93
107
|
end
|
94
|
-
else
|
95
|
-
logger.info "Unknown save format"
|
96
108
|
end
|
97
109
|
end
|
98
110
|
|
data/ytj_client.gemspec
CHANGED
@@ -24,11 +24,11 @@ Gem::Specification.new do |spec|
|
|
24
24
|
spec.add_development_dependency "bundler", "~> 1.13"
|
25
25
|
spec.add_development_dependency "rake", "~> 12.0"
|
26
26
|
spec.add_development_dependency "rspec", "~> 3.0"
|
27
|
-
spec.add_development_dependency 'vcr', '~> 3.0'
|
28
|
-
spec.add_development_dependency 'webmock', '~> 2.3'
|
27
|
+
spec.add_development_dependency 'vcr', '~> 3.0'
|
28
|
+
spec.add_development_dependency 'webmock', '~> 2.3'
|
29
29
|
spec.add_development_dependency "pry", "~> 0.10.4"
|
30
|
-
spec.add_development_dependency 'awesome_print', '~> 1.7'
|
30
|
+
spec.add_development_dependency 'awesome_print', '~> 1.7'
|
31
31
|
|
32
|
-
spec.add_runtime_dependency 'rest-client', '~> 2.0'
|
33
|
-
spec.add_runtime_dependency 'activesupport', '~> 5.
|
32
|
+
spec.add_runtime_dependency 'rest-client', '~> 2.0'
|
33
|
+
spec.add_runtime_dependency 'activesupport', '~> 5.1'
|
34
34
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ytj_client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Janne Warén
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-05-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -59,9 +59,6 @@ dependencies:
|
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '3.0'
|
62
|
-
- - ">="
|
63
|
-
- !ruby/object:Gem::Version
|
64
|
-
version: 3.0.3
|
65
62
|
type: :development
|
66
63
|
prerelease: false
|
67
64
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -69,9 +66,6 @@ dependencies:
|
|
69
66
|
- - "~>"
|
70
67
|
- !ruby/object:Gem::Version
|
71
68
|
version: '3.0'
|
72
|
-
- - ">="
|
73
|
-
- !ruby/object:Gem::Version
|
74
|
-
version: 3.0.3
|
75
69
|
- !ruby/object:Gem::Dependency
|
76
70
|
name: webmock
|
77
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -79,9 +73,6 @@ dependencies:
|
|
79
73
|
- - "~>"
|
80
74
|
- !ruby/object:Gem::Version
|
81
75
|
version: '2.3'
|
82
|
-
- - ">="
|
83
|
-
- !ruby/object:Gem::Version
|
84
|
-
version: 2.3.1
|
85
76
|
type: :development
|
86
77
|
prerelease: false
|
87
78
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -89,9 +80,6 @@ dependencies:
|
|
89
80
|
- - "~>"
|
90
81
|
- !ruby/object:Gem::Version
|
91
82
|
version: '2.3'
|
92
|
-
- - ">="
|
93
|
-
- !ruby/object:Gem::Version
|
94
|
-
version: 2.3.1
|
95
83
|
- !ruby/object:Gem::Dependency
|
96
84
|
name: pry
|
97
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -113,9 +101,6 @@ dependencies:
|
|
113
101
|
- - "~>"
|
114
102
|
- !ruby/object:Gem::Version
|
115
103
|
version: '1.7'
|
116
|
-
- - ">="
|
117
|
-
- !ruby/object:Gem::Version
|
118
|
-
version: 1.7.0
|
119
104
|
type: :development
|
120
105
|
prerelease: false
|
121
106
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -123,9 +108,6 @@ dependencies:
|
|
123
108
|
- - "~>"
|
124
109
|
- !ruby/object:Gem::Version
|
125
110
|
version: '1.7'
|
126
|
-
- - ">="
|
127
|
-
- !ruby/object:Gem::Version
|
128
|
-
version: 1.7.0
|
129
111
|
- !ruby/object:Gem::Dependency
|
130
112
|
name: rest-client
|
131
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -133,9 +115,6 @@ dependencies:
|
|
133
115
|
- - "~>"
|
134
116
|
- !ruby/object:Gem::Version
|
135
117
|
version: '2.0'
|
136
|
-
- - ">="
|
137
|
-
- !ruby/object:Gem::Version
|
138
|
-
version: 2.0.0
|
139
118
|
type: :runtime
|
140
119
|
prerelease: false
|
141
120
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -143,29 +122,20 @@ dependencies:
|
|
143
122
|
- - "~>"
|
144
123
|
- !ruby/object:Gem::Version
|
145
124
|
version: '2.0'
|
146
|
-
- - ">="
|
147
|
-
- !ruby/object:Gem::Version
|
148
|
-
version: 2.0.0
|
149
125
|
- !ruby/object:Gem::Dependency
|
150
126
|
name: activesupport
|
151
127
|
requirement: !ruby/object:Gem::Requirement
|
152
128
|
requirements:
|
153
129
|
- - "~>"
|
154
130
|
- !ruby/object:Gem::Version
|
155
|
-
version: '5.
|
156
|
-
- - ">="
|
157
|
-
- !ruby/object:Gem::Version
|
158
|
-
version: 5.0.1
|
131
|
+
version: '5.1'
|
159
132
|
type: :runtime
|
160
133
|
prerelease: false
|
161
134
|
version_requirements: !ruby/object:Gem::Requirement
|
162
135
|
requirements:
|
163
136
|
- - "~>"
|
164
137
|
- !ruby/object:Gem::Version
|
165
|
-
version: '5.
|
166
|
-
- - ">="
|
167
|
-
- !ruby/object:Gem::Version
|
168
|
-
version: 5.0.1
|
138
|
+
version: '5.1'
|
169
139
|
description: Fetches data with business_id from the YTJ API at http://avoindata.prh.fi/ytj.html
|
170
140
|
email:
|
171
141
|
- janne.waren@iki.fi
|
@@ -206,7 +176,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
206
176
|
version: '0'
|
207
177
|
requirements: []
|
208
178
|
rubyforge_project:
|
209
|
-
rubygems_version: 2.5.
|
179
|
+
rubygems_version: 2.5.2
|
210
180
|
signing_key:
|
211
181
|
specification_version: 4
|
212
182
|
summary: Client for communicating with Finnish Patent and Registration Office (PRH)
|