hive_geoip2 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ext/hive_geoip2/hive_geoip2.c +33 -13
- data/hive_geoip2.gemspec +1 -1
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4d4afa678b6f16d1b3930d2097190ffa062314b5
|
4
|
+
data.tar.gz: a28800070b21496a1ff4fcac98675de12f08f9c7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7fb3f12ad482847d12f730b788a4670567d642c318bba406bd1c915576487ba999c51721fafa91a6ad7e05da3a02e21c76d3cc381a8e1b73b9d1fcf320e08da3
|
7
|
+
data.tar.gz: a617549a489b8e3895d61c75e46574d4efb80e365de2098c45999c8eea94ece737fad297bd6c35d3ed9924f49a3e05a7f10f2a76afaa1d31ec3cdbf26b1d9983
|
@@ -5,9 +5,6 @@
|
|
5
5
|
|
6
6
|
#include "maxminddb.h"
|
7
7
|
|
8
|
-
#define WORDS_64 (64 / CHAR_BIT / SIZEOF_LONG)
|
9
|
-
#define WORDS_128 (128/ CHAR_BIT / SIZEOF_LONG)
|
10
|
-
|
11
8
|
VALUE rb_mHive;
|
12
9
|
VALUE rb_cGeoIP2;
|
13
10
|
|
@@ -160,7 +157,21 @@ parse_data_list(MMDB_entry_data_list_s *data_list, VALUE *ret_obj) {
|
|
160
157
|
|
161
158
|
case MMDB_DATA_TYPE_UINT64:
|
162
159
|
{
|
163
|
-
*
|
160
|
+
const uint8_t *hex = "0123456789abcdef";
|
161
|
+
int i, idx = 0;
|
162
|
+
|
163
|
+
size_t size = sizeof(uint64_t);
|
164
|
+
char buf[size * 2 + 1];
|
165
|
+
uint8_t *data = &data_list->entry_data.uint64;
|
166
|
+
|
167
|
+
for (i = size - 1; i >= 0; i--) {
|
168
|
+
buf[idx++] = hex[data[i] >> 4];
|
169
|
+
buf[idx++] = hex[data[i] & 0x0f];
|
170
|
+
}
|
171
|
+
|
172
|
+
buf[idx] = '\0';
|
173
|
+
|
174
|
+
*ret_obj = rb_cstr2inum(buf, 16);
|
164
175
|
|
165
176
|
data_list = data_list->next;
|
166
177
|
|
@@ -169,21 +180,30 @@ parse_data_list(MMDB_entry_data_list_s *data_list, VALUE *ret_obj) {
|
|
169
180
|
|
170
181
|
case MMDB_DATA_TYPE_UINT128:
|
171
182
|
{
|
183
|
+
const uint8_t *hex = "0123456789abcdef";
|
184
|
+
int i, idx = 0;
|
172
185
|
#if MMDB_UINT128_IS_BYTE_ARRAY
|
173
|
-
|
174
|
-
|
175
|
-
uint8_t idx = 15;
|
186
|
+
size_t size = 16;
|
187
|
+
char buf[size * 2 + 1];
|
176
188
|
uint8_t *data = data_list->entry_data.uint128;
|
177
189
|
|
178
|
-
for (i = 0; i <
|
179
|
-
buf[
|
180
|
-
idx
|
190
|
+
for (i = 0; i < size; ++i) {
|
191
|
+
buf[idx++] = hex[data[i] >> 4];
|
192
|
+
buf[idx++] = hex[data[i] & 0x0f];
|
181
193
|
}
|
182
|
-
|
183
|
-
*ret_obj = rb_big_unpack(&buf, WORDS_128);
|
184
194
|
#else
|
185
|
-
|
195
|
+
size_t size = sizeof(mmdb_uint128_t);
|
196
|
+
uint8_t buf[size * 2 + 1];
|
197
|
+
uint8_t *data = &data_list->entry_data.uint128;
|
198
|
+
|
199
|
+
for (i = size - 1; i >= 0; i--) {
|
200
|
+
buf[idx++] = hex[data[i] >> 4];
|
201
|
+
buf[idx++] = hex[data[i] & 0x0f];
|
202
|
+
}
|
186
203
|
#endif
|
204
|
+
buf[idx] = '\0';
|
205
|
+
|
206
|
+
*ret_obj = rb_cstr2inum(buf, 16);
|
187
207
|
|
188
208
|
data_list = data_list->next;
|
189
209
|
|
data/hive_geoip2.gemspec
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hive_geoip2
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Maxime Youdine
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-10-06 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description:
|
14
14
|
email:
|
@@ -17,10 +17,10 @@ extensions:
|
|
17
17
|
- ext/hive_geoip2/extconf.rb
|
18
18
|
extra_rdoc_files: []
|
19
19
|
files:
|
20
|
-
- ext/hive_geoip2/extconf.rb
|
21
|
-
- ext/hive_geoip2/hive_geoip2.c
|
22
20
|
- hive_geoip2.gemspec
|
23
21
|
- lib/hive_geoip2/hive_geoip2.rb
|
22
|
+
- ext/hive_geoip2/extconf.rb
|
23
|
+
- ext/hive_geoip2/hive_geoip2.c
|
24
24
|
homepage: https://github.com/desuwa/hive_geoip2
|
25
25
|
licenses:
|
26
26
|
- MIT
|
@@ -31,17 +31,17 @@ require_paths:
|
|
31
31
|
- lib
|
32
32
|
required_ruby_version: !ruby/object:Gem::Requirement
|
33
33
|
requirements:
|
34
|
-
- -
|
34
|
+
- - '>='
|
35
35
|
- !ruby/object:Gem::Version
|
36
36
|
version: 1.9.2
|
37
37
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
|
-
- -
|
39
|
+
- - '>='
|
40
40
|
- !ruby/object:Gem::Version
|
41
41
|
version: '0'
|
42
42
|
requirements: []
|
43
43
|
rubyforge_project:
|
44
|
-
rubygems_version: 2.
|
44
|
+
rubygems_version: 2.0.14
|
45
45
|
signing_key:
|
46
46
|
specification_version: 4
|
47
47
|
summary: libmaxminddb GeoIP2 Ruby bindings
|