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.
Files changed (5) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/lib/afip/version.rb +1 -1
  4. data/lib/afip.rb +97 -0
  5. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f4c0c0cd1161e15cd97f4d01312a678fe5a8bc3f9935a182a58205e53cc6adad
4
- data.tar.gz: d6ca090bf60908eed7eb66b0e538a2016302501e6c043f0696ca25d4a8e19663
3
+ metadata.gz: 0e42c189eaf440590f00483ea1ad2c50c71d5a2d76657dcd65c34f4d38f119df
4
+ data.tar.gz: 58ddb08555df0fdeb8afe73e462a8e557e1aa51caa72afbb4adc61dc7c79e05c
5
5
  SHA512:
6
- metadata.gz: 56aa5eed6e8e9728c29594e56097c3e016c8ec842db726568276432cce0ac9a63dad47fa9df380fc499ee50f7f78c6c30b18d5cebd342d77fab7f46cca6a3dc3
7
- data.tar.gz: c8376dd90ed01696dc665fbf8f7be6eef9afdb3aa55f6fea93c3fec2867eb5d03480530ae13034f15cbb6becd1b9d1a1cfa4866ee8f579f471e5e601070f69e5
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 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.
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Afip
4
- VERSION = "1.0.2"
4
+ VERSION = "1.1.0"
5
5
  end
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.2
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-02 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: