sucker 1.3.0.pre → 1.3.0.pre.1

Sign up to get free protection for your applications and to get access to all the features.
data/lib/sucker.rb CHANGED
@@ -17,6 +17,6 @@ module Sucker
17
17
  # :secret => 'API SECRET')
18
18
  #
19
19
  def self.new(args={})
20
- Sucker::Request.new(args)
20
+ Request.new(args)
21
21
  end
22
22
  end
data/lib/sucker.rbc CHANGED
@@ -141,7 +141,7 @@ x
141
141
  3
142
142
  new
143
143
  i
144
- 45
144
+ 43
145
145
  23
146
146
  0
147
147
  10
@@ -159,32 +159,30 @@ i
159
159
  45
160
160
  2
161
161
  3
162
- 43
163
- 4
164
162
  13
165
163
  71
166
- 5
164
+ 4
167
165
  47
168
166
  9
169
- 39
167
+ 37
170
168
  47
171
169
  49
172
- 6
170
+ 5
173
171
  0
174
172
  13
175
173
  20
176
174
  0
177
175
  47
178
176
  49
179
- 7
177
+ 6
180
178
  1
181
179
  15
182
180
  8
183
- 44
181
+ 42
184
182
  20
185
183
  0
186
184
  49
187
- 5
185
+ 4
188
186
  1
189
187
  11
190
188
  I
@@ -197,7 +195,7 @@ I
197
195
  1
198
196
  n
199
197
  p
200
- 8
198
+ 7
201
199
  x
202
200
  4
203
201
  Hash
@@ -205,12 +203,9 @@ x
205
203
  16
206
204
  new_from_literal
207
205
  x
208
- 6
209
- Sucker
210
- n
211
- x
212
206
  7
213
207
  Request
208
+ n
214
209
  x
215
210
  3
216
211
  new
@@ -231,7 +226,7 @@ e
231
226
  I
232
227
  14
233
228
  I
234
- 2d
229
+ 2b
235
230
  x
236
231
  44
237
232
  /Users/hakanensari/code/sucker/lib/sucker.rb
@@ -15,10 +15,10 @@ module Sucker #:nodoc:
15
15
  end
16
16
 
17
17
  def normalize
18
- inject({}) do |hash, key_value|
19
- key, value = key_value
20
- value = value.is_a?(Array) ? value.join(',') : value.to_s
21
- hash[key.to_s.camelize] = value
18
+ inject({}) do |hash, kv|
19
+ k, v = kv
20
+ v = v.is_a?(Array) ? v.join(',') : v.to_s
21
+ hash[k.to_s.camelize] = v
22
22
  hash
23
23
  end
24
24
  end
@@ -549,14 +549,14 @@ x
549
549
  4
550
550
  hash
551
551
  x
552
- 9
553
- key_value
552
+ 2
553
+ kv
554
554
  x
555
- 3
556
- key
555
+ 1
556
+ k
557
557
  x
558
- 5
559
- value
558
+ 1
559
+ v
560
560
  x
561
561
  6
562
562
  inject
@@ -1,7 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  require 'net/http'
4
- require 'uri'
4
+ require 'openssl'
5
5
 
6
6
  module Sucker #:nodoc:
7
7
 
@@ -36,7 +36,7 @@ module Sucker #:nodoc:
36
36
  # :key => 'API KEY',
37
37
  # :secret => 'API SECRET')
38
38
  #
39
- def initialize(args)
39
+ def initialize(args={})
40
40
  args.each { |k, v| send("#{k}=", v) }
41
41
  end
42
42
 
@@ -48,7 +48,7 @@ module Sucker #:nodoc:
48
48
  # 'ItemId' => '0816614024' }
49
49
  #
50
50
  def <<(hash)
51
- self.parameters.merge!(hash)
51
+ parameters.merge!(hash)
52
52
  end
53
53
 
54
54
  # Performs a request and returns a response
@@ -56,8 +56,11 @@ module Sucker #:nodoc:
56
56
  # response = worker.get
57
57
  #
58
58
  def get
