afip.rb 1.0.1 → 1.1.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
  SHA256:
3
- metadata.gz: 1cc5b723a5764b5bb0e78ed11bb03b06157ef1e334f538f4284e8fea712150fa
4
- data.tar.gz: d993b725b9d7664c45c59c38c220bcb1a9bc0f5c159b12dca6970c79980c2ebd
3
+ metadata.gz: 0e42c189eaf440590f00483ea1ad2c50c71d5a2d76657dcd65c34f4d38f119df
4
+ data.tar.gz: 58ddb08555df0fdeb8afe73e462a8e557e1aa51caa72afbb4adc61dc7c79e05c
5
5
  SHA512:
6
- metadata.gz: 7d526e25cadd6f63f41596ad25453e9323dc4da5cfdf83233ae3a76c7262b8ffb0c86e57aceaf7355fcded889ebe9e8fdd80c5852245508609d1dc0feb2e9c75
7
- data.tar.gz: 1ce71c5f5a02506ffb7dcb2661e08fd6a55a8b8820a69059c581ce91a4785b6c171ca159bb2879f7a0c485c1ac4ee45aff3fd811ae8dbcd6ec387e248d4c7b23
6
+ metadata.gz: 5b81f1e1dbb0a8e2593cfad75d143eecff148ab7bc9b1058b52d232ee42ad8fa8dfd47c3db7d05a3e489111b5d0754411793ec135edd286b316edbad558b58e0
7
+ data.tar.gz: d3ffb935950a08e1b363206f70849bbc523c8137495942d78929dba68966fd5186afb1b5f172cd2984891b09ba430be2d1ce40a402cbbbd4c01f1bf02e3c314c
data/README.md CHANGED
@@ -1,6 +1,8 @@
1
1
  <!-- PROJECT SHIELDS -->
