elmas 2.3.3 → 2.4.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: 71737a3f3e2f0e9d90a1f1816f7e5f54344927aa
4
- data.tar.gz: 87a2626e71be182b8e9dcd3298d9cde389575a5f
3
+ metadata.gz: 9a9ed5ba705a72bd6891dcf22693b1266785c87a
4
+ data.tar.gz: 9e096590a3fbcf310c117c0ca80b66564c924d99
5
5
  SHA512:
6
- metadata.gz: b28dcd6d710c644d20de49836a15bfa4254ef588da710ee9654711daa3abbb9ebbbe0a6b0a124377b33a5a911df4fd951db1fe5ce709d32fe431cbdf287d5978
7
- data.tar.gz: e003e7bcad6733aa1575e8a9952b00ff585a3e33baa82a3606065ff095fccdc87a40acf1ce899d3930159e254ac3bc1e59c7fa902091c4ceb74e0a956e74fa8e
6
+ metadata.gz: dd2449651468db6b7dcadc2b32a478903055c7f4f43e4cc9c0ed78803cc2e9a5bb0ac37682f0f920c583fd3864f8a2a6e92f2ce77b6e8ad1f89c3b6f0afdcdca
7
+ data.tar.gz: 23773f8506826a87f8ff24b4b2570ee0653e0c441d15fac620597314331408b4446caac447b50829d7144af8f086f9b871e3c4696e609c1f343fbc2870ebceeb
data/Changelog.md CHANGED
@@ -1,3 +1,10 @@
1
+ ## 2.4.0
2
+
3
+ - Add security measures for constantizing Exact Resources thanks to @confiks
4
+ - Add possibility to filter on Date or Time. Added test for BankEntry. thanks to @confiks
5
+ - Custom exception shouldn't inherit Exception. Use StandardError instead. thanks to @confiks
6
+ - Let go of unecessary dev dependency versions
7
+
1
8
  ## 2.3.3
2
9
 
3
10
  - Add bank accounts resource
data/elmas.gemspec CHANGED
@@ -17,20 +17,20 @@ Gem::Specification.new do |spec|
17
17
  spec.version = Elmas::Version.to_s
18
18
 
19
19
  spec.add_dependency "faraday", [">= 0.8", "< 0.10"]
20
- spec.add_dependency "mechanize", "2.6.0"
20
+ spec.add_dependency "mechanize", ">= 2.6.0"
21
21
  spec.add_dependency "activesupport"
22
22
 
23
23
  spec.add_development_dependency "bundler"
24
- spec.add_development_dependency "rake", "~> 10.0"
25
- spec.add_development_dependency("rspec", "~> 3.0")
26
- spec.add_development_dependency("simplecov")
27
- spec.add_development_dependency("simplecov-rcov")
28
- spec.add_development_dependency("webmock", "~> 1.6")
29
- spec.add_development_dependency("rubycritic", "~> 1.4.0")
30
- spec.add_development_dependency("guard-rspec")
31
- spec.add_development_dependency("guard-rubocop")
32
- spec.add_development_dependency("listen", "~> 3.0")
33
- spec.add_development_dependency("ruby_dep", "~> 1.3")
34
- spec.add_development_dependency("mutant-rspec")
35
- spec.add_development_dependency("dotenv")
24
+ spec.add_development_dependency "rake"
25
+ spec.add_development_dependency "rspec"
26
+ spec.add_development_dependency "simplecov"
27
+ spec.add_development_dependency "simplecov-rcov"
28
+ spec.add_development_dependency "webmock"
29
+ spec.add_development_dependency "rubycritic"
30
+ spec.add_development_dependency "guard-rspec"
31
+ spec.add_development_dependency "guard-rubocop"
32
+ spec.add_development_dependency "listen"
33
+ spec.add_development_dependency "ruby_dep"
34
+ spec.add_development_dependency "mutant-rspec"
35
+ spec.add_development_dependency "dotenv"
36
36
  end
@@ -1,5 +1,5 @@
1
1
  module Elmas
2
- class BadRequestException < Exception
2
+ class BadRequestException < StandardError
3
3
  def initialize(response, parsed)
4
4
  @response = response
5
5
  @parsed = parsed