59
- response = request_through(local_ip) do
60
- Net::HTTP.get_response(uri)
59
+ response = bind_to local_ip do
60
+ Net::HTTP.start(host) do |http|
61
+ query = build_signed_query
62
+ http.get("/onca/xml?#{query}")
63
+ end
61
64
  end
62
65
  Response.new(response)
63
66
  end
@@ -72,48 +75,20 @@ module Sucker #:nodoc:
72
75
  # worker.version = '2010-06-01'
73
76
  #
74
77
  def version=(version)
75
- self.parameters['Version'] = version
78
+ parameters['Version'] = version
76
79
  end
77
80
 
78
81
  private
79
82
 
80
- def build_query
81
- parameters.
82
- normalize.
83
- merge({ 'AWSAccessKeyId' => key }).
84
- merge({ 'AssociateTag' => associate_tag.to_s }).
85
- sort.
86
- map do |k, v|
87
- "#{k}=" + escape(v)
88
- end.join('&')
89
- end
90
-
91
- def build_signed_query
92
- query = build_query
93
-
94
- digest = OpenSSL::Digest::Digest.new('sha256')
95
- string = ['GET', host, '/onca/xml', query].join("\n")
96
- hmac = OpenSSL::HMAC.digest(digest, secret, string)
97
- signature = escape([hmac].pack('m').chomp)
98
-
99
- query + '&Signature=' + signature
100
- end
101
-
102
- def escape(value)
103
- value.gsub(/([^a-zA-Z0-9_.~-]+)/) do
104
- '%' + $1.unpack('H2' * $1.bytesize).join('%').upcase
105
- end
106
- end
107
-
108
- def host
109
- HOSTS[locale]
110
- end
111
-
112
- def request_through(local_ip)
83
+ # I am gently monkey-patching TCPSocket here to be able to bind the request
84
+ # to a local IP if specified, emulating cURL's interface option. Once a
85
+ # request is made, I reverse the patch, leaving TCPSOcket in its original
86
+ # state.
87
+ def bind_to(local_ip)
113
88
  if local_ip
114
89
  TCPSocket.instance_eval do
115
90
  (class << self; self; end).instance_eval do
116
- alias_method :orig_open, :open
91
+ alias_method :original_open, :open
117
92
 
118
93
  define_method(:open) do |conn_address, conn_port|
119
94
  original_open(conn_address, conn_port, local_ip)
@@ -127,8 +102,8 @@ module Sucker #:nodoc:
127
102
  if local_ip
128
103
  TCPSocket.instance_eval do
129
104
  (class << self; self; end).instance_eval do
130
- alias_method :open, :orig_open
131
- remove_method :orig_open
105
+ alias_method :open, :original_open
106
+ remove_method :original_open
132
107
  end
133
108
  end
134
109
  end
@@ -136,18 +111,35 @@ module Sucker #:nodoc:
136
111
  return_value
137
112
  end
138
113
 
139
- def uri
140
- URI::HTTP.build(
141
- :host => host,
142
- :path => '/onca/xml',
143
- :query => build_signed_query)
114
+ def build_query
115
+ parameters.
116
+ normalize.
117
+ merge({ 'AWSAccessKeyId' => key,
118
+ 'AssociateTag' => associate_tag.to_s }).
119
+ sort.
120
+ map { |k, v| "#{k}=" + escape(v) }.
121
+ join('&')
144
122
  end
145
123
 
146
- def uris
147
- locales.map do |locale|
148
- self.locale = locale
149
- uri.to_s
124
+ def build_signed_query
125
+ query = build_query
126
+
127
+ digest = OpenSSL::Digest::Digest.new('sha256')
128
+ string = ['GET', host, '/onca/xml', query].join("\n")
129
+ hmac = OpenSSL::HMAC.digest(digest, secret, string)
130
+ signature = escape([hmac].pack('m').chomp)
131
+
132
+ query + '&Signature=' + signature
133
+ end
134
+
135
+ def escape(value)
136
+ value.gsub(/([^a-zA-Z0-9_.~-]+)/) do
137
+ '%' + $1.unpack('H2' * $1.bytesize).join('%').upcase
150
138
  end
