afip.rb 1.0.2 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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:
|