Geo-IP

 view release on metacpan or  search on metacpan

IP.xs  view on Meta::CPAN

	RETVAL = GeoIP_country_name_by_name(gi,name);
    OUTPUT:
	RETVAL

void
name_by_ipnum_v6(gi, ptr)
	GeoIP *gi
	char * ptr
    PREINIT:
        char * n;
    PPCODE:
        ST(0) = sv_newmortal();
	n = GeoIP_name_by_ipnum_v6(gi,*(geoipv6_t*)ptr);
        if ( n != NULL ) {
          ST(0) = newSVpv(n, strlen(n));
          free(n);
#if defined(sv_utf8_decode)
          if ( GeoIP_charset(gi) == GEOIP_CHARSET_UTF8 )
            SvUTF8_on(ST(0));
#endif
          sv_2mortal(ST(0));
        }
       XSRETURN(1);

void
name_by_addr_v6(gi, addr)
	GeoIP *gi
	char * addr
    PREINIT:
        char * n;
    PPCODE:
        ST(0) = sv_newmortal();
	n = GeoIP_name_by_addr_v6(gi,addr);
        if ( n != NULL ) {
          ST(0) = newSVpv(n, strlen(n));
          free(n);
#if defined(sv_utf8_decode)
          if ( GeoIP_charset(gi) == GEOIP_CHARSET_UTF8 )
            SvUTF8_on(ST(0));
#endif
          sv_2mortal(ST(0));
        }
       XSRETURN(1);

void
name_by_name_v6(gi, name)
	GeoIP *gi
	char * name
    PREINIT:
        char * n;
    PPCODE:
        ST(0) = sv_newmortal();
	n = GeoIP_name_by_name_v6(gi,name);
        if ( n != NULL ) {
          ST(0) = newSVpv(n, strlen(n));
          free(n);
#if defined(sv_utf8_decode)
          if ( GeoIP_charset(gi) == GEOIP_CHARSET_UTF8 )
            SvUTF8_on(ST(0));
#endif
          sv_2mortal(ST(0));
        }
       XSRETURN(1);
     
void
org_by_addr(gi, addr)
	GeoIP *gi
	char * addr
    PREINIT:
        char * n;
    PPCODE:
        ST(0) = sv_newmortal();
	n = GeoIP_org_by_addr(gi,addr);
        if ( n != NULL ) {
          ST(0) = newSVpv(n, strlen(n));
          free(n);
#if defined(sv_utf8_decode)
          if ( GeoIP_charset(gi) == GEOIP_CHARSET_UTF8 )
            SvUTF8_on(ST(0));
#endif
          sv_2mortal(ST(0));
        }
       XSRETURN(1);

void
org_by_name(gi, name)
	GeoIP *gi
	char * name
    PREINIT:
        char * n;
    PPCODE:
        ST(0) = sv_newmortal();
	n = GeoIP_org_by_name(gi,name);
        if ( n != NULL ) {
          ST(0) = newSVpv(n, strlen(n));
          free(n);
#if defined(sv_utf8_decode)
          if ( GeoIP_charset(gi) == GEOIP_CHARSET_UTF8 )
            SvUTF8_on(ST(0));
#endif
          sv_2mortal(ST(0));
        }
       XSRETURN(1);


void
range_by_ip(gi, addr)
	GeoIP *gi
	const char * addr
    PREINIT:
    char ** r;
    PPCODE:
	r = GeoIP_range_by_ip(gi,addr);
        if (r != NULL){
		EXTEND(SP,2);
		PUSHs( sv_2mortal( newSVpv(r[0], 0) ) );
		PUSHs( sv_2mortal( newSVpv(r[1], 0) ) );

		if ( r[0] )
			free(r[0]);
		if ( r[1] )
			free(r[1]);
		free(r);
        }

void
region_by_addr(gi, addr)
	GeoIP *gi
	char * addr
    PREINIT:
	GeoIPRegion * gir;
    PPCODE:
	gir = GeoIP_region_by_addr(gi,addr);
        if (gir){
	  EXTEND(SP,2);

          ( gir->country_code[0] == '\0' && gir->country_code[1] == '\0' )
            ? PUSHs ( sv_newmortal() )
 	    : PUSHs ( sv_2mortal( newSVpv(gir->country_code, 2) ) );

          ( gir->region[0] == '\0' && gir->region[1] == '\0' )
            ? PUSHs ( sv_newmortal() )

IP.xs  view on Meta::CPAN


          GeoIPRegion_delete(gir);
        }

void
region_by_name(gi, name)
	GeoIP *gi
	char * name
    PREINIT:
	GeoIPRegion * gir;
    PPCODE:
	gir = GeoIP_region_by_name(gi,name);
        if (gir){
	  EXTEND(SP,2);

          ( gir->country_code[0] == '\0' && gir->country_code[1] == '\0' )
            ? PUSHs ( sv_newmortal() )
 	    : PUSHs ( sv_2mortal( newSVpv(gir->country_code, 2) ) );

          ( gir->region[0] == '\0' && gir->region[1] == '\0' )
            ? PUSHs ( sv_newmortal() )

IP.xs  view on Meta::CPAN

    CODE:
	RETVAL = (const char *) GeoIP_time_zone_by_country_and_region(gir->country_code, gir->region);
    OUTPUT:
	RETVAL

void
city(gir)
	GeoIPRecord *gir
    PREINIT:
        SV * n;
    PPCODE:
        n = newSVpv( gir->city ? gir->city : "", 0);
#if defined(sv_utf8_decode)
        if ( gir->charset == GEOIP_CHARSET_UTF8 )
          SvUTF8_on(n);
#endif
        sv_2mortal(n);
        ST(0) = n;
        XSRETURN(1);

const char *



( run in 1.491 second using v1.01-cache-2.11-cpan-5511b514fd6 )