151
139
  end
140
+
141
+ def host
142
+ HOSTS[locale]
143
+ end
152
144
  end
153
145
  end
@@ -9,7 +9,7 @@ x
9
9
  10
10
10
  __script__
11
11
  i
12
- 46
12
+ 55
13
13
  5
14
14
  7
15
15
  0
@@ -28,30 +28,39 @@ i
28
28
  1
29
29
  1
30
30
  15
31
- 99
31
+ 5
32
32
  7
33
33
  3
34
- 65
34
+ 64
35
+ 47
35
36
  49
37
+ 1
38
+ 1
39
+ 15
40
+ 99
41
+ 7
36
42
  4
43
+ 65
44
+ 49
45
+ 5
37
46
  2
38
47
  13
39
48
  99
40
49
  12
41
50
  7
42
- 5
51
+ 6
43
52
  12
44
53
  7
45
- 6
54
+ 7
46
55
  12
47
56
  65
48
57
  12
49
58
  49
50
- 7
59
+ 8
51
60
  4
52
61
  15
53
62
  49
54
- 5
63
+ 6
55
64
  0
56
65
  15
57
66
  2
@@ -66,7 +75,7 @@ I
66
75
  0
67
76
  n
68
77
  p
69
- 8
78
+ 9
70
79
  s
71
80
  8
72
81
  net/http
@@ -74,6 +83,9 @@ x
74
83
  7
75
84
  require
76
85
  s
86
+ 7
87
+ openssl
88
+ s
77
89
  3
78
90
  uri
79
91
  x
@@ -151,7 +163,7 @@ x
151
163
  7
152
164
  Request
153
165
  i
154
- 289
166
+ 275
155
167
  5
156
168
  66
157
169
  65
@@ -426,20 +438,6 @@ i
426
438
  49
427
439
  26
428
440
  4
429
- 15
430
- 99
431
- 7
432
- 48
433
- 7
434
- 49
435
- 65
436
- 67
437
- 49
438
- 25
439
- 0
440
- 49
441
- 26
442
- 4
443
441
  11
444
442
  I
445
443
  6
@@ -451,7 +449,7 @@ I
451
449
  0
452
450
  n
453
451
  p
454
- 50
452
+ 48
455
453
  x
456
454
  5
457
455
  HOSTS
@@ -532,13 +530,27 @@ x
532
530
  10
533
531
  initialize
534
532
  i
535
- 8
533
+ 22
534
+ 23
535
+ 0
536
+ 10
537
+ 14
538
+ 44
539
+ 43
540
+ 0
541
+ 78
542
+ 49
543
+ 1
544
+ 1
545
+ 19
546
+ 0
547
+ 15
536
548
  20
537
549
  0
538
550
  56
539
- 0
551
+ 2
540
552
  50
541
- 1
553
+ 3
542
554
  0
543
555
  11
544
556
  I
@@ -546,12 +558,18 @@ I
546
558
  I
547
559
  1
548
560
  I
549
- 1
561
+ 0
550
562
  I
551
563
  1
552
564
  n
553
565
  p
554
- 2
566
+ 4
567
+ x
568
+ 4
569
+ Hash
570
+ x
571
+ 16
572
+ new_from_literal
555
573
  M
556
574
  1
557
575
  p
@@ -618,7 +636,7 @@ p
618
636
  I
619
637
  0
620
638
  I
621
- 28
639
+ 29
622
640
  I
623
641
  1b
624
642
  x
@@ -640,13 +658,13 @@ p
640
658
  I
641
659
  -1
642
660
  I
643
- 27
661
+ 28
644
662
  I
645
- 0
663
+ e
646
664
  I
647
- 28
665
+ 29
648
666
  I
649
- 8
667
+ 16
650
668
  x
651
669
  52
652
670
  /Users/hakanensari/code/sucker/lib/sucker/request.rb
@@ -672,10 +690,9 @@ x
672
690
  2
673
691
  <<
674
692
  i
675
- 10
693
+ 9
676
694
  5
677
- 49
678
- 0
695
+ 48
679
696
  0
680
697
  20
681
698
  0
@@ -705,13 +722,13 @@ p
705
722
  I
706
723
  -1
707
724
  I
708
- 32
725
+ 33
709
726
  I
710
727
  0
711
728
  I
712
- 33
729
+ 34
713
730
  I
714
- a
731
+ 9
715
732
  x
716
733
  52
717
734
  /Users/hakanensari/code/sucker/lib/sucker/request.rb
@@ -801,7 +818,7 @@ x
801
818
  3
802
819
  get
803
820
  i
804
- 12
821
+ 16
805
822
  45
806
823
  0
807
824
  1
@@ -810,12 +827,16 @@ i
810
827
  5
811
828
  48
812
829
  3
813
- 49
814
830
  4
815
- 1
831
+ 80
832
+ 56
833
+ 4
834
+ 50
835
+ 5
836
+ 2
816
837
  11
817
838
  I
818
- 3
839
+ 5
819
840
  I
820
841
  0
821
842
  I
@@ -825,7 +846,7 @@ I
825
846
  I
826
847
  -2
827
848
  p
828
- 5
849
+ 6
829
850
  x
830
851
  3
831
852
  Net
@@ -834,19 +855,108 @@ x
834
855
  4
835
856
  HTTP
836
857
  x
858
+ 4
859
+ host
860
+ M
861
+ 1
862
+ p
863
+ 2
864
+ x
865
+ 9
866
+ for_block
867
+ t
868
+ n
869
+ x
837
870
  3
838
- uri
871
+ get
872
+ i
873
+ 25
874
+ 57
875
+ 19
876
+ 0
877
+ 15
878
+ 5
879
+ 48
880
+ 0
881
+ 19
882
+ 1
883
+ 15
884
+ 20
885
+ 0
886
+ 7
887
+ 1
888
+ 20
889
+ 1
890
+ 47
891
+ 101
892
+ 2
893
+ 63
894
+ 2
895
+ 49
896
+ 3
897
+ 1
898
+ 11
899
+ I
900
+ 6
901
+ I
902
+ 2
903
+ I
904
+ 1
905
+ I
906
+ 1
907
+ n
908
+ p
909
+ 4
839
910
  x
840
- 12
841
- get_response
911
+ 18
912
+ build_signed_query
913
+ s
914
+ 10
915
+ /onca/xml?
916
+ x
917
+ 4
918
+ to_s
919
+ x
920
+ 3
921
+ get
922
+ p
923
+ 7
924
+ I
925
+ 0
926
+ I
927
+ 3d
928
+ I
929
+ 4
930
+ I
931
+ 3e
932
+ I
933
+ a
934
+ I
935
+ 3f
936
+ I
937
+ 19
938
+ x
939
+ 52
940
+ /Users/hakanensari/code/sucker/lib/sucker/request.rb
941
+ p
942
+ 2
943
+ x
944
+ 4
945
+ http
946
+ x
947
+ 5
948
+ query
949
+ x
950
+ 5
951
+ start
842
952
  p
843
953
  3
844
954
  I
845
955
  0
846
956
  I
847
- 3c
957
+ 3d
848
958
  I
849
- c
959
+ 10
850
960
  x
851
961
  52
852
962
  /Users/hakanensari/code/sucker/lib/sucker/request.rb
@@ -873,15 +983,15 @@ p
873
983
  I
874
984
  -1
875
985
  I
876
- 3a
986
+ 3b
877
987
  I
878
988
  0
879
989
  I
880
- 3b
990
+ 3c
881
991
  I
882
992
  d
883
993
  I
884
- 3e
994
+ 42
885
995
  I
886
996
  2a
887
997
  x
@@ -969,11 +1079,11 @@ p
969
1079
  I
970
1080
  -1
971
1081
  I
972
- 42
1082
+ 46
973
1083
  I
974
1084
  0
975
1085
  I
976
- 43
1086
+ 47
977
1087
  I
978
1088
  21
979
1089
  x
@@ -992,10 +1102,9 @@ x
992
1102
  8
993
1103
  version=
994
1104
  i