2
+ [![Gem][gem-shield]](https://rubygems.org/gems/afip.rb/)
2
3
  [![Contributors][contributors-shield]](https://github.com/afipsdk/afip.rb/graphs/contributors)
3
4
  [![Closed issues][issues-shield]](https://github.com/afipsdk/afip.rb/issues)
5
+ [![License][license-shield]](https://github.com/afipsdk/afip.rb/blob/master/LICENSE.txt)
4
6
 
5
7
 
6
8
  <!-- PROJECT LOGO -->
@@ -29,7 +31,7 @@
29
31
 
30
32
  <!-- ABOUT THE PROJECT -->
31
33
  ## Acerca del proyecto
32
- Con más de 60.000 descargas en sus versiones de PHP, Node y Ruby desde el 2017 Afip SDK es la librería elegida por los desarrolladores para integrar sus plataformas con AFIP.
34
+ Con más de 60k descargas, desde el 2017 Afip SDK es la librería elegida por los desarrolladores para integrar sus plataformas con AFIP.
33
35
 
34
36
  Esta librería fue creada con la intención de ayudar a los programadores a usar los Web Services de AFIP sin romperse la cabeza ni perder tiempo tratando de entender la complicada documentación que AFIP provee.
35
37
 
@@ -43,8 +45,7 @@ Link del proyecto: [https://github.com/afipsdk/afip.rb](https://github.com/afips
43
45
  _Este software y sus desarrolladores no tienen ninguna relación con la AFIP._
44
46
 
45
47
  <!-- MARKDOWN LINKS & IMAGES -->
46
- [packagist-shield]: https://img.shields.io/packagist/dt/afipsdk/afip.rb.svg??logo=php&?logoColor=white
48
+ [gem-shield]: https://img.shields.io/gem/dt/afip.rb.svg?logo=ruby&?logoColor=white
47
49
  [contributors-shield]: https://img.shields.io/github/contributors/afipsdk/afip.rb.svg?color=orange
48
50
  [issues-shield]: https://img.shields.io/github/issues-closed-raw/afipsdk/afip.rb.svg?color=blueviolet
49
51
  [license-shield]: https://img.shields.io/github/license/afipsdk/afip.rb.svg?color=blue
50
-
data/lib/afip/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Afip
4
- VERSION = "1.0.1"
4
+ VERSION = "1.1.0"
5
5
  end
@@ -3,7 +3,7 @@
3
3
  module Afip
4
4
  class WebService
5
5
  # Configurable options
6
- attr_accessor :var, :soapv12, :WSDL, :URL, :WSDL_TEST, :URL_TEST, :afip, :options
6
+ attr_accessor :soapv12, :WSDL, :URL, :WSDL_TEST, :URL_TEST, :afip, :options
7
7
 
8
8
  def initialize(afip, options = {})
9
9
  self.afip = afip
data/lib/afip.rb CHANGED
@@ -97,9 +97,6 @@ module Afip
97
97
  request["sdk-environment"] = production == true ? "prod" : "dev"
98
98
  request["Authorization"] = "Bearer #{access_token}" if access_token
99
99
 
100
- data["cert"] = cert if cert
101
- data["key"] = key if key
102
-
103
100
  response = https.request(request)
104
101
 
105
102
  unless response.is_a? Net::HTTPSuccess
@@ -120,5 +117,102 @@ module Afip
120
117
 
121
118
  Afip::WebService.new(self, options)
122
119
  end
120
+
121
+ # Create AFIP cert
122
+ def createCert(username, password, cert_alias)
123
+ url = URI("https://app.afipsdk.com/api/v1/afip/certs")
124
+
125
+ https = Net::HTTP.new(url.host, url.port)
126
+ https.use_ssl = true
127
+
128
+ request = Net::HTTP::Post.new(url)
129
+ request["Content-Type"] = "application/json"
130
+ request["sdk-version-number"] = Afip::VERSION
131
+ request["sdk-library"] = "ruby"
132
+ request["sdk-environment"] = production == true ? "prod" : "dev"
133
+ request["Authorization"] = "Bearer #{access_token}" if access_token
134
+
135
+ data = {
136
+ "environment": production == true ? "prod" : "dev",
137
+ "tax_id": self.CUIT,
138
+ "username": username,
139
+ "password": password,
140
+ "alias": cert_alias
141
+ }
142
+
143
+ retry_request = 24
144
+
145
+ while (retry_request -= 1) >= 0
146
+ request.body = JSON.dump(data)
147
+ response = https.request(request)
148
+
149
+ unless response.is_a? Net::HTTPSuccess
150
+ begin
151
+ raise JSON.parse(response.read_body)
152
+ rescue
153
+ raise response.read_body
154
+ end
155
+ end
156
+
157
+ decoded_res = JSON.parse(response.read_body)
158
+
159
+ return decoded_res["data"] if decoded_res["status"] == "complete"
160
+
161
+ data["long_job_id"] = decoded_res["long_job_id"] if decoded_res["long_job_id"]
162
+
163
+ sleep(5)
164
+ end
165
+
166
+ raise "Error: Waiting for too long"
167
+ end
168
+
169
+ # Create authorization to use a web service
170
+ def createWSAuth(username, password, cert_alias, wsid)
171
+ url = URI("https://app.afipsdk.com/api/v1/afip/ws-auths")
172
+
173
+ https = Net::HTTP.new(url.host, url.port)
174
+ https.use_ssl = true
175
+
176
+ request = Net::HTTP::Post.new(url)
177
+ request["Content-Type"] = "application/json"
178
+ request["sdk-version-number"] = Afip::VERSION
179
+ request["sdk-library"] = "ruby"
180
+ request["sdk-environment"] = production == true ? "prod" : "dev"
181
+ request["Authorization"] = "Bearer #{access_token}" if access_token
182
+
183
+ data = {
184
+ "environment": production == true ? "prod" : "dev",
185
+ "tax_id": self.CUIT,
186
+ "username": username,
187
+ "password": password,
188
+ "alias": cert_alias,
189
+ "wsid": wsid
190
+ }
191
+
192
+ retry_request = 24
193
+
194
+ while (retry_request -= 1) >= 0
195
+ request.body = JSON.dump(data)
196
+ response = https.request(request)
197
+
198
+ unless response.is_a? Net::HTTPSuccess
199
+ begin
200
+ raise JSON.parse(response.read_body)
201
+ rescue
202
+ raise response.read_body
203
+ end
204
+ end
205
+
206
+ decoded_res = JSON.parse(response.read_body)
207
+
208
+ return decoded_res["data"] if decoded_res["status"] == "complete"
209
+
210
+ data["long_job_id"] = decoded_res["long_job_id"] if decoded_res["long_job_id"]
211
+
212
+ sleep(5)
213
+ end
214
+
215
+ raise "Error: Waiting for too long"
216
+ end
123
217
  end
124
218
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: afip.rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Afip SDK
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-12-26 00:00:00.000000000 Z
11
+ date: 2024-01-27 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: AfipSDK is the easyest way to connect with AFIP
14
14
  email: