sw-sdk-ruby 0.0.2.2.pre

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.
data/Response.rb ADDED
@@ -0,0 +1,47 @@
1
+ require_relative 'Services.rb'
2
+ class Response
3
+ @status = nil
4
+ @message = nil
5
+ @messageDetail = nil
6
+ @data = nil
7
+ @statusCode = nil
8
+ @response = nil
9
+
10
+ def getStatus()
11
+ return @status
12
+ end
13
+ def getMessage()
14
+ return @message
15
+ end
16
+ def getMessageDetail()
17
+ return @messageDetail
18
+ end
19
+ def getData()
20
+ return @data
21
+ end
22
+ def getStatusCode()
23
+ return @statusCode
24
+ end
25
+ def getResponse()
26
+ return @response
27
+ end
28
+
29
+ def validateStatusCode(response)
30
+ if(response.getStatus == 'success')
31
+ return response
32
+ else
33
+ case response.getStatusCode.to_i
34
+ when 300..399
35
+ Services::raiseException("\nmessage: #{response.getMessage}\nmessageDetail: #{response.getMessageDetail}\nstatus: #{response.getStatus}\nstatusCode: #{response.getStatusCode} Redireccion")
36
+ when 400..499
37
+ if response.getMessage =~ /^307/
38
+ return response
39
+ end
40
+ Services::raiseException("\nmessage: #{response.getMessage}\nmessageDetail: #{response.getMessageDetail}\nstatus: #{response.getStatus}\nstatusCode: #{response.getStatusCode} Error del cliente")
41
+ when 500..599
42
+ Services::raiseException("\nmessage: #{response.getMessage}\nmessageDetail: #{response.getMessageDetail}\nstatus: #{response.getStatus}\nstatusCode: #{response.getStatusCode} Error del servidor")
43
+ end
44
+ end
45
+
46
+ end
47
+ end
@@ -0,0 +1,24 @@
1
+ require_relative '../Services.rb'
2
+ require_relative 'accept_reject_request.rb'
3
+
4
+ class AcceptReject < Services
5
+ def self.set(params)
6
+ Services::set_data(params)
7
+ end
8
+
9
+ def self.accept_reject_csd(uuids, rfc, password, csd, key)
10
+ return SwAcceptReject::accept_reject_csd(Services::get_url, Services::get_token, uuids, rfc, password, csd, key)
11
+ end
12
+
13
+ def self.accept_reject_uuid(uuid, rfc, action)
14
+ return SwAcceptReject::accept_reject_uuid(Services::get_url, Services::get_token, uuid, rfc, action)
15
+ end
16
+
17
+ def self.accept_reject_pfx(uuids, rfc, password, pfx)
18
+ return SwAcceptReject::accept_reject_pfx(Services::get_url, Services::get_token, uuids, rfc, password, pfx)
19
+ end
20
+
21
+ def self.accept_reject_xml(xml)
22
+ return SwAcceptReject::accept_reject_xml(Services::get_url, Services::get_token, xml)
23
+ end
24
+ end
@@ -0,0 +1,58 @@
1
+ require 'net/http'
2
+ require 'json'
3
+ require 'securerandom'
4
+ require_relative '../Response/generic_response.rb'
5
+
6
+ class SwAcceptReject
7
+
8
+ def self.accept_reject_uuid(url, token, uuid, rfc, action)
9
+ url = URI(url + "/acceptreject/" + rfc + "/" + uuid + "/" + action)
10
+ http = Net::HTTP.new(url.host, url.port)
11
+ request = Net::HTTP::Post.new(url)
12
+ request["Authorization"] = 'bearer ' + token
13
+ request["Cache-Control"] = 'no-cache'
14
+ response = http.request(request)
15
+ response_obj = GenericResponse.new(response)
16
+ return response_obj.validate_status_code(response_obj)
17
+ end
18
+
19
+ def self.accept_reject_csd(url, token, uuids, rfc, password, csd, key)
20
+ url = URI(url + "/acceptreject/csd")
21
+ http = Net::HTTP.new(url.host, url.port)
22
+ request = Net::HTTP::Post.new(url)
23
+ request["Content-Type"] = 'application/json'
24
+ request["Authorization"] = 'bearer ' + token
25
+ request["Cache-Control"] = 'no-cache'
26
+ request.body = '{"uuids": ' + JSON.generate(uuids) + ', "password": "' + password + '", "rfc": "' + rfc + '", "b64Cer": "' + csd + '", "b64Key": "' + key + '"}'
27
+ response = http.request(request)
28
+ response_obj = GenericResponse.new(response)
29
+ return response_obj.validate_status_code(response_obj)
30
+ end
31
+
32
+ def self.accept_reject_pfx(url, token, uuids, rfc, password, pfx)
33
+ url = URI(url + "/acceptreject/pfx")
34
+ http = Net::HTTP.new(url.host, url.port)
35
+ request = Net::HTTP::Post.new(url)
36
+ request["Content-Type"] = 'application/json'
37
+ request["Authorization"] = 'bearer ' + token
38
+ request["Cache-Control"] = 'no-cache'
39
+ request.body = '{"uuids": ' + JSON.generate(uuids) + ', "password": "' + password + '", "rfc": "' + rfc + '", "b64Pfx": "' + pfx + '"}'
40
+ response = http.request(request)
41
+ response_obj = GenericResponse.new(response)
42
+ return response_obj.validate_status_code(response_obj)
43
+ end
44
+
45
+ def self.accept_reject_xml(url, token, xml)
46
+ url = URI(url + "/acceptreject/xml")
47
+ boundary = '----' + SecureRandom.urlsafe_base64
48
+ http = Net::HTTP.new(url.host, url.port)
49
+ request = Net::HTTP::Post.new(url)
50
+ request["Authorization"] = 'bearer ' + token
51
+ request["Content-Type"] = 'multipart/form-data;boundary="' + boundary + '"'
52
+ request["Cache-Control"] = 'no-cache'
53
+ request.body = "--" + boundary + "\r\nContent-Type: text/xml\r\nContent-Transfer-Encoding: binary\r\nContent-Disposition: form-data; name=\"xml\"; filename=\"xml\"\r\n\r\n" + xml + "\r\n--" + boundary + "--"
54
+ response = http.request(request)
55
+ response_obj = GenericResponse.new(response)
56
+ return response_obj.validate_status_code(response_obj)
57
+ end
58
+ end
@@ -0,0 +1,12 @@
1
+ require_relative '../Services.rb'
2
+ require_relative 'auth_request.rb'
3
+
4
+ class Auth < Services
5
+ def self.set(params)
6
+ Services::set_data(params)
7
+ end
8
+
9
+ def self.authentication
10
+ return SwAuthentication::authentication(Services::get_url, Services::get_user, Services::get_password)
11
+ end
12
+ end
@@ -0,0 +1,15 @@
1
+ require 'net/http'
2
+ require_relative 'auth_response.rb'
3
+
4
+ class SwAuthentication
5
+ def self.authentication(url, user, password)
6
+ url = URI(url + "/security/authenticate")
7
+ http = Net::HTTP.new(url.host, url.port)
8
+ request = Net::HTTP::Post.new(url)
9
+ request["user"] = user
10
+ request["password"] = password
11
+ response = http.request(request)
12
+ response_obj = AuthResponse.new(response)
13
+ return response_obj.validate_status_code(response_obj)
14
+ end
15
+ end
@@ -0,0 +1,44 @@
1
+ require_relative '../Response.rb'
2
+ require 'net/http'
3
+ require 'json'
4
+
5
+ class AuthResponse < Response
6
+ @response = nil
7
+ @token = nil
8
+ @time_expire = nil
9
+ def initialize(response)
10
+ set(response)
11
+ end
12
+
13
+ def set(response)
14
+ begin
15
+ @status_code = response.code
16
+ if response.body
17
+ @response = JSON.parse(response.body)
18
+ if @status_code.to_i == 200
19
+ @status = @response['status']
20
+ @data = @response['data']
21
+ @token = @data['token']
22
+ @time_expire = @data['expires_in']
23
+ else
24
+ @status = 'error'
25
+ @message = @response['message']
26
+ @messageDetail = @response['messageDetail']
27
+ end
28
+ else
29
+ response.value
30
+ end
31
+ rescue => exception
32
+ @status = 'error'
33
+ @message = exception.backtrace
34
+ end
35
+ end
36
+
37
+ def get_token
38
+ return @token
39
+ end
40
+
41
+ def get_time_expire
42
+ return @time_expire
43
+ end
44
+ end
@@ -0,0 +1,12 @@
1
+ require_relative '../Services.rb'
2
+ require_relative 'balance_request.rb'
3
+
4
+ class Balance < Services
5
+ def self.set(params)
6
+ Services::set_data(params)
7
+ end
8
+
9
+ def self.account_balance()
10
+ return SwAccountBalance::account_balance(Services::get_url, Services::get_token)
11
+ end
12
+ end
@@ -0,0 +1,16 @@
1
+ require 'net/http'
2
+ require_relative '../Response/generic_response.rb'
3
+
4
+ class SwAccountBalance
5
+ def self.account_balance(url, token)
6
+ url = URI(url + "/account/balance")
7
+ http = Net::HTTP.new(url.host, url.port)
8
+ request = Net::HTTP::Get.new(url)
9
+ request["Authorization"] = 'bearer ' + token
10
+ request["Content-Type"] = 'application/json'
11
+ request["Cache-Control"] = 'no-cache'
12
+ response = http.request(request)
13
+ response_obj = GenericResponse.new(response)
14
+ return response_obj.validate_status_code(response_obj)
15
+ end
16
+ end
@@ -0,0 +1,24 @@
1
+ require_relative '../Services.rb'
2
+ require_relative 'cancelation_request.rb'
3
+
4
+ class Cancelation < Services
5
+ def self.set(params)
6
+ Services::set_data(params)
7
+ end
8
+
9
+ def self.cancel_csd(uuid, rfc, password, csd, key)
10
+ return SwCancelation::cancel_csd(Services::get_url, Services::get_token, uuid, rfc, password, csd, key)
11
+ end
12
+
13
+ def self.cancel_uuid(uuid, rfc)
14
+ return SwCancelation::cancel_uuid(Services::get_url, Services::get_token, uuid, rfc)
15
+ end
16
+
17
+ def self.cancel_pfx(uuid, rfc, password, pfx)
18
+ return SwCancelation::cancel_pfx(Services::get_url, Services::get_token, uuid, rfc, password, pfx)
19
+ end
20
+
21
+ def self.cancel_xml(xml)
22
+ return SwCancelation::cancel_xml(Services::get_url, Services::get_token, xml)
23
+ end
24
+ end
@@ -0,0 +1,56 @@
1
+ require 'net/http'
2
+ require 'securerandom'
3
+ require_relative '../Response/generic_response.rb'
4
+
5
+ class SwCancelation
6
+ def self.cancel_uuid(url, token, uuid, rfc)
7
+ url = URI(url + "/cfdi33/cancel/" + rfc + "/" + uuid)
8
+ http = Net::HTTP.new(url.host, url.port)
9
+ request = Net::HTTP::Post.new(url)
10
+ request["Authorization"] = 'bearer ' + token
11
+ request["Cache-Control"] = 'no-cache'
12
+ response = http.request(request)
13
+ response_obj = GenericResponse.new(response)
14
+ return response_obj.validate_status_code(response_obj)
15
+ end
16
+
17
+ def self.cancel_csd(url, token, uuid, rfc, password, csd, key)
18
+ url = URI(url + "/cfdi33/cancel/csd")
19
+ http = Net::HTTP.new(url.host, url.port)
20
+ request = Net::HTTP::Post.new(url)
21
+ request["Content-Type"] = 'application/json'
22
+ request["Authorization"] = 'bearer ' + token
23
+ request["Cache-Control"] = 'no-cache'
24
+ request.body = '{"uuid": "' + uuid + '", "password": "' + password + '", "rfc": "' + rfc + '", "b64Cer": "' + csd + '", "b64Key": "' + key + '"}'
25
+ response = http.request(request)
26
+ response_obj = GenericResponse.new(response)
27
+ return response_obj.validate_status_code(response_obj)
28
+ end
29
+
30
+ def self.cancel_pfx(url, token, uuid, rfc, password, pfx)
31
+ url = URI(url + "/cfdi33/cancel/pfx")
32
+ http = Net::HTTP.new(url.host, url.port)
33
+ request = Net::HTTP::Post.new(url)
34
+ request["Content-Type"] = 'application/json'
35
+ request["Authorization"] = 'bearer ' + token
36
+ request["Cache-Control"] = 'no-cache'
37
+ request.body = '{"uuid": "' + uuid + '", "password": "' + password + '", "rfc": "' + rfc + '", "b64Pfx": "' + pfx + '"}'
38
+ response = http.request(request)
39
+ response_obj = GenericResponse.new(response)
40
+ return response_obj.validate_status_code(response_obj)
41
+ end
42
+
43
+ def self.cancel_xml(url, token, xml)
44
+ url = URI(url + "/cfdi33/cancel/xml")
45
+ boundary = '----' + SecureRandom.urlsafe_base64
46
+ http = Net::HTTP.new(url.host, url.port)
47
+ request = Net::HTTP::Post.new(url)
48
+ request["Authorization"] = 'bearer ' + token
49
+ request["Content-Type"] = 'multipart/form-data;boundary="' + boundary + '"'
50
+ request["Cache-Control"] = 'no-cache'
51
+ request.body = "--" + boundary + "\r\nContent-Type: text/xml\r\nContent-Transfer-Encoding: binary\r\nContent-Disposition: form-data; name=\"xml\"; filename=\"xml\"\r\n\r\n" + xml + "\r\n--" + boundary + "--"
52
+ response = http.request(request)
53
+ response_obj = GenericResponse.new(response)
54
+ return response_obj.validate_status_code(response_obj)
55
+ end
56
+ end
@@ -0,0 +1,32 @@
1
+ require_relative '../Services.rb'
2
+ require_relative 'issue_request.rb'
3
+
4
+ class Issue < Services
5
+ def self.set(params)
6
+ Services::set_data(params)
7
+ end
8
+ def self.issue_v1(xml, b64 = false)
9
+ SwIssue::issue(Services::get_url, Services::get_token, 'v1', xml, b64)
10
+ end
11
+ def self.issue_v2(xml, b64 = false)
12
+ SwIssue::issue(Services::get_url, Services::get_token, 'v2', xml, b64)
13
+ end
14
+ def self.issue_v3(xml, b64 = false)
15
+ SwIssue::issue(Services::get_url, Services::get_token, 'v3', xml, b64)
16
+ end
17
+ def self.issue_v4(xml, b64 = false)
18
+ SwIssue::issue(Services::get_url, Services::get_token, 'v4', xml, b64)
19
+ end
20
+ def self.issue_JSON_v1(json)
21
+ SwIssue::issue_JSON(Services::get_url, Services::get_token, 'v1', json)
22
+ end
23
+ def self.issue_JSON_v2(json)
24
+ SwIssue::issue_JSON(Services::get_url, Services::get_token, 'v2', json)
25
+ end
26
+ def self.issue_JSON_v3(json)
27
+ SwIssue::issue_JSON(Services::get_url, Services::get_token, 'v3', json)
28
+ end
29
+ def self.issue_JSON_v4(json)
30
+ SwIssue::issue_JSON(Services::get_url, Services::get_token, 'v4', json)
31
+ end
32
+ end
@@ -0,0 +1,37 @@
1
+ require 'net/http'
2
+ require 'json'
3
+ require 'securerandom'
4
+ require_relative '../Response/generic_response.rb'
5
+
6
+ class SwIssue
7
+ def self.issue(url, token, version, xml, base64)
8
+ b64 = ""
9
+ if base64
10
+ b64 = '/b64/'
11
+ end
12
+ boundary = '----' + SecureRandom.urlsafe_base64
13
+ url = URI(url + "/cfdi33/issue/" + version + b64)
14
+ http = Net::HTTP.new(url.host, url.port)
15
+ request = Net::HTTP::Post.new(url)
16
+ request["Authorization"] = 'bearer ' + token
17
+ request["Content-Type"] = 'multipart/form-data; boundary="' + boundary + '"'
18
+ request["Cache-Control"] = 'no-cache'
19
+ request.body = "--" + boundary + "\r\nContent-Type: text/xml\r\nContent-Transfer-Encoding: binary\r\nContent-Disposition: form-data; name=\"xml\"; filename=\"xml\"\r\n\r\n" + xml + "\r\n--" + boundary + "--"
20
+ response = http.request(request)
21
+ response_obj = GenericResponse.new(response)
22
+ return response_obj.validate_status_code(response_obj)
23
+ end
24
+
25
+ def self.issue_JSON(url, token, version, json)
26
+ url = URI(url + "/v3/cfdi33/issue/json/" + version)
27
+ http = Net::HTTP.new(url.host, url.port)
28
+ request = Net::HTTP::Post.new(url)
29
+ request["Authorization"] = 'bearer ' + token
30
+ request["Content-Type"] = 'application/jsontoxml'
31
+ request["Cache-Control"] = 'no-cache'
32
+ request.body = json
33
+ response = http.request(request)
34
+ response_obj = GenericResponse.new(response)
35
+ return response_obj.validate_status_code(response_obj)
36
+ end
37
+ end
data/lib/Pdf/Pdf.rb ADDED
@@ -0,0 +1,12 @@
1
+ require_relative '../Services.rb'
2
+ require_relative 'pdf_request.rb'
3
+
4
+ class Pdf < Services
5
+ def self.set(params)
6
+ Services::set_data(params)
7
+ end
8
+
9
+ def self.generate_pdf(xml, template_id = nil, extras = nil)
10
+ return SWPdf::pdf(Services::get_url, Services::get_token, xml)
11
+ end
12
+ end
@@ -0,0 +1,22 @@
1
+ require 'net/http'
2
+ require 'securerandom'
3
+ require_relative 'pdf_response.rb'
4
+
5
+ class SWPdf
6
+ def self.pdf(url, token, xml, template_id = "3a12dabd-66fa-4f18-af09-d1efd77ae9ce", extras = nil)
7
+ boundary = '----' + SecureRandom.urlsafe_base64
8
+ cbody = "--" + boundary + "\r\nContent-Type: text/xml\r\nContent-Transfer-Encoding: binary\r\nContent-Disposition: form-data; name=\"file\"; filename=\"xml\"\r\n\r\n" + xml + "\r\n--" + boundary + "--"
9
+ url = URI(url + "/pdf/v1/generate/")
10
+ http = Net::HTTP.new(url.host, url.port)
11
+ request = Net::HTTP::Post.new(url)
12
+ request["Authorization"] = 'bearer ' + token
13
+ request["TemplateId"] = template_id
14
+ request["Content-Type"] = 'multipart/form-data; boundary="' + boundary + '"'
15
+ request["Cache-Control"] = 'no-cache'
16
+ request["Content-length"] = cbody.length
17
+ request.body = cbody
18
+ response = http.request(request)
19
+ response_obj = PdfResponse.new(response)
20
+ return response_obj.validate_status_code(response_obj)
21
+ end
22
+ end
@@ -0,0 +1,22 @@
1
+ require_relative '../Response.rb'
2
+ require 'net/http'
3
+ require 'json'
4
+
5
+ class PendingsResponse < Response
6
+ def initialize(response)
7
+ set(response)
8
+ end
9
+
10
+ def set(response)
11
+ begin
12
+ @status_code = response.code
13
+ @response = JSON.parse(response.read_body)
14
+ @data = @response['data']
15
+ @status = @response['status']
16
+ rescue
17
+ @message = @response['message']
18
+ @messageDetail = @response['messageDetail']
19
+ end
20
+ end
21
+
22
+ end