afip.rb 1.0.2 → 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 +1 -1
- data/lib/afip/version.rb +1 -1
- data/lib/afip.rb +97 -0
- 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
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
|
|
32
32
|
<!-- ABOUT THE PROJECT -->
|
|
33
33
|
## Acerca del proyecto
|
|
34
|
-
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.
|
|
35
35
|
|
|
36
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.
|
|
37
37
|
|
data/lib/afip/version.rb
CHANGED
data/lib/afip.rb
CHANGED
|
@@ -117,5 +117,102 @@ module Afip
|
|
|
117
117
|
|
|
118
118
|
Afip::WebService.new(self, options)
|
|
119
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
|
|
120
217
|
end
|
|
121
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: 2024-01-
|
|
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:
|