qbwc 0.0.5 → 0.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.
Files changed (39) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +5 -1
  3. data/.travis.yml +6 -0
  4. data/README.md +152 -144
  5. data/Rakefile +7 -1
  6. data/lib/generators/qbwc/install/install_generator.rb +20 -4
  7. data/lib/generators/qbwc/install/templates/config/qbwc.rb +42 -26
  8. data/lib/generators/qbwc/install/templates/controllers/qbwc_controller.rb +2 -38
  9. data/lib/generators/qbwc/install/templates/db/migrate/create_qbwc_jobs.rb +15 -0
  10. data/lib/generators/qbwc/install/templates/db/migrate/create_qbwc_sessions.rb +16 -0
  11. data/lib/qbwc.rb +107 -71
  12. data/lib/qbwc/active_record.rb +6 -0
  13. data/lib/qbwc/active_record/job.rb +111 -0
  14. data/lib/qbwc/active_record/session.rb +52 -0
  15. data/lib/qbwc/controller.rb +176 -0
  16. data/lib/qbwc/job.rb +81 -18
  17. data/lib/qbwc/railtie.rb +8 -0
  18. data/lib/qbwc/request.rb +14 -23
  19. data/lib/qbwc/session.rb +100 -72
  20. data/lib/qbwc/version.rb +1 -1
  21. data/lib/qbwc/worker.rb +16 -0
  22. data/qbwc.gemspec +11 -5
  23. data/test/qbwc/controllers/controller_test.rb +157 -0
  24. data/test/qbwc/integration/job_management_test.rb +86 -0
  25. data/test/qbwc/integration/request_generation_test.rb +340 -0
  26. data/test/qbwc/integration/response_test.rb +303 -0
  27. data/test/qbwc/integration/routes_test.rb +38 -0
  28. data/test/qbwc/integration/session_test.rb +94 -0
  29. data/test/test_helper.rb +248 -0
  30. data/test/wash_out_helper.rb +76 -0
  31. metadata +133 -55
  32. data/Gemfile.lock +0 -72
  33. data/lib/qbwc/soap_wrapper.rb +0 -35
  34. data/lib/qbwc/soap_wrapper/QBWebConnectorSvc.rb +0 -69
  35. data/lib/qbwc/soap_wrapper/QBWebConnectorSvc.wsdl +0 -312
  36. data/lib/qbwc/soap_wrapper/default.rb +0 -198
  37. data/lib/qbwc/soap_wrapper/defaultMappingRegistry.rb +0 -163
  38. data/lib/qbwc/soap_wrapper/defaultServant.rb +0 -133
  39. data/spec/spec_helper.rb +0 -17