995
- 17
1105
+ 16
996
1106
  5
997
- 49
998
- 0
1107
+ 48
999
1108
  0
1000
1109
  7
1001
1110
  1
@@ -1035,13 +1144,13 @@ p
1035
1144
  I
1036
1145
  -1
1037
1146
  I
1038
- 4a
1147
+ 4e
1039
1148
  I
1040
1149
  0
1041
1150
  I
1042
- 4b
1151
+ 4f
1043
1152
  I
1044
- 11
1153
+ 10
1045
1154
  x
1046
1155
  52
1047
1156
  /Users/hakanensari/code/sucker/lib/sucker/request.rb
@@ -1064,7 +1173,7 @@ x
1064
1173
  11
1065
1174
  build_query
1066
1175
  i
1067
- 66
1176
+ 56
1068
1177
  5
1069
1178
  48
1070
1179
  0
@@ -1074,7 +1183,7 @@ i
1074
1183
  44
1075
1184
  43
1076
1185
  2
1077
- 79
1186
+ 80
1078
1187
  49
1079
1188
  3
1080
1189
  1
@@ -1089,32 +1198,22 @@ i
1089
1198
  6
1090
1199
  2
1091
1200
  15
1092
- 49
1093
- 7
1094
- 1
1095
- 44
1096
- 43
1097
- 2
1098
- 79
1099
- 49
1100
- 3
1101
- 1
1102
1201
  13
1103
1202
  7
1104
- 8
1203
+ 7
1105
1204
  64
1106
1205
  5
1107
1206
  48
1108
- 9
1207
+ 8
1109
1208
  49
1110
- 10
1209
+ 9
1111
1210
  0
1112
1211
  49
1113
1212
  6
1114
1213
  2
1115
1214
  15
1116
1215
  49
1117
- 7
1216
+ 10
1118
1217
  1
1119
1218
  49
1120
1219
  11
@@ -1163,9 +1262,6 @@ key
1163
1262
  x
1164
1263
  3
1165
1264
  []=
1166
- x
1167
- 5
1168
- merge
1169
1265
  s
1170
1266
  12
1171
1267
  AssociateTag
@@ -1176,6 +1272,9 @@ x
1176
1272
  4
1177
1273
  to_s
1178
1274
  x
1275
+ 5
1276
+ merge
1277
+ x
1179
1278
  4
1180
1279
  sort
1181
1280
  M
@@ -1245,19 +1344,15 @@ x
1245
1344
  1
1246
1345
  +
1247
1346
  p
1248
- 7
1347
+ 5
1249
1348
  I
1250
1349
  0
1251
1350
  I
1252
- 51
1351
+ 55
1253
1352
  I
1254
1353
  2
1255
1354
  I
1256
- 56
1257
- I
1258
- a
1259
- I
1260
- 57
1355
+ 5a
1261
1356
  I
1262
1357
  1d
1263
1358
  x
@@ -1285,37 +1380,37 @@ p
1285
1380
  I
1286
1381
  -1
1287
1382
  I
1288
- 50
1383
+ 54
1289
1384
  I
1290
1385
  0
1291
1386
  I
1292
- 51
1387
+ 55
1293
1388
  I
1294
1389
  6
1295
1390
  I
1296
- 53
1391
+ 58
1297
1392
  I
1298
- 18
1393
+ e
1299
1394
  I
1300
- 51
1395
+ 57
1301
1396
  I
1302
- 1b
1397
+ 19
1303
1398
  I
1304
- 54
1399
+ 58
1305
1400
  I
1306
- 30
1401
+ 26
1307
1402
  I
1308
- 51
1403
+ 55
1309
1404
  I
1310
- 3b
1405
+ 31
1311
1406
  I
1312
- 58
1407
+ 5b
1313
1408
  I
1314
- 3e
1409
+ 34
1315
1410
  I
1316
- 51
1411
+ 55
1317
1412
  I
1318
- 42
1413
+ 38
1319
1414
  x
1320
1415
  52
1321
1416
  /Users/hakanensari/code/sucker/lib/sucker/request.rb
