midori_http_parser 0.6.1.3 → 0.6.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (59) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.gitmodules +0 -3
  4. data/.travis.yml +12 -17
  5. data/Gemfile +5 -0
  6. data/{LICENSE-MIT → LICENSE} +5 -2
  7. data/midori_http_parser.gemspec +3 -9
  8. data/spec/spec_helper.rb +8 -1
  9. data/tasks/compile.rake +7 -13
  10. metadata +5 -74
  11. data/ext/ruby_http_parser/RubyHttpParserService.java +0 -18
  12. data/ext/ruby_http_parser/org/ruby_http_parser/RubyHttpParser.java +0 -495
  13. data/ext/ruby_http_parser/vendor/http-parser-java/AUTHORS +0 -32
  14. data/ext/ruby_http_parser/vendor/http-parser-java/LICENSE-MIT +0 -48
  15. data/ext/ruby_http_parser/vendor/http-parser-java/README.md +0 -183
  16. data/ext/ruby_http_parser/vendor/http-parser-java/TODO +0 -28
  17. data/ext/ruby_http_parser/vendor/http-parser-java/build.xml +0 -74
  18. data/ext/ruby_http_parser/vendor/http-parser-java/http_parser.c +0 -2175
  19. data/ext/ruby_http_parser/vendor/http-parser-java/http_parser.gyp +0 -79
  20. data/ext/ruby_http_parser/vendor/http-parser-java/http_parser.h +0 -304
  21. data/ext/ruby_http_parser/vendor/http-parser-java/src/Http-parser.java.iml +0 -22
  22. data/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/FieldData.java +0 -41
  23. data/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/HTTPCallback.java +0 -8
  24. data/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/HTTPDataCallback.java +0 -34
  25. data/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/HTTPErrorCallback.java +0 -12
  26. data/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/HTTPException.java +0 -9
  27. data/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/HTTPMethod.java +0 -113
  28. data/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/HTTPParser.java +0 -36
  29. data/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/HTTPParserUrl.java +0 -76
  30. data/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/ParserSettings.java +0 -256
  31. data/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/ParserType.java +0 -13
  32. data/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/Util.java +0 -111
  33. data/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/lolevel/HTTPCallback.java +0 -5
  34. data/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/lolevel/HTTPDataCallback.java +0 -25
  35. data/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/lolevel/HTTPErrorCallback.java +0 -7
  36. data/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/lolevel/HTTPParser.java +0 -2171
  37. data/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/lolevel/ParserSettings.java +0 -83
  38. data/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/Message.java +0 -374
  39. data/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/ParseUrl.java +0 -51
  40. data/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/Requests.java +0 -69
  41. data/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/Responses.java +0 -52
  42. data/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/Test.java +0 -16
  43. data/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/TestHeaderOverflowError.java +0 -48
  44. data/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/TestLoaderNG.java +0 -212
  45. data/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/TestNoOverflowLongBody.java +0 -62
  46. data/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/UnitTest.java +0 -117
  47. data/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/Upgrade.java +0 -27
  48. data/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/Url.java +0 -127
  49. data/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/Util.java +0 -236
  50. data/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/WrongContentLength.java +0 -59
  51. data/ext/ruby_http_parser/vendor/http-parser-java/test.c +0 -3425
  52. data/ext/ruby_http_parser/vendor/http-parser-java/tests.dumped +0 -845
  53. data/ext/ruby_http_parser/vendor/http-parser-java/tests.utf8 +0 -17
  54. data/ext/ruby_http_parser/vendor/http-parser-java/tools/byte_constants.rb +0 -6
  55. data/ext/ruby_http_parser/vendor/http-parser-java/tools/const_char.rb +0 -13
  56. data/ext/ruby_http_parser/vendor/http-parser-java/tools/lowcase.rb +0 -15
  57. data/ext/ruby_http_parser/vendor/http-parser-java/tools/parse_tests.rb +0 -33
  58. data/ext/ruby_http_parser/vendor/http-parser/test_fast +0 -0
  59. data/ext/ruby_http_parser/vendor/http-parser/test_g +0 -0