@@ -1,163 +0,0 @@
1
- require 'soap/mapping'
2
-
3
- module QBWC::DefaultMappingRegistry
4
- include QBWC
5
- EncodedRegistry = ::SOAP::Mapping::EncodedRegistry.new
6
- LiteralRegistry = ::SOAP::Mapping::LiteralRegistry.new
7
- NsDeveloperIntuitCom = "http://developer.intuit.com/"
8
-
9
- EncodedRegistry.register(
10
- :class => ArrayOfString,
11
- :schema_type => XSD::QName.new(NsDeveloperIntuitCom, "ArrayOfString"),
12
- :schema_element => [
13
- ["string", "SOAP::SOAPString[]", [0, nil]]
14
- ]
15
- )
16
-
17
- LiteralRegistry.register(
18
- :class => ArrayOfString,
19
- :schema_type => XSD::QName.new(NsDeveloperIntuitCom, "ArrayOfString"),
20
- :schema_element => [
21
- ["string", "SOAP::SOAPString[]", [0, nil]]
22
- ]
23
- )
24
-
25
- LiteralRegistry.register(
26
- :class => Authenticate,
27
- :schema_name => XSD::QName.new(NsDeveloperIntuitCom, "authenticate"),
28
- :schema_element => [
29
- ["strUserName", "SOAP::SOAPString", [0, 1]],
30
- ["strPassword", "SOAP::SOAPString", [0, 1]]
31
- ]
32
- )
33
-
34
- LiteralRegistry.register(
35
- :class => AuthenticateResponse,
36
- :schema_name => XSD::QName.new(NsDeveloperIntuitCom, "authenticateResponse"),
37
- :schema_element => [
38
- ["authenticateResult", "ArrayOfString", [0, 1]]
39
- ]
40
- )
41
-
42
- LiteralRegistry.register(
43
- :class => ServerVersion,
44
- :schema_name => XSD::QName.new(NsDeveloperIntuitCom, "serverVersion"),
45
- :schema_element => [
46
- ["strVersion", "SOAP::SOAPString", [0, 1]]
47
- ]
48
- )
49
-
50
- LiteralRegistry.register(
51
- :class => ServerVersionResponse,
52
- :schema_name => XSD::QName.new(NsDeveloperIntuitCom, "serverVersionResponse"),
53
- :schema_element => [
54
- ["serverVersionResult", "SOAP::SOAPString", [0, 1]]
55
- ]
56
- )
57
-
58
- LiteralRegistry.register(
59
- :class => ClientVersion,
60
- :schema_name => XSD::QName.new(NsDeveloperIntuitCom, "clientVersion"),
61
- :schema_element => [
62
- ["strVersion", "SOAP::SOAPString", [0, 1]]
63
- ]
64
- )
65
-
66
- LiteralRegistry.register(
67
- :class => ClientVersionResponse,
68
- :schema_name => XSD::QName.new(NsDeveloperIntuitCom, "clientVersionResponse"),
69
- :schema_element => [
70
- ["clientVersionResult", "SOAP::SOAPString", [0, 1]]
71
- ]
72
- )
73
-
74
- LiteralRegistry.register(
75
- :class => SendRequestXML,
76
- :schema_name => XSD::QName.new(NsDeveloperIntuitCom, "sendRequestXML"),
77
- :schema_element => [
78
- ["ticket", "SOAP::SOAPString", [0, 1]],
79
- ["strHCPResponse", "SOAP::SOAPString", [0, 1]],
80
- ["strCompanyFileName", "SOAP::SOAPString", [0, 1]],
81
- ["qbXMLCountry", "SOAP::SOAPString", [0, 1]],
82
- ["qbXMLMajorVers", "SOAP::SOAPInt"],
83
- ["qbXMLMinorVers", "SOAP::SOAPInt"]
84
- ]
85
- )
86
-
87
- LiteralRegistry.register(
88
- :class => SendRequestXMLResponse,
89
- :schema_name => XSD::QName.new(NsDeveloperIntuitCom, "sendRequestXMLResponse"),
90
- :schema_element => [
91
- ["sendRequestXMLResult", "SOAP::SOAPString", [0, 1]]
92
- ]
93
- )
94
-
95
- LiteralRegistry.register(
96
- :class => ReceiveResponseXML,
97
- :schema_name => XSD::QName.new(NsDeveloperIntuitCom, "receiveResponseXML"),
98
- :schema_element => [
99
- ["ticket", "SOAP::SOAPString", [0, 1]],
100
- ["response", "SOAP::SOAPString", [0, 1]],
101
- ["hresult", "SOAP::SOAPString", [0, 1]],
102
- ["message", "SOAP::SOAPString", [0, 1]]
103
- ]
104
- )
105
-
106
- LiteralRegistry.register(
107
- :class => ReceiveResponseXMLResponse,
108
- :schema_name => XSD::QName.new(NsDeveloperIntuitCom, "receiveResponseXMLResponse"),
109
- :schema_element => [
110
- ["receiveResponseXMLResult", "SOAP::SOAPInt"]
111
- ]
112
- )
113
-
114
- LiteralRegistry.register(
115
- :class => ConnectionError,
116
- :schema_name => XSD::QName.new(NsDeveloperIntuitCom, "connectionError"),
117
- :schema_element => [
118
- ["ticket", "SOAP::SOAPString", [0, 1]],
119
- ["hresult", "SOAP::SOAPString", [0, 1]],
120
- ["message", "SOAP::SOAPString", [0, 1]]
121
- ]
122
- )
123
-
124
- LiteralRegistry.register(
125
- :class => ConnectionErrorResponse,
126
- :schema_name => XSD::QName.new(NsDeveloperIntuitCom, "connectionErrorResponse"),
127
- :schema_element => [
128
- ["connectionErrorResult", "SOAP::SOAPString", [0, 1]]
129
- ]
130
- )
131
-
132
- LiteralRegistry.register(
133
- :class => GetLastError,
134
- :schema_name => XSD::QName.new(NsDeveloperIntuitCom, "getLastError"),
135
- :schema_element => [
136
- ["ticket", "SOAP::SOAPString", [0, 1]]
137
- ]
138
- )
139
-
140
- LiteralRegistry.register(
141
- :class => GetLastErrorResponse,
142
- :schema_name => XSD::QName.new(NsDeveloperIntuitCom, "getLastErrorResponse"),
143
- :schema_element => [
144
- ["getLastErrorResult", "SOAP::SOAPString", [0, 1]]
145
- ]
146
- )
147
-
148
- LiteralRegistry.register(
149
- :class => CloseConnection,
150
- :schema_name => XSD::QName.new(NsDeveloperIntuitCom, "closeConnection"),
151
- :schema_element => [
152
- ["ticket", "SOAP::SOAPString", [0, 1]]
153
- ]
154
- )
155
-
156
- LiteralRegistry.register(
157
- :class => CloseConnectionResponse,
158
- :schema_name => XSD::QName.new(NsDeveloperIntuitCom, "closeConnectionResponse"),
159
- :schema_element => [
160
- ["closeConnectionResult", "SOAP::SOAPString", [0, 1]]
161
- ]
162
- )
163
- end
@@ -1,133 +0,0 @@
1
-
2
- class QBWC::QBWebConnectorSvcSoap
3
- # SYNOPSIS
4
- # serverVersion(parameters)
5
- #
6
- # ARGS
7
- # parameters ServerVersion - {http://developer.intuit.com/}serverVersion
8
- #
9
- # RETURNS
10
- # parameters ServerVersionResponse - {http://developer.intuit.com/}serverVersionResponse
11
- #
12
- def serverVersion(parameters)
13
- #p parameters
14
- QBWC::ServerVersionResponse.new(nil)
15
- end
16
-
17
- # SYNOPSIS
18
- # clientVersion(parameters)
19
- #
20
- # ARGS
21
- # parameters ClientVersion - {http://developer.intuit.com/}clientVersion
22
- #
23
- # RETURNS
24
- # parameters ClientVersionResponse - {http://developer.intuit.com/}clientVersionResponse
25
- #
26
- def clientVersion(parameters)
27
- #p parameters
28
- QBWC::ClientVersionResponse.new(nil)
29
- end
30
-
31
- # SYNOPSIS
32
- # authenticate(parameters)
33
- #
34
- # ARGS
35
- # parameters Authenticate - {http://developer.intuit.com/}authenticate
36
- #
37
- # RETURNS
38
- # parameters AuthenticateResponse - {http://developer.intuit.com/}authenticateResponse
39
- #
40
- def authenticate(parameters)
41
- #p parameters
42
- QBWC::AuthenticateResponse.new([QBWC.username, QBWC.company_file_path]) #path to company file
43
- end
44
-
45
- # SYNOPSIS
46
- # sendRequestXML(parameters)
47
- #
48
- # ARGS
49
- # parameters SendRequestXML - {http://developer.intuit.com/}sendRequestXML
50
- #
51
- # RETURNS
52
- # parameters SendRequestXMLResponse - {http://developer.intuit.com/}sendRequestXMLResponse
53
- #
54
-
55
- def sendRequestXML(parameters)
56
- qbwc_session = QBWC::Session.new_or_unfinished
57
- next_request = qbwc_session.next
58
- QBWC::SendRequestXMLResponse.new( next_request ? wrap_in_version(next_request.request) : '')
59
- end
60
-
61
- # SYNOPSIS
62
- # receiveResponseXML(parameters)
63
- #
64
- # ARGS
65
- # parameters ReceiveResponseXML - {http://developer.intuit.com/}receiveResponseXML
66
- #
67
- # RETURNS
68
- # parameters ReceiveResponseXMLResponse - {http://developer.intuit.com/}receiveResponseXMLResponse
69
- #
70
- def receiveResponseXML(response)
71
- qbwc_session = QBWC::Session.new_or_unfinished
72
- qbwc_session.response = response.response
73
- QBWC::ReceiveResponseXMLResponse.new(qbwc_session.progress)
74
- end
75
-
76
- # SYNOPSIS
77
- # connectionError(parameters)
78
- #
79
- # ARGS
80
- # parameters ConnectionError - {http://developer.intuit.com/}connectionError
81
- #
82
- # RETURNS
83
- # parameters ConnectionErrorResponse - {http://developer.intuit.com/}connectionErrorResponse
84
- #
85
- def connectionError(parameters)
86
- #p [parameters]
87
- raise NotImplementedError.new
88
- end
89
-
90
- # SYNOPSIS
91
- # getLastError(parameters)
92
- #
93
- # ARGS
94
- # parameters GetLastError - {http://developer.intuit.com/}getLastError
95
- #
96
- # RETURNS
97
- # parameters GetLastErrorResponse - {http://developer.intuit.com/}getLastErrorResponse
98
- #
99
- def getLastError(parameters)
100
- #p [parameters]
101
- QBWC::GetLastErrorResponse.new(nil)
102
- end
103
-
104
- # SYNOPSIS
105
- # closeConnection(parameters)
106
- #
107
- # ARGS
108
- # parameters CloseConnection - {http://developer.intuit.com/}closeConnection
109
- #
110
- # RETURNS
111
- # parameters CloseConnectionResponse - {http://developer.intuit.com/}closeConnectionResponse
112
- #
113
- def closeConnection(parameters)
114
- #p [parameters]
115
- qbwc_session = QBWC::Session.session
116
- if qbwc_session && qbwc_session.finished?
117
- qbwc_session.current_request.process_response unless qbwc_session.current_request.blank?
118
- end
119
- QBWC::CloseConnectionResponse.new('OK')
120
- end
121
-
122
- private
123
-
124
- # wraps xml in version header
125
- def wrap_in_version(xml_rq)
126
- if QBWC.api == :qbpos
127
- %Q( <?qbposxml version="#{QBWC.min_version}"?> ) + xml_rq
128
- else
129
- %Q( <?qbxml version="#{QBWC.min_version}"?> ) + xml_rq
130
- end
131
- end
132
-
133
- end
@@ -1,17 +0,0 @@
1
- # This file was generated by the `rspec --init` command. Conventionally, all
2
- # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
3
- # Require this file using `require "spec_helper"` to ensure that it is only
4
- # loaded once.
5
- #
6
- # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
7
- RSpec.configure do |config|
8
- config.treat_symbols_as_metadata_keys_with_true_values = true
9
- config.run_all_when_everything_filtered = true
10
- config.filter_run :focus
11
-
12
- # Run specs in random order to surface order dependencies. If you find an
13
- # order dependency and want to debug it, you can fix the order by providing
14
- # the seed, which is printed after each run.
15
- # --seed 1234
16
- config.order = 'random'
17
- end