@@ -1531,31 +1626,31 @@ p
1531
1626
  I
1532
1627
  -1
1533
1628
  I
1534
- 5b
1629
+ 5e
1535
1630
  I
1536
1631
  0
1537
1632
  I
1538
- 5c
1633
+ 5f
1539
1634
  I
1540
1635
  6
1541
1636
  I
1542
- 5e
1637
+ 61
1543
1638
  I
1544
1639
  2b
1545
1640
  I
1546
- 5f
1641
+ 62
1547
1642
  I
1548
1643
  41
1549
1644
  I
1550
- 60
1645
+ 63
1551
1646
  I
1552
1647
  53
1553
1648
  I
1554
- 61
1649
+ 64
1555
1650
  I
1556
1651
  68
1557
1652
  I
1558
- 63
1653
+ 66
1559
1654
  I
1560
1655
  74
1561
1656
  x
@@ -1734,7 +1829,7 @@ p
1734
1829
  I
1735
1830
  0
1736
1831
  I
1737
- 68
1832
+ 6b
1738
1833
  I
1739
1834
  27
1740
1835
  x
@@ -1750,11 +1845,11 @@ p
1750
1845
  I
1751
1846
  -1
1752
1847
  I
1753
- 66
1848
+ 69
1754
1849
  I
1755
1850
  0
1756
1851
  I
1757
- 67
1852
+ 6a
1758
1853
  I
1759
1854
  1a
1760
1855
  x
@@ -1813,11 +1908,11 @@ p
1813
1908
  I
1814
1909
  -1
1815
1910
  I
1816
- 6c
1911
+ 6f
1817
1912
  I
1818
1913
  0
1819
1914
  I
1820
- 6d
1915
+ 70
1821
1916
  I
1822
1917
  a
1823
1918
  x
@@ -1980,8 +2075,8 @@ I
1980
2075
  p
1981
2076
  5
1982
2077
  x
1983
- 9
1984
- orig_open
2078
+ 13
2079
+ original_open
1985
2080
  x
1986
2081
  4
1987
2082
  open
@@ -2044,11 +2139,11 @@ p
2044
2139
  I
2045
2140
  0
2046
2141
  I
2047
- 76
2142
+ 79
2048
2143
  I
2049
2144
  a
2050
2145
  I
2051
- 77
2146
+ 7a
2052
2147
  I
2053
2148
  17
2054
2149
  x
@@ -2070,11 +2165,11 @@ p
2070
2165
  I
2071
2166
  0
2072
2167
  I
2073
- 74
2168
+ 77
2074
2169
  I
2075
2170
  a
2076
2171
  I
2077
- 76
2172
+ 79
2078
2173
  I
2079
2174
  14
2080
2175
  x
@@ -2090,7 +2185,7 @@ p
2090
2185
  I
2091
2186
  0
2092
2187
  I
2093
- 73
2188
+ 76
2094
2189
  I
2095
2190
  c
2096
2191
  x
@@ -2191,8 +2286,8 @@ x
2191
2286
  4
2192
2287
  open
2193
2288
  x
2194
- 9
2195
- orig_open
2289
+ 13
2290
+ original_open
2196
2291
  x
2197
2292
  12
2198
2293
  alias_method
@@ -2204,11 +2299,11 @@ p
2204
2299
  I
2205
2300
  0
2206
2301
  I
2207
- 82
2302
+ 85
2208
2303
  I
2209
2304
  a
2210
2305
  I
2211
- 83
2306
+ 86
2212
2307
  I
2213
2308
  12
2214
2309
  x
@@ -2224,7 +2319,7 @@ p
2224
2319
  I
2225
2320
  0
2226
2321
  I
2227
- 81
2322
+ 84
2228
2323
  I
2229
2324
  c
2230
2325
  x
@@ -2237,39 +2332,39 @@ p
2237
2332
  I
2238
2333
  -1
2239
2334
  I
2240
- 70
2335
+ 73
2241
2336
  I
2242
2337
  0
2243
2338
  I
2244
- 71
2339
+ 74
2245
2340
  I
2246
2341
  4
2247
2342
  I
