bravo 0.4.0 → 1.0.0.alpha

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/README.textile DELETED
@@ -1,53 +0,0 @@
1
- h1. Bravo: la gema de facturación electrónica argentina
2
-
3
- "-Bravo-":http://images.coveralia.com/audio/b/Bravo-Desierto_Sin_Amor-Frontal.jpg Bravo permite la obtención del "-C.A.E.-":http://www.muevamueva.com/masmusica/latina/cae/images/fotos.5.gif C.A.E. (Código de Autorización Electrónico) por medio del Web Service de Facturación Electrónica provisto por la AFIP.
4
-
5
- h2. Instalación
6
-
7
- <pre>
8
- gem install bravo
9
- </pre>
10
-
11
- o
12
-
13
- <pre>
14
- gem 'bravo'
15
- </pre>
16
-
17
- en tu @Gemfile@
18
-
19
-
20
- h2. Configuraci&oacute;n
21
-
22
- Los servicios de AFIP requieren la utilizaci&oacute;n del Web Service de Autorizaci&oacute;n y Autenticaci&oacute;n ("wsaa readme":http://www.afip.gov.ar/ws/WSAA/README.txt)
23
-
24
- Luego de cumplidos los pasos indicados en el readme, basta con configurar Bravo con la ruta a los archivos:
25
-
26
- <pre>
27
- Bravo.pkey = "spec/fixtures/pkey"
28
- Bravo.cert = "spec/fixtures/cert.crt"
29
- </pre>
30
-
31
- y exportar la variable CUIT con el n&uacute;mero de cuit usado para obtener los certificados:
32
-
33
- @export CUIT=_numerodecuit_@
34
-
35
- Bravo acepta m&aacute;s opciones, para m&aacute;s detalles ver el "spec_helper":https://github.com/vurbia/Bravo/blob/master/spec/spec_helper.rb
36
-
37
- h2. Uso
38
-
39
- El uso de la gema se centra en el metodo @authorize@. Este m&eacute;todo invoca @FECAESolicitar@ y devuelve el resultado, que de ser exitoso incluye el CAE y su fecha de vencimento (ver "bill_spec":https://github.com/vurbia/Bravo/blob/master/spec/bravo/bill_spec.rb#L87)
40
-
41
-
42
- h2. TODO list
43
-
44
- * rdoc
45
- * mensajes de error m&aacute;s completos
46
-
47
-
48
-
49
- h2. Agradecimientos
50
-
51
- * Emilio Tagua por sus consejos y contribuciones.
52
-
53
- Copyright (c) 2010 Leandro Marcucci & Vurbia Technologies International Inc. See LICENSE.txt for further details.
@@ -1,10 +0,0 @@
1
- module Bravo
2
- class Authorizer
3
- attr_reader :pkey, :cert
4
-
5
- def initialize
6
- @pkey = Bravo.pkey
7
- @cert = Bravo.cert
8
- end
9
- end
10
- end
@@ -1,9 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
-
3
- describe "Authorizer" do
4
- it "should read credentials on initialize" do
5
- authorizer = Bravo::Authorizer.new
6
- authorizer.pkey.should == 'spec/fixtures/pkey'
7
- authorizer.cert.should == 'spec/fixtures/cert.crt'
8
- end
9
- end
data/wsaa-client.sh DELETED
@@ -1,171 +0,0 @@
1
- #!/bin/bash
2
- # FUNCTION: Bash script to get a TA from WSAA
3
- # AUTHOR: Gerardo Fisanotti - AFIP/SDG-SI/DIITEC/DEARIN - 15-nov-2010
4
- # Dependencies: curl, openssl >= 1.0, xmllint
5
- #
6
- # Modify following definitions according to your environment:
7
- #
8
- # URL=https://wsaahomo.afip.gov.ar/ws/services/LoginCms # WSAA URL
9
- # KEY=spec/fixtures/pkey # file containing the private key in PEM format
10
- # CRT=spec/fixtures/cert.crt # file containing the X.509 certificate in PEM format
11
- TAFN="TA.xml" # file name of the output file
12
- # modify next line if you need a proxy to get to the Internet or comment it out
13
- # if you don't need a proxy
14
- # export https_proxy="http://10.20.152.112:80"
15
- #
16
- # No further modifications should be needed below this line
17
- #==============================================================================
18
- function MakeTRA()
19
- #
20
- # Generate the XML containing the Access Ticket Request (TRA)
21
- #
22
- {
23
- # FROM=$(date -j -f "%a %b %d %T %Z %Y" "`date -v0H -v0M -v0S`" "+%s")
24
- # TO=$(date -j -f "%a %b %d %T %Z %Y" "`date -v23H -v59M -v59S`" "+%s")
25
- FROM=$(date "+%Y-%m-%dT00:00:00-03:00")
26
- TO=$(date "+%Y-%m-%dT23:59:59-03:00")
27
- ID=$(date "+%s")
28
- TRA=$(cat <<EOF
29
- <?xml version="1.0" encoding="UTF-8"?>
30
- <loginTicketRequest version="1.0">
31
- <header>
32
- <uniqueId>$ID</uniqueId>
33
- <generationTime>$FROM</generationTime>
34
- <expirationTime>$TO</expirationTime>
35
- </header>
36
- <service>wsfe</service>
37
- </loginTicketRequest>
38
- EOF
39
- )
40
- }
41
- #------------------------------------------------------------------------------
42
- function MakeCMS()
43
- #
44
- # Generate de CMS container (TRA + sign + certificate)
45
- #
46
- {
47
- CMS=$(
48
- echo "$TRA" |
49
- /usr/local/ssl/bin/openssl cms -sign -in /dev/stdin -signer $CRT -inkey $KEY -nodetach \
50
- -outform der |
51
- /usr/local/ssl/bin/openssl base64 -e
52
- )
53
- }
54
- #------------------------------------------------------------------------------
55
- function MakeSOAPrequest()
56
- #
57
- # Generate the SOAP request XML
58
- #
59
- {
60
- REQUEST=$(cat <<EOF
61
- <?xml version="1.0" encoding="UTF-8"?>
62
- <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://wsaa.view.sua.dvadac.desein.afip.gov">
63
- <SOAP-ENV:Body>
64
- <ns1:loginCms>
65
- <ns1:in0>
66
- $CMS
67
- </ns1:in0>
68
- </ns1:loginCms>
69
- </SOAP-ENV:Body>
70
- </SOAP-ENV:Envelope>
71
- EOF
72
- )
73
- }
74
- #------------------------------------------------------------------------------
75
- function CallWSAA()
76
- #
77
- # Invoke WSAA sending SOAP request XML to LoginCMS method
78
- #
79
- {
80
- RESPONSE=$(
81
- echo "$REQUEST" |
82
- curl -k -H 'Content-Type: application/soap+xml; action=""' -d @- $URL
83
- )
84
- echo "$REQUEST"
85
- }
86
- #------------------------------------------------------------------------------
87
- function ParseTA()
88
- #
89
- # Try to parse the results obtained from WSAA
90
- #
91
- {
92
- TOKEN=$(
93
- echo "$RESPONSE" |
94
- grep token |
95
- sed -e 's/&lt;token&gt;//' |
96
- sed -e 's/&lt;\/token&gt;//' |
97
- sed -e 's/ //g'
98
- )
99
- SIGN=$(
100
- echo "$RESPONSE" |
101
- grep sign |
102
- sed -e 's/&lt;sign&gt;//' |
103
- sed -e 's/&lt;\/sign&gt;//' |
104
- sed -e 's/ //g'
105
- )
106
- # If we did not get TOKEN, then it was a SOAP Fault, show the error message
107
- # and exit
108
- #
109
- if [ "$TOKEN" == "" ]
110
- then
111
- echo "ERROR: "
112
- echo "$(echo "$RESPONSE" | xmllint --format - | grep faultstring)"
113
- exit 1
114
- fi
115
- }
116
- #------------------------------------------------------------------------------
117
- function WriteTA()
118
- #
119
- # Write the token and sign to the output file
120
- #
121
- {
122
- cat <<EOF > $TAFN
123
- <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
124
- <loginTicketResponse version="1">
125
- <credentials>
126
- <token>$TOKEN</token>
127
- <sign>$SIGN</sign>
128
- </credentials>
129
- </loginTicketResponse>
130
- EOF
131
- }
132
-
133
- function WriteYAML()
134
- {
135
- cat <<EOF > /tmp/bravo_$(date +"%d_%m_%Y").yml
136
- token: '$TOKEN'
137
- sign: '$SIGN'
138
- EOF
139
- }
140
- #------------------------------------------------------------------------------
141
- #
142
- # MAIN program
143
- #
144
- # If we were invoked with a service name in arg #1, use it
145
- #[ $# -eq 1 ] && SERVICE=$1
146
- # otherwise, ask for it
147
- #[ $# -eq 0 ] && read -p "Service name: " SERVICE
148
-
149
- # Parse commandline arguments
150
- while getopts 'k:u:c:' OPTION
151
- do
152
- case $OPTION in
153
- c) CRT=$OPTARG
154
- ;;
155
- k) KEY=$OPTARG
156
- ;;
157
- u) URL=$OPTARG
158
- ;;
159
- esac
160
- done
161
- shift $(($OPTIND - 1))
162
- MakeTRA # Generate TRA
163
- MakeCMS # Generate CMS (TRA + signature + certificate)
164
- MakeSOAPrequest # Generate the SOAP request XML
165
- CallWSAA # Invoke WSAA sending SOAP request
166
- ParseTA # Parse the WSAA SOAP response, extract Token and Sign
167
- # WriteTA # Write an abbreviated TA.xml with Token and Sign only
168
- WriteYAML
169
- echo "Access Ticket acquired, written to: $TAFN" # Inform success and exit
170
- echo $REQUEST
171
- echo $TRA