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 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)