afip.rb 1.0.1 → 1.1.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 +4 -4
- data/README.md +4 -3
- data/lib/afip/version.rb +1 -1
- data/lib/afip/web_service.rb +1 -1
- data/lib/afip.rb +97 -3
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0e42c189eaf440590f00483ea1ad2c50c71d5a2d76657dcd65c34f4d38f119df
|
4
|
+
data.tar.gz: 58ddb08555df0fdeb8afe73e462a8e557e1aa51caa72afbb4adc61dc7c79e05c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
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
|
-
[
|
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
data/lib/afip/web_service.rb
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
module Afip
|
4
4
|
class WebService
|
5
5
|
# Configurable options
|
6
|
-
attr_accessor :
|
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
|
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:
|
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:
|