Alien-InteractiveBrokers
view release on metacpan or search on metacpan
lib/Alien/InteractiveBrokers.pm view on Meta::CPAN
package Alien::InteractiveBrokers;
#
# Alien::InteractiveBrokers - Provides config info for IB API files
#
# Copyright (c) 2010-2012 Jason McManus
#
# Full POD documentation after __END__
#
use File::Spec::Functions qw( catdir catfile );
use Carp qw( croak confess );
use strict;
use warnings;
###
### Variables
###
use vars qw( @ISA @EXPORT_OK $VERSION $TRUE $FALSE );
BEGIN {
require Exporter;
@ISA = qw( Exporter );
@EXPORT_OK = qw( path includes classpath version );
$VERSION = '9.6602';
}
*TRUE = \1;
*FALSE = \0;
my $versions = {
'9.64' => {
desc => 'IB API 9.64',
url => 'http://www.interactivebrokers.com/download/twsapi_unixmac_964.jar',
},
'9.65' => {
desc => 'IB API 9.65',
url => 'http://www.interactivebrokers.com/download/twsapi_unixmac_965.jar',
},
'9.66' => {
desc => 'IB API 9.66',
url => 'http://www.interactivebrokers.com/download/twsapi_unixmac_966.jar',
},
'9.65' => {
desc => 'IB API 9.67 Beta',
url => 'http://www.interactivebrokers.com/download/twsapi_unixmac_967.jar',
},
};
my $DEF_API_VERSION = '9.66';
# Global cache; either points to object ref, or just used as is.
# XXX: This may explode upon multiple Alien::SWIG objects being created,
# but we'll worry about that if anyone ever needs to actually do that.
our $CACHE = {}; # our, for testing
###
### Constructor
###
sub new
{
my $class = shift;
# Set up a default object
my $self = {};
# Instantiate the object. sort of.
bless( $self, $class );
# Direct the global cache to us (see note above)
$CACHE = $self;
return( $self );
}
###
### Methods
###
sub path
{
return( $CACHE->{path} )
if( exists( $CACHE->{path} ) );
my $base = $INC{ join( '/', 'Alien', 'InteractiveBrokers.pm' ) };
$base =~ s{\.pm$}{};
my $path = catfile( $base, 'IBJts' );
croak( "Path $path doesn't appear to contain the IB API installation;" .
" please re-install Alien::InteractiveBrokers." )
unless( -d $path );
$CACHE->{path} = $path;
return( $path );
}
sub includes
{
my @includes;
if( exists( $CACHE->{includes} ) )
{
@includes = @{ $CACHE->{includes} };
}
( run in 0.539 second using v1.01-cache-2.11-cpan-64ef6c95b5d )