2248
- 72
2343
+ 75
2249
2344
  I
2250
2345
  e
2251
2346
  I
2252
- 71
2347
+ 74
2253
2348
  I
2254
2349
  10
2255
2350
  I
2256
- 7d
2351
+ 80
2257
2352
  I
2258
2353
  15
2259
2354
  I
2260
- 7f
2355
+ 82
2261
2356
  I
2262
2357
  19
2263
2358
  I
2264
- 80
2359
+ 83
2265
2360
  I
2266
2361
  23
2267
2362
  I
2268
- 7f
2363
+ 82
2269
2364
  I
2270
2365
  25
2271
2366
  I
2272
- 88
2367
+ 8b
2273
2368
  I
2274
2369
  28
2275
2370
  x
@@ -2392,31 +2487,31 @@ p
2392
2487
  I
2393
2488
  -1
2394
2489
  I
2395
- 8b
2490
+ 8e
2396
2491
  I
2397
2492
  0
2398
2493
  I
2399
- 8c
2494
+ 8f
2400
2495
  I
2401
2496
  5
2402
2497
  I
2403
- 8f
2498
+ 92
2404
2499
  I
2405
2500
  e
2406
2501
  I
2407
- 8d
2502
+ 90
2408
2503
  I
2409
2504
  18
2410
2505
  I
2411
- 8e
2506
+ 91
2412
2507
  I
2413
2508
  22
2414
2509
  I
2415
- 8f
2510
+ 92
2416
2511
  I
2417
2512
  2b
2418
2513
  I
2419
- 8c
2514
+ 8f
2420
2515
  I
2421
2516
  2f
2422
2517
  x
@@ -2424,254 +2519,110 @@ x
2424
2519
  /Users/hakanensari/code/sucker/lib/sucker/request.rb
2425
2520
  p
2426
2521
  0
2427
- x
2428
- 4
2429
- uris
2430
- M
2431
- 1
2432
- n
2433
- n
2434
- x
2435
- 4
2436
- uris
2437
- i
2438
- 9
2439
- 5
2440
- 48
2441
- 0
2442
- 56
2443
- 1
2444
- 50
2445
- 2
2446
- 0
2447
- 11
2448
- I
2449
- 2
2450
- I
2451
- 0
2452
- I
2453
- 0
2454
- I
2455
- 0
2456
- n
2457
- p
2458
- 3
2459
- x
2460
- 7
2461
- locales
2462
- M
2463
- 1
2464
- p
2465
- 2
2466
- x
2467
- 9
2468
- for_block
2469
- t
2470
- n
2471
- x
2472
- 4
2473
- uris
2474
- i
2475
- 23
2476
- 57
2477
- 19
2478
- 0
2479
- 15
2480
- 5
2481
- 20
2482
- 0
2483
- 13
2484
- 18
2485
- 2
2486
- 47
2487
- 49
2488
- 0
2489
- 1
2490
- 15
2491
- 15
2492
- 5
2493
- 48
2494
- 1
2495
- 49
2496
- 2
2497
- 0
2498
- 11
2499
- I
2500
- 5
2501
- I
2502
- 1
2503
- I
2504
- 1
2505
- I
2506
- 1
2507
- n
2508
- p
2509
- 3
2510
- x
2511
- 7
2512
- locale=
2513
- x
2514
- 3
2515
- uri
2516
- x
2517
- 4
2518
- to_s
2519
- p
2520
- 9
2521
- I
2522
- 0
2523
- I
2524
- 93
2525
- I
2526
- 4
2527
- I
2528
- 99
2529
- I
2530
- 5
2531
- I
2532
- 94
2533
- I
2534
- 10
2535
- I
2536
- 95
2537
- I
2538
- 17
2539
- x
2540
- 52
2541
- /Users/hakanensari/code/sucker/lib/sucker/request.rb
2542
- p
2543
- 1
2544
- x
2545
- 6
2546
- locale
2547
- x
2548
- 3
2549
- map
2550
- p
2551
- 5
2552
- I
2553
- -1
2554
- I
2555
- 92
2556
- I
2557
- 0
2558
- I
2559
- 93
2560
- I
2561
- 9
2562
- x
2563
- 52
2564
- /Users/hakanensari/code/sucker/lib/sucker/request.rb
2565
- p
2566
- 0
2567
2522
  p