@@ -11,5 +11,5 @@ module Elmas
11
11
  end
12
12
  end
13
13
 
14
- class UnauthorizedException < Exception; end
14
+ class UnauthorizedException < StandardError; end
15
15
  end
data/lib/elmas/oauth.rb CHANGED
@@ -48,14 +48,14 @@ module Elmas
48
48
  options[:response_type] ||= "code"
49
49
  options[:redirect_uri] ||= redirect_uri
50
50
  params = authorization_params.merge(options)
51
- uri = URI("https://start.exactonline.nl/api/oauth2/auth/")
51
+ uri = URI("#{base_url}/api/oauth2/auth/")
52
52
  uri.query = URI.encode_www_form(params)
53
53
  uri.to_s
54
54
  end
55
55
 
56
56
  # Return an access token from authorization
57
57
  def get_access_token(code, _options = {})
58
- conn = Faraday.new(url: "https://start.exactonline.nl") do |faraday|
58
+ conn = Faraday.new(url: base_url) do |faraday|
59
59
  faraday.request :url_encoded
60
60
  faraday.adapter Faraday.default_adapter
61
61
  end
@@ -9,12 +9,12 @@ module Elmas
9
9
  end
10
10
 
11
11
  def mandatory_attributes
12
- [:journal, :contact, :sales_entry_lines]
12
+ [:journal, :customer, :sales_entry_lines]
13
13
  end
14
14
 
15
15
  def other_attributes
