fiscalizer 0.0.2 → 0.0.3

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: a28f77e9a2a9ab8611c8b9115ec048cf8380bbe2
4
- data.tar.gz: ed956c0403bf6066779ec8176f4e1da2944693fe
3
+ metadata.gz: bf3a0286c80975a48c24f12bacbb56dd52e7bff9
4
+ data.tar.gz: 665daba6e0e75aeea89a3375a68ec7110e800e3b
5
5
  SHA512:
6
- metadata.gz: 27c61c79639ff2642f62f91f7781d9d1553f9a78dc1b34ab60ce559e677374d3975c64de3873df32de0bcd446dd3ea914472ae0450ad397aed074dd40c8cb031
7
- data.tar.gz: 55369a83446b63c7788ab86b1afb54e85558a3f01a6bb8f016731ec922a7b9d60db5f1f8a3b2b3efa532cc9b38b999f226bd86b3c7bcfb7b8385c3952efcb11b
6
+ metadata.gz: b1527568363f50c83ea0d7fce1dce5b7581b474a44f534cde2afac59b292e2ddf44e3e96d1adf503f7cf24203bb6370230b08d281075fe915d5cbd607aab4c02
7
+ data.tar.gz: 6033347fda031491a8200df26d1dbf4d47b8fd374c5c364e2463f72d55072df6e9f77b226f325fb9e6d95f634f7320a8fbe982b53297baafe74a3b88b0a9e893
data/LICENSE.txt CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2014 Stanko Krtalić
1
+ Copyright (c) 2014 Infinum
2
2
 
3
3
  MIT License
4
4
 
data/README.md CHANGED
@@ -199,7 +199,7 @@ Direct usage of the `Fiscalizer::Communication` class is not advised!
199
199
 
200
200
  # Credits
201
201
 