@@ -1,34 +0,0 @@
1
- package http_parser;
2
-
3
- import java.nio.ByteBuffer;
4
-
5
- public abstract class HTTPDataCallback implements http_parser.lolevel.HTTPDataCallback{
6
- /*
7
- Very raw and extremly foolhardy! DANGER!
8
- The whole Buffer concept is difficult enough to grasp as it is,
9
- we pass in a buffer with an arbitrary position.
10
-
11
- The interesting data is located at position pos and is len
12
- bytes long.
13
-
14
- The contract of this callback is that the buffer is
15
- returned in the state that it was passed in, so implementing
16
- this require good citizenship, you'll need to remember the current
17
- position, change the position to get at the data you're interested
18
- in and then set the position back to how you found it...
19
-
20
- Therefore: there is an abstract implementation that implements
21
- cb as described above, and provides a new callback
22
- with signature @see cb(byte[], int, int)
23
- */
24
- public int cb(http_parser.lolevel.HTTPParser p, ByteBuffer buf, int pos, int len) {
25
- byte [] by = new byte[len];
26
- int saved = buf.position();
27
- buf.position(pos);
28
- buf.get(by);
29
- buf.position(saved);
30
- return cb((HTTPParser)p, by, 0, len);
31
- }
32
-
33
- public abstract int cb(HTTPParser p, byte[] by, int pos, int len);
34
- }
@@ -1,12 +0,0 @@
1
- package http_parser;
2
-
3
-
4
- import java.nio.ByteBuffer;
5
-
6
- public abstract class HTTPErrorCallback implements http_parser.lolevel.HTTPErrorCallback{
7
- public void cb (http_parser.lolevel.HTTPParser parser, String mes, ByteBuffer buf, int initial_position) {
8
- this.cb((HTTPParser)parser, Util.error(mes, buf, initial_position));
9
- }
10
-
11
- public abstract void cb(HTTPParser parser, String error);
12
- }
@@ -1,9 +0,0 @@
1
- package http_parser;
2
-
3
- @SuppressWarnings("serial")
4
- public class HTTPException extends RuntimeException {
5
-
6
- public HTTPException(String mes) {
7
- super(mes);
8
- }
9
- }
@@ -1,113 +0,0 @@
1
- package http_parser;
2
-
3
- import java.nio.charset.Charset;
4
-
5
- public enum HTTPMethod {
6
- HTTP_DELETE("DELETE")// = 0
7
- , HTTP_GET("GET")
8
- , HTTP_HEAD("HEAD")
9
- , HTTP_POST("POST")
10
- , HTTP_PUT("PUT")
11
- , HTTP_PATCH("PATCH")
12
- , HTTP_LINK("LINK")
13
- , HTTP_UNLINK("UNLINK")
14
- /* pathological */
15
- , HTTP_CONNECT("CONNECT")
16
- , HTTP_OPTIONS("OPTIONS")
17
- , HTTP_TRACE("TRACE")
18
- /* webdav */
19
- , HTTP_COPY("COPY")
20
- , HTTP_LOCK("LOCK")
21
- , HTTP_MKCOL("MKCOL")
22
- , HTTP_MOVE("MOVE")
23
- , HTTP_PROPFIND("PROPFIND")
24
- , HTTP_PROPPATCH("PROPPATCH")
25
- , HTTP_UNLOCK("UNLOCK")
26
- , HTTP_REPORT("REPORT")
27
- , HTTP_MKACTIVITY("MKACTIVITY")
28
- , HTTP_CHECKOUT("CHECKOUT")
29
- , HTTP_MERGE("MERGE")
30
- , HTTP_MSEARCH("M-SEARCH")
31
- , HTTP_NOTIFY("NOTIFY")
32
- , HTTP_SUBSCRIBE("SUBSCRIBE")
33
- , HTTP_UNSUBSCRIBE("UNSUBSCRIBE")
34
- , HTTP_PURGE("PURGE")
35
- ;
36
-
37
- private static Charset ASCII;
38
- static {
39
- ASCII = Charset.forName("US-ASCII");;
40
- }
41
- public byte[] bytes;
42
-
43
- HTTPMethod(String name) {
44
- // good grief, Charlie Brown, the following is necessary because
45
- // java is retarded:
46
- // illegal reference to static field from initializer
47
- // this.bytes = name.getBytes(ASCII);
48
- // yet it's not illegal to reference static fields from
49
- // methods called from initializer.
50
- init(name);
51
- }
52
- public static HTTPMethod parse(String s) {
53
- if ("HTTP_DELETE".equalsIgnoreCase(s)) {return HTTP_DELETE;}
54
- else if ("DELETE".equalsIgnoreCase(s)) {return HTTP_DELETE;}
55
- else if ("HTTP_GET".equalsIgnoreCase(s)) {return HTTP_GET;}
56
- else if ("GET".equalsIgnoreCase(s)) {return HTTP_GET;}
57
- else if ("HTTP_HEAD".equalsIgnoreCase(s)) {return HTTP_HEAD;}
58
- else if ("HEAD".equalsIgnoreCase(s)) {return HTTP_HEAD;}
59
- else if ("HTTP_POST".equalsIgnoreCase(s)) {return HTTP_POST;}
60
- else if ("POST".equalsIgnoreCase(s)) {return HTTP_POST;}
61
- else if ("HTTP_PUT".equalsIgnoreCase(s)) {return HTTP_PUT;}
62
- else if ("PUT".equalsIgnoreCase(s)) {return HTTP_PUT;}
63
- else if ("HTTP_PATCH".equalsIgnoreCase(s)) {return HTTP_PATCH;}
64
- else if ("PATCH".equalsIgnoreCase(s)) {return HTTP_PATCH;}
65
- else if ("HTTP_CONNECT".equalsIgnoreCase(s)) {return HTTP_CONNECT;}
66
- else if ("CONNECT".equalsIgnoreCase(s)) {return HTTP_CONNECT;}
67
- else if ("HTTP_OPTIONS".equalsIgnoreCase(s)) {return HTTP_OPTIONS;}
68
- else if ("OPTIONS".equalsIgnoreCase(s)) {return HTTP_OPTIONS;}
69
- else if ("HTTP_TRACE".equalsIgnoreCase(s)) {return HTTP_TRACE;}
70
- else if ("TRACE".equalsIgnoreCase(s)) {return HTTP_TRACE;}
71
- else if ("HTTP_COPY".equalsIgnoreCase(s)) {return HTTP_COPY;}
72
- else if ("COPY".equalsIgnoreCase(s)) {return HTTP_COPY;}
73
- else if ("HTTP_LINK".equalsIgnoreCase(s)) {return HTTP_LINK;}
74
- else if ("LINK".equalsIgnoreCase(s)) {return HTTP_LINK;}
75
- else if ("HTTP_LOCK".equalsIgnoreCase(s)) {return HTTP_LOCK;}
76
- else if ("LOCK".equalsIgnoreCase(s)) {return HTTP_LOCK;}
77
- else if ("HTTP_MKCOL".equalsIgnoreCase(s)) {return HTTP_MKCOL;}
78
- else if ("MKCOL".equalsIgnoreCase(s)) {return HTTP_MKCOL;}
79
- else if ("HTTP_MOVE".equalsIgnoreCase(s)) {return HTTP_MOVE;}
80
- else if ("MOVE".equalsIgnoreCase(s)) {return HTTP_MOVE;}
81
- else if ("HTTP_PROPFIND".equalsIgnoreCase(s)){return HTTP_PROPFIND;}
82
- else if ("PROPFIND".equalsIgnoreCase(s)) {return HTTP_PROPFIND;}
83
- else if ("HTTP_PROPPATCH".equalsIgnoreCase(s)){return HTTP_PROPPATCH;}
84
- else if ("PROPPATCH".equalsIgnoreCase(s)) {return HTTP_PROPPATCH;}
85
- else if ("HTTP_UNLINK".equalsIgnoreCase(s)) {return HTTP_UNLINK;}
86
- else if ("UNLINK".equalsIgnoreCase(s)) {return HTTP_UNLINK;}
87
- else if ("HTTP_UNLOCK".equalsIgnoreCase(s)) {return HTTP_UNLOCK;}
88
- else if ("UNLOCK".equalsIgnoreCase(s)) {return HTTP_UNLOCK;}
89
- else if ("HTTP_REPORT".equalsIgnoreCase(s)) {return HTTP_REPORT;}
90
- else if ("REPORT".equalsIgnoreCase(s)){return HTTP_REPORT;}
91
- else if ("HTTP_MKACTIVITY".equalsIgnoreCase(s)) {return HTTP_MKACTIVITY;}
92
- else if ("MKACTIVITY".equalsIgnoreCase(s)){return HTTP_MKACTIVITY;}
93
- else if ("HTTP_CHECKOUT".equalsIgnoreCase(s)) {return HTTP_CHECKOUT;}
94
- else if ("CHECKOUT".equalsIgnoreCase(s)){return HTTP_CHECKOUT;}
95
- else if ("HTTP_MERGE".equalsIgnoreCase(s)) {return HTTP_MERGE;}
96
- else if ("MERGE".equalsIgnoreCase(s)){return HTTP_MERGE;}
97
- else if ("HTTP_MSEARCH".equalsIgnoreCase(s)) {return HTTP_MSEARCH;}
98
- else if ("M-SEARCH".equalsIgnoreCase(s)) {return HTTP_MSEARCH;}
99
- else if ("HTTP_NOTIFY".equalsIgnoreCase(s)) {return HTTP_NOTIFY;}
100
- else if ("NOTIFY".equalsIgnoreCase(s)) {return HTTP_NOTIFY;}
101
- else if ("HTTP_SUBSCRIBE".equalsIgnoreCase(s)) {return HTTP_SUBSCRIBE;}
102
- else if ("SUBSCRIBE".equalsIgnoreCase(s)) {return HTTP_SUBSCRIBE;}
103
- else if ("HTTP_UNSUBSCRIBE".equalsIgnoreCase(s)) {return HTTP_UNSUBSCRIBE;}
104
- else if ("UNSUBSCRIBE".equalsIgnoreCase(s)) {return HTTP_UNSUBSCRIBE;}
105
- else if ("PATCH".equalsIgnoreCase(s)) {return HTTP_PATCH;}
106
- else if ("PURGE".equalsIgnoreCase(s)) {return HTTP_PURGE;}
107
- else {return null;}
108
- }
109
- void init (String name) {
110
- ASCII = null == ASCII ? Charset.forName("US-ASCII") : ASCII;
111
- this.bytes = name.getBytes(ASCII);
112
- }
113
- }
@@ -1,36 +0,0 @@
1
- package http_parser;
2
-
3
- import java.nio.ByteBuffer;
4
-
5
- public class HTTPParser extends http_parser.lolevel.HTTPParser {
6
-
7
- public HTTPParser() { super(); }
8
- public HTTPParser(ParserType type) { super(type); }
9
-
10
- public int getMajor() {
11
- return super.http_major;
12
- }
13
-
14
- public int getMinor() {
15
- return super.http_minor;
16
- }
17
-
18
- public int getStatusCode() {
19
- return super.status_code;
20
- }
21
-
22
- public HTTPMethod getHTTPMethod() {
23
- return super.method;
24
- }
25
-
26
- public boolean getUpgrade() {
27
- return super.upgrade;
28
- }
29
-
30
- public boolean shouldKeepAlive() {
31
- return super.http_should_keep_alive();
32
- }
33
- public void execute(ParserSettings settings, ByteBuffer data) {
34
- this.execute(settings.getLoLevelSettings(), data);
35
- }
36
- }
@@ -1,76 +0,0 @@
1
- package http_parser;
2
-
3
- import http_parser.lolevel.*;
4
- import http_parser.lolevel.HTTPParser;
5
-
6
- import java.io.UnsupportedEncodingException;
7
- import java.nio.ByteBuffer;
8
- import java.util.Arrays;
9
-
10
- /**
11
- */
12
- public class HTTPParserUrl {
13
-
14
- public int field_set;
15
- public int port;
16
-
17
- public FieldData[] field_data = new FieldData[]{
18
- new FieldData(0,0),
19
- new FieldData(0,0),
20
- new FieldData(0,0),
21
- new FieldData(0,0),
22
- new FieldData(0,0),
23
- new FieldData(0,0)
24
- }; //UF_MAX
25
-
26
- public HTTPParserUrl(){}
27
-
28
- public HTTPParserUrl(int field_set, int port, FieldData[] field_data){
29
- this.field_set = field_set;
30
- this.port = port;
31
- this.field_data = field_data;
32
- }
33
-
34
- public String getFieldValue(HTTPParser.UrlFields field, ByteBuffer data) throws UnsupportedEncodingException {
35
- FieldData fd = this.field_data[field.getIndex()];
36
- if(fd.off == 0 & fd.len == 0) return "";
37
- byte[] dst = new byte[fd.len];
38
- int current_pos = data.position();
39
- data.position(fd.off);
40
- data.get(dst,0,fd.len);
41
- data.position(current_pos);
42
- String v = new String(dst, "UTF8");
43
- return v;
44
- }
45
-
46
- @Override
47
- public boolean equals(Object o) {
48
- if (this == o) return true;
49
- if (o == null || getClass() != o.getClass()) return false;
50
-
51
- HTTPParserUrl that = (HTTPParserUrl) o;
52
-
53
- if (field_set != that.field_set) return false;
54
- if (port != that.port) return false;
55
- if (!Arrays.equals(field_data, that.field_data)) return false;
56
-
57
- return true;
58
- }
59
-
60
- @Override
61
- public int hashCode() {
62
- int result = field_set;
63
- result = 31 * result + port;
64
- result = 31 * result + Arrays.hashCode(field_data);
65
- return result;
66
- }
67
-
68
- @Override
69
- public String toString() {
70
- return "HTTPParserUrl{" +
71
- "field_set=" + field_set +
72
- ", port=" + port +
73
- ", field_data=" + (field_data == null ? null : Arrays.asList(field_data)) +
74
- '}';
75
- }
76
- }
@@ -1,256 +0,0 @@
1
- package http_parser;
2
-
3
-
4
-
5
- import primitive.collection.ByteList;
6
-
7
- public class ParserSettings extends http_parser.lolevel.ParserSettings {
8
-
9
- public HTTPCallback on_message_begin;
10
- public HTTPDataCallback on_path;
11
- public HTTPDataCallback on_query_string;
12
- public HTTPDataCallback on_url;
13
- public HTTPDataCallback on_fragment;
14
- public HTTPCallback on_status_complete;
15
- public HTTPDataCallback on_header_field;
16
- public HTTPDataCallback on_header_value;
17
-
18
- public HTTPCallback on_headers_complete;
19
- public HTTPDataCallback on_body;
20
- public HTTPCallback on_message_complete;
21
-
22
- public HTTPErrorCallback on_error;
23
-
24
- private HTTPCallback _on_message_begin;
25
- private HTTPDataCallback _on_path;
26
- private HTTPDataCallback _on_query_string;
27
- private HTTPDataCallback _on_url;
28
- private HTTPDataCallback _on_fragment;
29
- private HTTPCallback _on_status_complete;
30
- private HTTPDataCallback _on_header_field;
31
- private HTTPDataCallback _on_header_value;
32
- private HTTPCallback _on_headers_complete;
33
- private HTTPDataCallback _on_body;
34
- private HTTPCallback _on_message_complete;
35
- private HTTPErrorCallback _on_error;
36
-
37
- private http_parser.lolevel.ParserSettings settings;
38
-
39
- protected ByteList field = new ByteList();
40
- protected ByteList value = new ByteList();
41
- protected ByteList body = new ByteList();
42
-
43
- public ParserSettings() {
44
- this.settings = new http_parser.lolevel.ParserSettings();
45
- createMirrorCallbacks();
46
- attachCallbacks();
47
- }
48
-
49
- protected http_parser.lolevel.ParserSettings getLoLevelSettings() {
50
- return this.settings;
51
- }
52
-
53
- private void createMirrorCallbacks() {
54
- this._on_message_begin = new HTTPCallback() {
55
- public int cb(HTTPParser p) {
56
- if (null != ParserSettings.this.on_message_begin) {
57
- return ParserSettings.this.on_message_begin.cb(p);
58
- }
59
- return 0;
60
- }
61
- };
62
- this._on_path = new HTTPDataCallback() {
63
- @Override
64
- public int cb(HTTPParser p, byte[] by, int pos, int len) {
65
- if (null != ParserSettings.this.on_path) {
66
- return ParserSettings.this.on_path.cb(p, by, pos, len);
67
- }
68
- return 0;
69
- }
70
- };
71
- this._on_query_string = new HTTPDataCallback() {
72
- @Override
73
- public int cb(HTTPParser p, byte[] by, int pos, int len) {
74
- if (null != ParserSettings.this.on_query_string) {
75
- return ParserSettings.this.on_query_string.cb(p, by, pos, len);
76
- }
77
- return 0;
78
- }
79
- };
80
- this._on_url = new HTTPDataCallback() {
81
- @Override
82
- public int cb(HTTPParser p, byte[] by, int pos, int len) {
83
- if (null != ParserSettings.this.on_url) {
84
- return ParserSettings.this.on_url.cb(p, by, pos, len);
85
- }
86
- return 0;
87
- }
88
- };
89
- this._on_fragment = new HTTPDataCallback() {
90
- @Override
91
- public int cb(HTTPParser p, byte[] by, int pos, int len) {
92
- if (null != ParserSettings.this.on_fragment) {
93
- return ParserSettings.this.on_fragment.cb(p, by, pos, len);
94
- }
95
- return 0;
96
- }
97
- };
98
- this._on_status_complete = new HTTPCallback() {
99
- @Override
100
- public int cb(HTTPParser p) {
101
- if (null != ParserSettings.this.on_status_complete) {
102
- return ParserSettings.this.on_status_complete.cb(p);
103
- }
104
- return 0;
105
- }
106
- };
107
- this._on_error = new HTTPErrorCallback() {
108
- @Override
109
- public void cb(HTTPParser parser, String error) {
110
- if (null != ParserSettings.this.on_error) {
111
- ParserSettings.this.on_error.cb(parser, error);
112
- } else {
113
- throw new HTTPException(error);
114
- }
115
-
116
- }
117
- };
118
-
119
-
120
-
121
- // (on_header_field and on_header_value shortened to on_h_*)
122
- // ------------------------ ------------ --------------------------------------------
123
- // | State (prev. callback) | Callback | Description/action |
124
- // ------------------------ ------------ --------------------------------------------
125
- // | nothing (first call) | on_h_field | Allocate new buffer and copy callback data |
126
- // | | | into it |
127
- // ------------------------ ------------ --------------------------------------------
128
- // | value | on_h_field | New header started. |
129
- // | | | Copy current name,value buffers to headers |
130
- // | | | list and allocate new buffer for new name |
131
- // ------------------------ ------------ --------------------------------------------
132
- // | field | on_h_field | Previous name continues. Reallocate name |
133
- // | | | buffer and append callback data to it |
134
- // ------------------------ ------------ --------------------------------------------
135
- // | field | on_h_value | Value for current header started. Allocate |
136
- // | | | new buffer and copy callback data to it |
137
- // ------------------------ ------------ --------------------------------------------
138
- // | value | on_h_value | Value continues. Reallocate value buffer |
139
- // | | | and append callback data to it |
140
- // ------------------------ ------------ --------------------------------------------
141
- this._on_header_field = new HTTPDataCallback() {
142
- @Override
143
- public int cb(HTTPParser p, byte[] by, int pos, int len) {
144
- // previous value complete, call on_value with full value, reset value.
145
- if (0 != ParserSettings.this.value.size()) {
146
- // check we're even interested...
147
- if (null != ParserSettings.this.on_header_value) {
148
- byte [] valueArr = ParserSettings.this.value.toArray();
149
- int ret = ParserSettings.this.on_header_value.cb(p, valueArr, 0, valueArr.length);
150
- if (0 != ret) {
151
- return ret;
152
- }
153
- ParserSettings.this.value.clear();
154
- }
155
- }
156
-
157
- if (null == ParserSettings.this.on_header_field) {
158
- return 0;
159
- }
160
-
161
- ParserSettings.this.field.addAll(by);
162
- return 0;
163
- }
164
- };
165
- this._on_header_value = new HTTPDataCallback() {
166
- @Override
167
- public int cb(HTTPParser p, byte[] by, int pos, int len) {
168
-
169
- // previous field complete, call on_field with full field value, reset field.
170
- if (0 != ParserSettings.this.field.size()) {
171
- // check we're even interested...
172
- if (null != ParserSettings.this.on_header_field) {
173
- byte [] fieldArr = ParserSettings.this.field.toArray();
174
- int ret = ParserSettings.this.on_header_field.cb(p, fieldArr, 0, fieldArr.length);
175
- if (0 != ret) {
176
- return ret;
177
- }
178
- ParserSettings.this.field.clear();
179
- }
180
- }
181
-
182
- if (null == ParserSettings.this.on_header_value) {
183
- return 0;
184
- }
185
- ParserSettings.this.value.addAll(by);
186
- return 0;
187
- }
188
- };
189
- this._on_headers_complete = new HTTPCallback() {
190
- @Override
191
- public int cb(HTTPParser parser) {
192
- // is there an uncompleted value ... ?
193
- if (0 != ParserSettings.this.value.size()) {
194
- // check we're even interested...
195
- if (null != ParserSettings.this.on_header_value) {
196
- byte [] valueArr = ParserSettings.this.value.toArray();
197
- int ret = ParserSettings.this.on_header_value.cb(parser, valueArr, 0, valueArr.length);
198
- if (0 != ret) {
199
- return ret;
200
- }
201
- ParserSettings.this.value.clear();
202
- }
203
- }
204
- if (null != ParserSettings.this.on_headers_complete) {
205
- return ParserSettings.this.on_headers_complete.cb(parser);
206
- }
207
- return 0;
208
- }
209
-
210
- };
211
- this._on_body = new HTTPDataCallback() {
212
- @Override
213
- public int cb(HTTPParser p, byte[] by, int pos, int len) {
214
- if (null != ParserSettings.this.on_body) {
215
- ParserSettings.this.body.addAll(by, pos, len);
216
- }
217
- return 0;
218
- }
219
- };
220
-
221
- this._on_message_complete = new HTTPCallback() {
222
- @Override
223
- public int cb(HTTPParser parser) {
224
- if (null != ParserSettings.this.on_body) {
225
- byte [] body = ParserSettings.this.body.toArray();
226
- int ret = ParserSettings.this.on_body.cb(parser, body, 0, body.length);
227
- if (0!=ret) {
228
- return ret;
229
- }
230
- ParserSettings.this.body.clear();
231
- }
232
- if (null != ParserSettings.this.on_message_complete) {
233
- return ParserSettings.this.on_message_complete.cb(parser);
234
- }
235
- return 0;
236
- }
237
- };
238
-
239
- }
240
-
241
- private void attachCallbacks() {
242
- // these are certainly set, because we mirror them ...
243
- this.settings.on_message_begin = this._on_message_begin;
244
- this.settings.on_path = this._on_path;
245
- this.settings.on_query_string = this._on_query_string;
246
- this.settings.on_url = this._on_url;
247
- this.settings.on_fragment = this._on_fragment;
248
- this.settings.on_status_complete = this._on_status_complete;
249
- this.settings.on_header_field = this._on_header_field;
250
- this.settings.on_header_value = this._on_header_value;
251
- this.settings.on_headers_complete = this._on_headers_complete;
252
- this.settings.on_body = this._on_body;
253
- this.settings.on_message_complete = this._on_message_complete;
254
- this.settings.on_error = this._on_error;
255
- }
256
- }