2568
- 53
2523
+ 51
2569
2524
  I
2570
2525
  2
2571
2526
  I
2572
- a
2527
+ b
2573
2528
  I
2574
2529
  5
2575
2530
  I
2576
- 10
2531
+ 11
2577
2532
  I
2578
2533
  e
2579
2534
  I
2580
- b
2535
+ c
2581
2536
  I
2582
2537
  18
2583
2538
  I
2584
- c
2539
+ d
2585
2540
  I
2586
2541
  22
2587
2542
  I
2588
- d
2543
+ e
2589
2544
  I
2590
2545
  2c
2591
2546
  I
2592
- e
2547
+ f
2593
2548
  I
2594
2549
  36
2595
2550
  I
2596
- f
2551
+ 10
2597
2552
  I
2598
2553
  40
2599
2554
  I
2600
- 10
2555
+ 11
2601
2556
  I
2602
2557
  4d
2603
2558
  I
2604
- 13
2559
+ 14
2605
2560
  I
2606
2561
  55
2607
2562
  I
2608
- 16
2563
+ 17
2609
2564
  I
2610
2565
  5d
2611
2566
  I
2612
- 19
2567
+ 1a
2613
2568
  I
2614
2569
  65
2615
2570
  I
2616
- 1c
2571
+ 1d
2617
2572
  I
2618
2573
  6d
2619
2574
  I
2620
- 1f
2575
+ 20
2621
2576
  I
2622
2577
  75
2623
2578
  I
2624
- 27
2579
+ 28
2625
2580
  I
2626
2581
  83
2627
2582
  I
2628
- 32
2583
+ 33
2629
2584
  I
2630
2585
  91
2631
2586
  I
2632
- 3a
2587
+ 3b
2633
2588
  I
2634
2589
  9f
2635
2590
  I
2636
- 42
2591
+ 46
2637
2592
  I
2638
2593
  ad
2639
2594
  I
2640
- 4a
2595
+ 4e
2641
2596
  I
2642
2597
  bb
2643
2598
  I
2644
- 4e
2599
+ 52
2645
2600
  I
2646
2601
  bf
2647
2602
  I
2648
- 50
2603
+ 54
2649
2604
  I
2650
2605
  cd
2651
2606
  I
2652
- 5b
2607
+ 5e
2653
2608
  I
2654
2609
  db
2655
2610
  I
2656
- 66
2611
+ 69
2657
2612
  I
2658
2613
  e9
2659
2614
  I
2660
- 6c
2615
+ 6f
2661
2616
  I
2662
2617
  f7
2663
2618
  I
2664
- 70
2619
+ 73
2665
2620
  I
2666
2621
  105
2667
2622
  I
2668
- 8b
2623
+ 8e
2669
2624
  I
2670
2625
  113
2671
- I
2672
- 92
2673
- I
2674
- 121
2675
2626
  x
2676
2627
  52
2677
2628
  /Users/hakanensari/code/sucker/lib/sucker/request.rb
@@ -2685,7 +2636,7 @@ p
2685
2636
  I
2686
2637
  2
2687
2638
  I
2688
- 9
2639
+ a
2689
2640
  I
2690
2641
  1d
2691
2642
  x
@@ -2697,7 +2648,7 @@ x
2697
2648
  13
2698
2649
  attach_method
2699
2650
  p
2700
- 7
2651
+ 9
2701
2652
  I
2702
2653
  0
2703
2654
  I
@@ -2709,9 +2660,13 @@ I
2709
2660
  I
2710
2661
  12
2711
2662
  I
2712
- 6
2663
+ 5
2664
+ I
2665
+ 1b
2666
+ I
2667
+ 7
2713
2668
  I
2714
- 2e
2669
+ 37
2715
2670
  x
2716
2671
  52
2717
2672
  /Users/hakanensari/code/sucker/lib/sucker/request.rb