202
- Phrasing is maintained and sponsored by
202
+ Fiscalizer is maintained and sponsored by
203
203
  [Infinum](http://www.infinum.co).
204
204
 
205
205
  ![Infinum](http://www.infinum.co/system/logo.png)
@@ -1,10 +1,10 @@
1
1
  class Fiscalizer
2
2
  class Communication
3
- attr_accessor :url, :tns, :schemaLocation,
4
- :key_public, :key_private, :certificate,
3
+ attr_accessor :url, :tns, :schemaLocation,
4
+ :key_public, :key_private, :certificate,
5
5
  :certificate_issued_by
6
6
 
7
- def initialize( tns: "http://www.apis-it.hr/fin/2012/types/f73",
7
+ def initialize( tns: "http://www.apis-it.hr/fin/2012/types/f73",
8
8
  url: "https://cis.porezna-uprava.hr:8449/FiskalizacijaService",
9
9
  schemaLocation: "http://www.apis-it.hr/fin/2012/types/f73 FiskalizacijaSchema.xsd",
10
10
  key_public: nil, key_private: nil, certificate: nil,
@@ -34,6 +34,19 @@ class Fiscalizer
34
34
  http.verify_mode = OpenSSL::SSL::VERIFY_PEER
35
35
 
36
36
  # Encode object
37
+ encoded_object = encode_object object
38
+ return false if encoded_object.nil?
39
+
40
+ # Send it
41
+ request = Net::HTTP::Post.new(uri.request_uri)
42
+ request.content_type = 'application/xml'
43
+ request.body = encoded_object
44
+ response = http.request(request)
45
+
46
+ return response
47
+ end # send
48
+
49
+ def encode_object object
37
50
  encoded_object = nil
38
51
  if object.class == Echo
39
52
  encoded_object = encode_echo object
@@ -41,26 +54,32 @@ class Fiscalizer
41
54
  encoded_object = encode_office object
42
55
  elsif object.class == Invoice
43
56
  encoded_object = encode_invoice object
44
- else
45
- # Something broke so we return false,
46
- # this enables us to check sucess in an if statement
47
- return false
48
57
  end
58
+ return encoded_object
59
+ end # encode_object
49
60
 
50
- # Send it
51
- request = Net::HTTP::Post.new(uri.request_uri)
52
- request.content_type = 'application/xml'
53
- request.body = encoded_object
54
- response = http.request(request)
55
-
56
- return response
57
- end # send
58
-
61
+ def generate_security_code invoice
62
+ # Build data set to generate security code
63
+ unsigned_code = ""
64
+ unsigned_code += invoice.pin
65
+ unsigned_code += invoice.time_sent_str " "
66
+ unsigned_code += invoice.issued_number.to_s
67
+ unsigned_code += invoice.issued_office.to_s
68
+ unsigned_code += invoice.issued_machine.to_s
69
+ unsigned_code += invoice.summed_total_str
70
+ # Sign with my private key
71
+ signed_code = OpenSSL::PKey::RSA.new(key_private).sign(OpenSSL::Digest::SHA1.new, unsigned_code)
72
+ # Create a MD5 digest from it
73
+ md5_digest = Digest::MD5.hexdigest(signed_code)
74
+ invoice.security_code = md5_digest
75
+ return md5_digest
76
+ end # generate_security_code
77
+
59
78
  private
60
79
  def encode_echo object
61
80
  echo_xml = Nokogiri::XML::Builder.new(encoding: 'UTF-8') do |xml|
62
81
  xml['tns'].EchoRequest(
63
- 'xmlns:tns' => @tns,
82
+ 'xmlns:tns' => @tns,
64
83
  'xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance',
65
84
  'xsi:schemaLocation' => @schemaLocation
66
85
  ) {
@@ -75,7 +94,7 @@ class Fiscalizer
75
94
  def encode_office object
76
95
  office_request_xml = Nokogiri::XML::Builder.new(encoding: 'UTF-8') do |xml|
77
96
  xml['tns'].PoslovniProstorZahtjev(
78
- 'xmlns:tns' => @tns,
97
+ 'xmlns:tns' => @tns,
79
98
  'xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance',
80
99
  'xsi:schemaLocation' => schemaLocation,
81
100
  'Id' => 'PoslovniProstorZahtjev'
@@ -149,7 +168,7 @@ class Fiscalizer
149
168
  generate_security_code object
150
169
  invoice_request_xml = Nokogiri::XML::Builder.new(encoding: 'UTF-8') do |xml|
151
170
  xml['tns'].RacunZahtjev(
152
- 'xmlns:tns' => @tns,
171
+ 'xmlns:tns' => @tns,
153
172
  'xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance',
154
173
  'xsi:schemaLocation' => schemaLocation,
155
174
  'Id' => 'RacunZahtjev'
@@ -275,22 +294,6 @@ class Fiscalizer
275
294
  end
276
295
  end # soap_envelope
277
296
 
278
- def generate_security_code invoice
279
- # Build data set to generate security code
280
- unsigned_code = ""
281
- unsigned_code += invoice.pin
282
- unsigned_code += invoice.time_sent_str " "
283
- unsigned_code += invoice.issued_number.to_s
284
- unsigned_code += invoice.issued_office.to_s
285
- unsigned_code += invoice.issued_machine.to_s
286
- unsigned_code += invoice.summed_total_str
287
- # Sign with my private key
288
- signed_code = OpenSSL::PKey::RSA.new(key_private).sign(OpenSSL::Digest::SHA1.new, unsigned_code)
289
- # Create a MD5 digest from it
290
- md5_digest = Digest::MD5.hexdigest(signed_code)
291
- invoice.security_code = md5_digest
292
- return md5_digest
293
- end # generate_security_code
294
297
 
295
298
  end # Communication
296
- end # Fiscalizer
299
+ end # Fiscalizer
@@ -1,3 +1,3 @@
1
1
  class Fiscalizer
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fiscalizer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stanko Krtalić Rusendić
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-02-26 00:00:00.000000000 Z
11
+ date: 2014-03-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri