github.com/go-ole/go-ole@v1.2.6/connect_test.go (about) 1 // +build !windows 2 3 package ole 4 5 import "strings" 6 7 func Example_quickbooks() { 8 var err error 9 10 connection := &Connection{nil} 11 12 err = connection.Initialize() 13 if err != nil { 14 return 15 } 16 defer connection.Uninitialize() 17 18 err = connection.Create("QBXMLRP2.RequestProcessor.1") 19 if err != nil { 20 if err.(*OleError).Code() == CO_E_CLASSSTRING { 21 return 22 } 23 } 24 defer connection.Release() 25 26 dispatch, err := connection.Dispatch() 27 if err != nil { 28 return 29 } 30 defer dispatch.Release() 31 } 32 33 func Example_quickbooksConnectHelperCallDispatch() { 34 var err error 35 36 connection := &Connection{nil} 37 38 err = connection.Initialize() 39 if err != nil { 40 return 41 } 42 defer connection.Uninitialize() 43 44 err = connection.Create("QBXMLRP2.RequestProcessor.1") 45 if err != nil { 46 if err.(*OleError).Code() == CO_E_CLASSSTRING { 47 return 48 } 49 return 50 } 51 defer connection.Release() 52 53 dispatch, err := connection.Dispatch() 54 if err != nil { 55 return 56 } 57 defer dispatch.Release() 58 59 var result *VARIANT 60 61 _, err = dispatch.Call("OpenConnection2", "", "Test Application 1", 1) 62 if err != nil { 63 return 64 } 65 66 result, err = dispatch.Call("BeginSession", "", 2) 67 if err != nil { 68 return 69 } 70 71 ticket := result.ToString() 72 73 _, err = dispatch.Call("EndSession", ticket) 74 if err != nil { 75 return 76 } 77 78 _, err = dispatch.Call("CloseConnection") 79 if err != nil { 80 return 81 } 82 } 83 84 func Example_quickbooksConnectHelperDispatchProperty() { 85 var err error 86 87 connection := &Connection{nil} 88 89 err = connection.Initialize() 90 if err != nil { 91 return 92 } 93 defer connection.Uninitialize() 94 95 err = connection.Create("QBXMLRP2.RequestProcessor.1") 96 if err != nil { 97 if err.(*OleError).Code() == CO_E_CLASSSTRING { 98 return 99 } 100 return 101 } 102 defer connection.Release() 103 104 dispatch, err := connection.Dispatch() 105 if err != nil { 106 return 107 } 108 defer dispatch.Release() 109 110 var result *VARIANT 111 112 _, err = dispatch.Call("OpenConnection2", "", "Test Application 1", 1) 113 if err != nil { 114 return 115 } 116 117 result, err = dispatch.Call("BeginSession", "", 2) 118 if err != nil { 119 return 120 } 121 122 ticket := result.ToString() 123 124 result, err = dispatch.Get("QBXMLVersionsForSession", ticket) 125 if err != nil { 126 return 127 } 128 129 conversion := result.ToArray() 130 131 totalElements, _ := conversion.TotalElements(0) 132 if totalElements != 13 { 133 return 134 } 135 136 versions := conversion.ToStringArray() 137 expectedVersionString := "1.0, 1.1, 2.0, 2.1, 3.0, 4.0, 4.1, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0" 138 versionString := strings.Join(versions, ", ") 139 140 if len(versions) != 13 { 141 return 142 } 143 144 if expectedVersionString != versionString { 145 return 146 } 147 148 conversion.Release() 149 150 _, err = dispatch.Call("EndSession", ticket) 151 if err != nil { 152 return 153 } 154 155 _, err = dispatch.Call("CloseConnection") 156 if err != nil { 157 return 158 } 159 }