16
16
  [
17
- :batch_number, :currency, :customer, :document, :due_date, :entry_date,
17
+ :batch_number, :currency, :document, :due_date, :entry_date,
18
18
  :entry_number, :invoice_number, :order_number, :payment_condition,
19
19
  :payment_reference, :process_number, :rate, :reporting_period,
20
20
  :reporting_year, :reversal, :VAT_amount_FC, :your_ref, :description
@@ -44,8 +44,13 @@ module Elmas
44
44
 
45
45
  def resource_class
46
46
  @resource_class ||= begin
47
- constant_name = Utils.modulize(type)
48
- Object.const_get(constant_name)
47
+ constant_name = type.classify
48
+ fail NameError unless constant_name =~ /\A[a-zA-Z0-9]+\z/
49
+
50
+ klass = Elmas.const_get(constant_name, false)
51
+ fail NameError unless klass.included_modules.include?(Elmas::Resource)
52
+
53
+ klass
49
54
  rescue NameError
50
55
  Elmas.info("Unknown resource encountered, proceed as usual but further resource details might have to be implemented")
51
56
  Class.new { include Elmas::Resource }
data/lib/elmas/uri.rb CHANGED
@@ -46,12 +46,17 @@ module Elmas
46
46
 
47
47
  # Convert a value to something usable in an ExactOnline request
48
48
  def sanitize_value(value)
49
- if value.is_a?(String)
49
+ case value
50
+ when String
50
51
  if value =~ /[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/
51
52
  "guid'#{value}'"
52
53
  else
53
54
  "'#{value}'"
54
55
  end
56
+
57
+ when Date, Time
58
+ "datetime'#{value.strftime('%FT%TZ')}'"
59
+
55
60
  else
56
61
  value
57
62
  end
data/lib/elmas/version.rb CHANGED
@@ -1,8 +1,8 @@
1
1
  module Elmas
2
2
  class Version
3
3
  MAJOR = 2
4
- MINOR = 3
5
- PATCH = 3
4
+ MINOR = 4
5
+ PATCH = 0
6
6
 
7
7
  class << self
8
8
  def to_s
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: elmas
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.3.3
4
+ version: 2.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marthyn
@@ -34,14 +34,14 @@ dependencies:
34
34
  name: mechanize
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
- - - '='
37
+ - - ">="
38
38
  - !ruby/object:Gem::Version
39
39
  version: 2.6.0
40
40
  type: :runtime
41
41
  prerelease: false
42
42
  version_requirements: !ruby/object:Gem::Requirement
43
43
  requirements:
44
- - - '='
44
+ - - ">="
45
45
  - !ruby/object:Gem::Version
46
46
  version: 2.6.0
47
47
  - !ruby/object:Gem::Dependency
@@ -76,30 +76,30 @@ dependencies:
76
76
  name: rake
77
77
  requirement: !ruby/object:Gem::Requirement
78
78
  requirements:
79
- - - "~>"
79
+ - - ">="
80
80
  - !ruby/object:Gem::Version
81
- version: '10.0'
81
+ version: '0'
82
82
  type: :development
83
83
  prerelease: false
84
84
  version_requirements: !ruby/object:Gem::Requirement
85
85
  requirements:
86
- - - "~>"
86
+ - - ">="
87
87
  - !ruby/object:Gem::Version
88
- version: '10.0'
88
+ version: '0'
89
89
  - !ruby/object:Gem::Dependency
90
90
  name: rspec
91
91
  requirement: !ruby/object:Gem::Requirement
92
92
  requirements:
93
- - - "~>"
93
+ - - ">="
94
94
  - !ruby/object:Gem::Version
95
- version: '3.0'
95
+ version: '0'
96
96
  type: :development
97
97
  prerelease: false
98
98
  version_requirements: !ruby/object:Gem::Requirement
99
99
  requirements:
100
- - - "~>"
100
+ - - ">="
101
101
  - !ruby/object:Gem::Version
102
- version: '3.0'
102
+ version: '0'
103
103
  - !ruby/object:Gem::Dependency
104
104
  name: simplecov
105
105
  requirement: !ruby/object:Gem::Requirement
@@ -132,30 +132,30 @@ dependencies:
132
132
  name: webmock
133
133
  requirement: !ruby/object:Gem::Requirement
134
134
  requirements:
135
- - - "~>"
135
+ - - ">="
136
136
  - !ruby/object:Gem::Version
137
- version: '1.6'
137
+ version: '0'
138
138
  type: :development
139
139
  prerelease: false
140
140
  version_requirements: !ruby/object:Gem::Requirement
141
141
  requirements:
142
- - - "~>"
142
+ - - ">="
143
143
  - !ruby/object:Gem::Version
144
- version: '1.6'
144
+ version: '0'
145
145
  - !ruby/object:Gem::Dependency
146
146
  name: rubycritic
147
147
  requirement: !ruby/object:Gem::Requirement
148
148
  requirements:
149
- - - "~>"
149
+ - - ">="
150
150
  - !ruby/object:Gem::Version
151
- version: 1.4.0
151
+ version: '0'
152
152
  type: :development
153
153
  prerelease: false
154
154
  version_requirements: !ruby/object:Gem::Requirement
155
155
  requirements:
156
- - - "~>"
156
+ - - ">="
157
157
  - !ruby/object:Gem::Version
158
- version: 1.4.0
158
+ version: '0'
159
159
  - !ruby/object:Gem::Dependency
160
160
  name: guard-rspec
161
161
  requirement: !ruby/object:Gem::Requirement
@@ -188,30 +188,30 @@ dependencies:
188
188
  name: listen
189
189
  requirement: !ruby/object:Gem::Requirement
190
190
  requirements:
191
- - - "~>"
191
+ - - ">="
192
192
  - !ruby/object:Gem::Version
193
- version: '3.0'
193
+ version: '0'
194
194
  type: :development
195
195
  prerelease: false
196
196
  version_requirements: !ruby/object:Gem::Requirement
197
197
  requirements:
198
- - - "~>"
198
+ - - ">="
199
199
  - !ruby/object:Gem::Version
200
- version: '3.0'
200
+ version: '0'
201
201
  - !ruby/object:Gem::Dependency
202
202
  name: ruby_dep
203
203
  requirement: !ruby/object:Gem::Requirement
204
204
  requirements:
205
- - - "~>"
205
+ - - ">="
206
206
  - !ruby/object:Gem::Version
207
- version: '1.3'
207
+ version: '0'
208
208
  type: :development
209
209
  prerelease: false
210
210
  version_requirements: !ruby/object:Gem::Requirement
211
211
  requirements:
212
- - - "~>"
212
+ - - ">="
213
213
  - !ruby/object:Gem::Version
214
- version: '1.3'
214
+ version: '0'
215
215
  - !ruby/object:Gem::Dependency
216
216
  name: mutant-rspec
217
217
  requirement: !ruby/object:Gem::Requirement