ytj_client 0.2.3 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 47a276c1b5853c8a646a66cb67b4678615461fe4
4
- data.tar.gz: ab7257eef607daca529f9639c68bc0634632b18b
3
+ metadata.gz: 3142145b51eb5ec959bfe42e543652001c6fb6f2
4
+ data.tar.gz: 38e3f18fa1bb7542cac34a54021c38871b494621
5
5
  SHA512:
6
- metadata.gz: 42702fb6d17475bb9d16a077bde5dd652c506313ff58986b2fee390e1f5f74bb4cf97fe503fd94bd9b8ff58ee6f949a3687e0228f52cac4e01fae0482691765f
7
- data.tar.gz: 7b092f3f0e14f4dc41b6cdeaf815063d8a8abe17f5164841c19e3a90188fad6623fe214d7e6d42e9f0b4d5cb6cc569c274425c2ad766d8bc3ff1e4d8d5645fd6
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:
@@ -1,3 +1,3 @@
1
1
  module YtjClient
2
- VERSION = "0.2.3"
2
+ VERSION = "0.3.0"
3
3
  end
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
- START_YEAR = 1896
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(format = 'csv')
44
- overall_fetched_companies = 0
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 += fetch_year(year, format)
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 in #{format}"
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 fetch_year(year, format)
60
- url = url = TR_API_URL+"&companyRegistrationFrom=#{year}-01-01&companyRegistrationTo=#{year}-12-31"
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
- save_companies(companies, format)
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 year #{year}. Last response was #{companies.size} companies: #{companies}"
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} for year #{year}. Moving on."
76
- return fetched_companies
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, format)
87
- case format
88
- when 'csv'
89
- CSV.open("companies.csv", "ab") do |csv|
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', '>= 3.0.3'
28
- spec.add_development_dependency 'webmock', '~> 2.3', '>= 2.3.1'
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', '>= 1.7.0'
30
+ spec.add_development_dependency 'awesome_print', '~> 1.7'
31
31
 
32
- spec.add_runtime_dependency 'rest-client', '~> 2.0', '>= 2.0.0'
33
- spec.add_runtime_dependency 'activesupport', '~> 5.0', '>= 5.0.1'
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.2.3
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-01-04 00:00:00.000000000 Z
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.0'
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.0'
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.1
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)