Class: GeoIP2::Database
- Inherits:
-
Data
- Object
- Data
- GeoIP2::Database
- Defined in:
- lib/geoip2/database.rb,
ext/geoip2/geoip2.c
Instance Method Summary collapse
Constructor Details
#initialize(path) ⇒ Object
233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 |
# File 'ext/geoip2/geoip2.c', line 233 static VALUE rb_geoip2_db_initialize(VALUE self, VALUE path) { char *db_path; MMDB_s *mmdb; Check_Type(path, T_STRING); db_path = StringValueCStr(path); TypedData_Get_Struct(self, struct MMDB_s, &rb_mmdb_type, mmdb); mmdb_open(db_path, mmdb); return Qnil; } |
Instance Method Details
#close ⇒ Object
249 250 251 252 253 254 255 256 257 258 259 260 261 |
# File 'ext/geoip2/geoip2.c', line 249 static VALUE rb_geoip2_db_close(VALUE self) { MMDB_s *mmdb; TypedData_Get_Struct(self, struct MMDB_s, &rb_mmdb_type, mmdb); if (!mmdb_is_closed(mmdb)) { mmdb_close(mmdb); } return Qnil; } |
#lookup(ip) ⇒ Object
263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 |
# File 'ext/geoip2/geoip2.c', line 263 static VALUE rb_geoip2_db_lookup(VALUE self, VALUE ip) { char *ip_str; MMDB_s *mmdb; MMDB_lookup_result_s result; MMDB_lookup_result_s *result_ptr; VALUE obj; Check_Type(ip, T_STRING); ip_str = StringValueCStr(ip); TypedData_Get_Struct(self, struct MMDB_s, &rb_mmdb_type, mmdb); result = mmdb_lookup(mmdb, ip_str, false); if (!result.found_entry) { return Qnil; } obj = TypedData_Make_Struct(rb_cGeoIP2LookupResult, struct MMDB_lookup_result_s, &rb_lookup_result_type, result_ptr); result_ptr->found_entry = result.found_entry; result_ptr->entry = result.entry; result_ptr->netmask = result.netmask; return obj; } |