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  }