buby 1.3.3-java → 1.5.0-java

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. data/README.rdoc +28 -14
  2. data/Rakefile +96 -6
  3. data/VERSION.yml +5 -0
  4. data/bin/buby +2 -0
  5. data/buby.gemspec +102 -17
  6. data/{java/src → ext/buby/burp}/BurpExtender.java +189 -29
  7. data/ext/burp_interfaces/burp/IBurpExtender.java +31 -0
  8. data/ext/burp_interfaces/burp/IBurpExtenderCallbacks.java +785 -0
  9. data/ext/burp_interfaces/burp/IContextMenuFactory.java +38 -0
  10. data/ext/burp_interfaces/burp/IContextMenuInvocation.java +156 -0
  11. data/ext/burp_interfaces/burp/ICookie.java +53 -0
  12. data/ext/burp_interfaces/burp/IExtensionHelpers.java +352 -0
  13. data/ext/burp_interfaces/burp/IExtensionStateListener.java +27 -0
  14. data/ext/burp_interfaces/burp/IHttpListener.java +37 -0
  15. data/ext/burp_interfaces/burp/IHttpRequestResponse.java +102 -0
  16. data/ext/burp_interfaces/burp/IHttpRequestResponsePersisted.java +26 -0
  17. data/ext/burp_interfaces/burp/IHttpRequestResponseWithMarkers.java +44 -0
  18. data/ext/burp_interfaces/burp/IHttpService.java +39 -0
  19. data/ext/burp_interfaces/burp/IInterceptedProxyMessage.java +116 -0
  20. data/ext/burp_interfaces/burp/IIntruderAttack.java +31 -0
  21. data/ext/burp_interfaces/burp/IIntruderPayloadGenerator.java +50 -0
  22. data/ext/burp_interfaces/burp/IIntruderPayloadGeneratorFactory.java +40 -0
  23. data/ext/burp_interfaces/burp/IIntruderPayloadProcessor.java +45 -0
  24. data/{java/src → ext/burp_interfaces}/burp/IMenuItemHandler.java +36 -40
  25. data/ext/burp_interfaces/burp/IMessageEditor.java +64 -0
  26. data/ext/burp_interfaces/burp/IMessageEditorController.java +49 -0
  27. data/ext/burp_interfaces/burp/IMessageEditorTab.java +102 -0
  28. data/ext/burp_interfaces/burp/IMessageEditorTabFactory.java +38 -0
  29. data/ext/burp_interfaces/burp/IParameter.java +104 -0
  30. data/ext/burp_interfaces/burp/IProxyListener.java +37 -0
  31. data/ext/burp_interfaces/burp/IRequestInfo.java +95 -0
  32. data/ext/burp_interfaces/burp/IResponseInfo.java +54 -0
  33. data/ext/burp_interfaces/burp/IScanIssue.java +120 -0
  34. data/ext/burp_interfaces/burp/IScanQueueItem.java +80 -0
  35. data/ext/burp_interfaces/burp/IScannerCheck.java +89 -0
  36. data/ext/burp_interfaces/burp/IScannerInsertionPoint.java +156 -0
  37. data/ext/burp_interfaces/burp/IScannerInsertionPointProvider.java +38 -0
  38. data/ext/burp_interfaces/burp/IScannerListener.java +30 -0
  39. data/ext/burp_interfaces/burp/IScopeChangeListener.java +25 -0
  40. data/ext/burp_interfaces/burp/ISessionHandlingAction.java +51 -0
  41. data/ext/burp_interfaces/burp/ITab.java +38 -0
  42. data/ext/burp_interfaces/burp/ITempFile.java +33 -0
  43. data/ext/burp_interfaces/burp/ITextEditor.java +90 -0
  44. data/lib/buby/burp_extender/console_frame.rb +33 -0
  45. data/lib/buby/burp_extender/console_pane.rb +26 -0
  46. data/lib/buby/burp_extender/console_tab.rb +15 -0
  47. data/lib/buby/burp_extender/context_menu.rb +29 -0
  48. data/lib/buby/burp_extender/context_menu_factory.rb +17 -0
  49. data/lib/buby/burp_extender/context_menu_item.rb +13 -0
  50. data/lib/buby/burp_extender/jcheck_box_menu_item.rb +12 -0
  51. data/lib/buby/burp_extender/jmenu.rb +11 -0
  52. data/lib/buby/burp_extender/jmenu_item.rb +12 -0
  53. data/lib/buby/burp_extender/menu.rb +11 -0
  54. data/lib/buby/burp_extender/menu_item.rb +12 -0
  55. data/lib/buby/burp_extender.rb +339 -0
  56. data/lib/buby/context_menu_factory.rb +35 -0
  57. data/lib/buby/cookie.rb +37 -0
  58. data/lib/buby/extender.rb +156 -0
  59. data/lib/buby/http_listener.rb +29 -0
  60. data/lib/buby/{extends → implants}/buby_array_wrapper.rb +0 -0
  61. data/lib/buby/implants/context_menu_invocation.rb +113 -0
  62. data/lib/buby/implants/cookie.rb +47 -0
  63. data/lib/buby/implants/extension_helpers.rb +286 -0
  64. data/lib/buby/{extends → implants}/http_request_response.rb +8 -1
  65. data/lib/buby/implants/intercepted_proxy_message.rb +53 -0
  66. data/lib/buby/implants/intruder_attack.rb +42 -0
  67. data/lib/buby/implants/jruby.rb +64 -0
  68. data/lib/buby/implants/message_editor.rb +70 -0
  69. data/lib/buby/implants/message_editor_controller.rb +60 -0
  70. data/lib/buby/implants/parameter.rb +84 -0
  71. data/lib/buby/implants/request_info.rb +47 -0
  72. data/lib/buby/implants/response_info.rb +44 -0
  73. data/lib/buby/{extends → implants}/scan_issue.rb +1 -2
  74. data/lib/buby/implants/scan_queue_item.rb +53 -0
  75. data/lib/buby/implants/scanner_insertion_point.rb +92 -0
  76. data/lib/buby/implants/temp_file.rb +43 -0
  77. data/lib/buby/implants/text_editor.rb +63 -0
  78. data/lib/buby/implants.rb +28 -0
  79. data/lib/buby/intruder_payload_generator.rb +60 -0
  80. data/lib/buby/intruder_payload_generator_factory.rb +32 -0
  81. data/lib/buby/intruder_payload_processor.rb +38 -0
  82. data/lib/buby/message_editor_controller.rb +41 -0
  83. data/lib/buby/message_editor_tab.rb +98 -0
  84. data/lib/buby/message_editor_tab_factory.rb +28 -0
  85. data/lib/buby/parameter/base.rb +40 -0
  86. data/lib/buby/parameter/body.rb +7 -0
  87. data/lib/buby/parameter/cookie.rb +7 -0
  88. data/lib/buby/parameter/url.rb +7 -0
  89. data/lib/buby/parameter.rb +15 -0
  90. data/lib/buby/proxy_listener.rb +26 -0
  91. data/lib/buby/scan_issue.rb +112 -0
  92. data/lib/buby/scanner_check.rb +84 -0
  93. data/lib/buby/scanner_insertion_point.rb +118 -0
  94. data/lib/buby/scanner_insertion_point_provider.rb +27 -0
  95. data/lib/buby/scanner_listener.rb +22 -0
  96. data/lib/buby/scope_change_listener.rb +19 -0
  97. data/lib/buby/session_handling_action.rb +43 -0
  98. data/lib/buby/tab.rb +37 -0
  99. data/lib/buby/version.rb +9 -0
  100. data/lib/buby.rb +892 -101
  101. metadata +118 -22
  102. data/VERSION +0 -1
  103. data/java/buby.jar +0 -0
  104. data/java/src/burp/IBurpExtender.java +0 -180
  105. data/java/src/burp/IBurpExtenderCallbacks.java +0 -373
  106. data/java/src/burp/IHttpRequestResponse.java +0 -156
  107. data/java/src/burp/IScanIssue.java +0 -106
  108. data/java/src/burp/IScanQueueItem.java +0 -76
  109. data/lib/buby/extends.rb +0 -4
@@ -0,0 +1,40 @@
1
+ package burp;
2
+
3
+ /*
4
+ * @(#)IIntruderPayloadGeneratorFactory.java
5
+ *
6
+ * Copyright PortSwigger Ltd. All rights reserved.
7
+ *
8
+ * This code may be used to extend the functionality of Burp Suite Free Edition
9
+ * and Burp Suite Professional, provided that this usage does not violate the
10
+ * license terms for those products.
11
+ */
12
+ /**
13
+ * Extensions can implement this interface and then call
14
+ * <code>IBurpExtenderCallbacks.registerIntruderPayloadGeneratorFactory()</code>
15
+ * to register a factory for custom Intruder payloads.
16
+ */
17
+ public interface IIntruderPayloadGeneratorFactory
18
+ {
19
+ /**
20
+ * This method is used by Burp to obtain the name of the payload generator.
21
+ * This will be displayed as an option within the Intruder UI when the user
22
+ * selects to use extension-generated payloads.
23
+ *
24
+ * @return The name of the payload generator.
25
+ */
26
+ String getGeneratorName();
27
+
28
+ /**
29
+ * This method is used by Burp when the user starts an Intruder attack that
30
+ * uses this payload generator.
31
+ *
32
+ * @param attack An
33
+ * <code>IIntruderAttack</code> object that can be queried to obtain details
34
+ * about the attack in which the payload generator will be used.
35
+ * @return A new instance of
36
+ * <code>IIntruderPayloadGenerator</code> that will be used to generate
37
+ * payloads for the attack.
38
+ */
39
+ IIntruderPayloadGenerator createNewInstance(IIntruderAttack attack);
40
+ }
@@ -0,0 +1,45 @@
1
+ package burp;
2
+
3
+ /*
4
+ * @(#)IIntruderPayloadProcessor.java
5
+ *
6
+ * Copyright PortSwigger Ltd. All rights reserved.
7
+ *
8
+ * This code may be used to extend the functionality of Burp Suite Free Edition
9
+ * and Burp Suite Professional, provided that this usage does not violate the
10
+ * license terms for those products.
11
+ */
12
+ /**
13
+ * Extensions can implement this interface and then call
14
+ * <code>IBurpExtenderCallbacks.registerIntruderPayloadProcessor()</code> to
15
+ * register a custom Intruder payload processor.
16
+ */
17
+ public interface IIntruderPayloadProcessor
18
+ {
19
+ /**
20
+ * This method is used by Burp to obtain the name of the payload processor.
21
+ * This will be displayed as an option within the Intruder UI when the user
22
+ * selects to use an extension-provided payload processor.
23
+ *
24
+ * @return The name of the payload processor.
25
+ */
26
+ String getProcessorName();
27
+
28
+ /**
29
+ * This method is invoked by Burp each time the processor should be applied
30
+ * to an Intruder payload.
31
+ *
32
+ * @param currentPayload The value of the payload to be processed.
33
+ * @param originalPayload The value of the original payload prior to
34
+ * processing by any already-applied processing rules.
35
+ * @param baseValue The base value of the payload position, which will be
36
+ * replaced with the current payload.
37
+ * @return The value of the processed payload. This may be
38
+ * <code>null</code> to indicate that the current payload should be skipped,
39
+ * and the attack will move directly to the next payload.
40
+ */
41
+ byte[] processPayload(
42
+ byte[] currentPayload,
43
+ byte[] originalPayload,
44
+ byte[] baseValue);
45
+ }
@@ -1,40 +1,36 @@
1
- package burp;
2
-
3
- /*
4
- * @(#)IMenuItemHandler.java
5
- *
6
- * Copyright PortSwigger Ltd. All rights reserved.
7
- *
8
- * This code may be used to extend the functionality of Burp Suite and Burp
9
- * Suite Professional, provided that this usage does not violate the
10
- * license terms for those products.
11
- */
12
-
13
- /**
14
- * This interface is used by implementations of the <code>IBurpExtender</code>
15
- * interface to provide to Burp Suite a handler for one or more custom menu
16
- * items, which appear on the various context menus that are used throughout
17
- * Burp Suite to handle user-driven actions.
18
- *
19
- * Extensions which need to add custom menu items to Burp should provide an
20
- * implementation of this interface, and use the <code>registerMenuItem</code>
21
- * method of <code>IBurpExtenderCallbacks</code> to register each custom menu
22
- * item.
23
- */
24
-
25
- public interface IMenuItemHandler
26
- {
27
- /**
28
- * This method is invoked by Burp Suite when the user clicks on a custom
29
- * menu item which the extension has registered with Burp.
30
- *
31
- * @param menuItemCaption The caption of the menu item which was clicked.
32
- * This parameter enables extensions to provide a single implementation
33
- * which handles multiple different menu items.
34
- * @param messageInfo Details of the HTTP message(s) for which the context
35
- * menu was displayed.
36
- */
37
- public void menuItemClicked(
38
- String menuItemCaption,
39
- IHttpRequestResponse[] messageInfo);
40
- }
1
+ package burp;
2
+
3
+ /*
4
+ * @(#)IMenuItemHandler.java
5
+ *
6
+ * Copyright PortSwigger Ltd. All rights reserved.
7
+ *
8
+ * This code may be used to extend the functionality of Burp Suite Free Edition
9
+ * and Burp Suite Professional, provided that this usage does not violate the
10
+ * license terms for those products.
11
+ */
12
+ /**
13
+ * Extensions can implement this interface and then call
14
+ * <code>IBurpExtenderCallbacks.registerMenuItem()</code> to register a custom
15
+ * context menu item.
16
+ *
17
+ * @deprecated Use
18
+ * <code>IContextMenuFactory</code> instead.
19
+ */
20
+ @Deprecated
21
+ public interface IMenuItemHandler
22
+ {
23
+ /**
24
+ * This method is invoked by Burp Suite when the user clicks on a custom
25
+ * menu item which the extension has registered with Burp.
26
+ *
27
+ * @param menuItemCaption The caption of the menu item which was clicked.
28
+ * This parameter enables extensions to provide a single implementation
29
+ * which handles multiple different menu items.
30
+ * @param messageInfo Details of the HTTP message(s) for which the context
31
+ * menu was displayed.
32
+ */
33
+ void menuItemClicked(
34
+ String menuItemCaption,
35
+ IHttpRequestResponse[] messageInfo);
36
+ }
@@ -0,0 +1,64 @@
1
+ package burp;
2
+
3
+ /*
4
+ * @(#)IMessageEditor.java
5
+ *
6
+ * Copyright PortSwigger Ltd. All rights reserved.
7
+ *
8
+ * This code may be used to extend the functionality of Burp Suite Free Edition
9
+ * and Burp Suite Professional, provided that this usage does not violate the
10
+ * license terms for those products.
11
+ */
12
+ import java.awt.Component;
13
+
14
+ /**
15
+ * This interface is used to provide extensions with an instance of Burp's HTTP
16
+ * message editor, for the extension to use in its own UI. Extensions should
17
+ * call
18
+ * <code>IBurpExtenderCallbacks.createMessageEditor()</code> to obtain an
19
+ * instance of this interface.
20
+ */
21
+ public interface IMessageEditor
22
+ {
23
+ /**
24
+ * This method returns the UI component of the editor, for extensions to add
25
+ * to their own UI.
26
+ *
27
+ * @return The UI component of the editor.
28
+ */
29
+ Component getComponent();
30
+
31
+ /**
32
+ * This method is used to display an HTTP message in the editor.
33
+ *
34
+ * @param message The HTTP message to be displayed.
35
+ * @param isRequest Flags whether the message is an HTTP request or
36
+ * response.
37
+ */
38
+ void setMessage(byte[] message, boolean isRequest);
39
+
40
+ /**
41
+ * This method is used to retrieve the currently displayed message, which
42
+ * may have been modified by the user.
43
+ *
44
+ * @return The currently displayed HTTP message.
45
+ */
46
+ byte[] getMessage();
47
+
48
+ /**
49
+ * This method is used to determine whether the current message has been
50
+ * modified by the user.
51
+ *
52
+ * @return An indication of whether the current message has been modified by
53
+ * the user since it was first displayed.
54
+ */
55
+ boolean isMessageModified();
56
+
57
+ /**
58
+ * This method returns the data that is currently selected by the user.
59
+ *
60
+ * @return The data that is currently selected by the user, or
61
+ * <code>null</code> if no selection is made.
62
+ */
63
+ byte[] getSelectedData();
64
+ }
@@ -0,0 +1,49 @@
1
+ package burp;
2
+
3
+ /*
4
+ * @(#)IMessageEditorController.java
5
+ *
6
+ * Copyright PortSwigger Ltd. All rights reserved.
7
+ *
8
+ * This code may be used to extend the functionality of Burp Suite Free Edition
9
+ * and Burp Suite Professional, provided that this usage does not violate the
10
+ * license terms for those products.
11
+ */
12
+ /**
13
+ * This interface is used by an
14
+ * <code>IMessageEditor</code> to obtain details about the currently displayed
15
+ * message. Extensions that create instances of Burp's HTTP message editor can
16
+ * optionally provide an implementation of
17
+ * <code>IMessageEditorController</code>, which the editor will invoke when it
18
+ * requires further information about the current message (for example, to send
19
+ * it to another Burp tool). Extensions that provide custom editor tabs via an
20
+ * <code>IMessageEditorTabFactory</code> will receive a reference to an
21
+ * <code>IMessageEditorController</code> object for each tab instance they
22
+ * generate, which the tab can invoke if it requires further information about
23
+ * the current message.
24
+ */
25
+ public interface IMessageEditorController
26
+ {
27
+ /**
28
+ * This method is used to retrieve the HTTP service for the current message.
29
+ *
30
+ * @return The HTTP service for the current message.
31
+ */
32
+ IHttpService getHttpService();
33
+
34
+ /**
35
+ * This method is used to retrieve the HTTP request associated with the
36
+ * current message (which may itself be a response).
37
+ *
38
+ * @return The HTTP request associated with the current message.
39
+ */
40
+ byte[] getRequest();
41
+
42
+ /**
43
+ * This method is used to retrieve the HTTP response associated with the
44
+ * current message (which may itself be a request).
45
+ *
46
+ * @return The HTTP response associated with the current message.
47
+ */
48
+ byte[] getResponse();
49
+ }
@@ -0,0 +1,102 @@
1
+ package burp;
2
+
3
+ /*
4
+ * @(#)IMessageEditorTab.java
5
+ *
6
+ * Copyright PortSwigger Ltd. All rights reserved.
7
+ *
8
+ * This code may be used to extend the functionality of Burp Suite Free Edition
9
+ * and Burp Suite Professional, provided that this usage does not violate the
10
+ * license terms for those products.
11
+ */
12
+ import java.awt.Component;
13
+
14
+ /**
15
+ * Extensions that register an
16
+ * <code>IMessageEditorTabFactory</code> must return instances of this
17
+ * interface, which Burp will use to create custom tabs within its HTTP message
18
+ * editors.
19
+ */
20
+ public interface IMessageEditorTab
21
+ {
22
+ /**
23
+ * This method returns the caption that should appear on the custom tab when
24
+ * it is displayed. <b>Note:</b> Burp invokes this method once when the tab
25
+ * is first generated, and the same caption will be used every time the tab
26
+ * is displayed.
27
+ *
28
+ * @return The caption that should appear on the custom tab when it is
29
+ * displayed.
30
+ */
31
+ String getTabCaption();
32
+
33
+ /**
34
+ * This method returns the component that should be used as the contents of
35
+ * the custom tab when it is displayed. <b>Note:</b> Burp invokes this
36
+ * method once when the tab is first generated, and the same component will
37
+ * be used every time the tab is displayed.
38
+ *
39
+ * @return The component that should be used as the contents of the custom
40
+ * tab when it is displayed.
41
+ */
42
+ Component getUiComponent();
43
+
44
+ /**
45
+ * The hosting editor will invoke this method before it displays a new HTTP
46
+ * message, so that the custom tab can indicate whether it should be enabled
47
+ * for that message.
48
+ *
49
+ * @param content The message that is about to be displayed.
50
+ * @param isRequest Indicates whether the message is a request or a
51
+ * response.
52
+ * @return The method should return
53
+ * <code>true</code> if the custom tab is able to handle the specified
54
+ * message, and so will be displayed within the editor. Otherwise, the tab
55
+ * will be hidden while this message is displayed.
56
+ */
57
+ boolean isEnabled(byte[] content, boolean isRequest);
58
+
59
+ /**
60
+ * The hosting editor will invoke this method to display a new message or to
61
+ * clear the existing message. This method will only be called with a new
62
+ * message if the tab has already returned
63
+ * <code>true</code> to a call to
64
+ * <code>isEnabled()</code> with the same message details.
65
+ *
66
+ * @param content The message that is to be displayed, or
67
+ * <code>null</code> if the tab should clear its contents and disable any
68
+ * editable controls.
69
+ * @param isRequest Indicates whether the message is a request or a
70
+ * response.
71
+ */
72
+ void setMessage(byte[] content, boolean isRequest);
73
+
74
+ /**
75
+ * This method returns the currently displayed message.
76
+ *
77
+ * @return The currently displayed message.
78
+ */
79
+ byte[] getMessage();
80
+
81
+ /**
82
+ * This method is used to determine whether the currently displayed message
83
+ * has been modified by the user. The hosting editor will always call
84
+ * <code>getMessage()</code> before calling this method, so any pending
85
+ * edits should be completed within
86
+ * <code>getMessage()</code>.
87
+ *
88
+ * @return The method should return
89
+ * <code>true</code> if the user has modified the current message since it
90
+ * was first displayed.
91
+ */
92
+ boolean isModified();
93
+
94
+ /**
95
+ * This method is used to retrieve the data that is currently selected by
96
+ * the user.
97
+ *
98
+ * @return The data that is currently selected by the user. This may be
99
+ * <code>null</code> if no selection is currently made.
100
+ */
101
+ byte[] getSelectedData();
102
+ }
@@ -0,0 +1,38 @@
1
+ package burp;
2
+
3
+ /*
4
+ * @(#)IMessageEditorTabFactory.java
5
+ *
6
+ * Copyright PortSwigger Ltd. All rights reserved.
7
+ *
8
+ * This code may be used to extend the functionality of Burp Suite Free Edition
9
+ * and Burp Suite Professional, provided that this usage does not violate the
10
+ * license terms for those products.
11
+ */
12
+ /**
13
+ * Extensions can implement this interface and then call
14
+ * <code>IBurpExtenderCallbacks.registerMessageEditorTabFactory()</code> to
15
+ * register a factory for custom message editor tabs. This allows extensions to
16
+ * provide custom rendering or editing of HTTP messages, within Burp's own HTTP
17
+ * editor.
18
+ */
19
+ public interface IMessageEditorTabFactory
20
+ {
21
+ /**
22
+ * Burp will call this method once for each HTTP message editor, and the
23
+ * factory should provide a new instance of an
24
+ * <code>IMessageEditorTab</code> object.
25
+ *
26
+ * @param controller An
27
+ * <code>IMessageEditorController</code> object, which the new tab can query
28
+ * to retrieve details about the currently displayed message. This may be
29
+ * <code>null</code> for extension-invoked message editors where the
30
+ * extension has not provided an editor controller.
31
+ * @param editable Indicates whether the hosting editor is editable or
32
+ * read-only.
33
+ * @return A new
34
+ * <code>IMessageEditorTab</code> object for use within the message editor.
35
+ */
36
+ IMessageEditorTab createNewInstance(IMessageEditorController controller,
37
+ boolean editable);
38
+ }
@@ -0,0 +1,104 @@
1
+ package burp;
2
+
3
+ /*
4
+ * @(#)IParameter.java
5
+ *
6
+ * Copyright PortSwigger Ltd. All rights reserved.
7
+ *
8
+ * This code may be used to extend the functionality of Burp Suite Free Edition
9
+ * and Burp Suite Professional, provided that this usage does not violate the
10
+ * license terms for those products.
11
+ */
12
+ /**
13
+ * This interface is used to hold details about an HTTP request parameter.
14
+ */
15
+ public interface IParameter
16
+ {
17
+ /**
18
+ * Used to indicate a parameter within the URL query string.
19
+ */
20
+ static final byte PARAM_URL = 0;
21
+ /**
22
+ * Used to indicate a parameter within the message body.
23
+ */
24
+ static final byte PARAM_BODY = 1;
25
+ /**
26
+ * Used to indicate an HTTP cookie.
27
+ */
28
+ static final byte PARAM_COOKIE = 2;
29
+ /**
30
+ * Used to indicate an item of data within an XML structure.
31
+ */
32
+ static final byte PARAM_XML = 3;
33
+ /**
34
+ * Used to indicate the value of a tag attribute within an XML structure.
35
+ */
36
+ static final byte PARAM_XML_ATTR = 4;
37
+ /**
38
+ * Used to indicate the value of a parameter attribute within a multi-part
39
+ * message body (such as the name of an uploaded file).
40
+ */
41
+ static final byte PARAM_MULTIPART_ATTR = 5;
42
+ /**
43
+ * Used to indicate an item of data within a JSON structure.
44
+ */
45
+ static final byte PARAM_JSON = 6;
46
+
47
+ /**
48
+ * This method is used to retrieve the parameter type.
49
+ *
50
+ * @return The parameter type. The available types are defined within this
51
+ * interface.
52
+ */
53
+ byte getType();
54
+
55
+ /**
56
+ * This method is used to retrieve the parameter name.
57
+ *
58
+ * @return The parameter name.
59
+ */
60
+ String getName();
61
+
62
+ /**
63
+ * This method is used to retrieve the parameter value.
64
+ *
65
+ * @return The parameter value.
66
+ */
67
+ String getValue();
68
+
69
+ /**
70
+ * This method is used to retrieve the start offset of the parameter name
71
+ * within the HTTP request.
72
+ *
73
+ * @return The start offset of the parameter name within the HTTP request,
74
+ * or -1 if the parameter is not associated with a specific request.
75
+ */
76
+ int getNameStart();
77
+
78
+ /**
79
+ * This method is used to retrieve the end offset of the parameter name
80
+ * within the HTTP request.
81
+ *
82
+ * @return The end offset of the parameter name within the HTTP request, or
83
+ * -1 if the parameter is not associated with a specific request.
84
+ */
85
+ int getNameEnd();
86
+
87
+ /**
88
+ * This method is used to retrieve the start offset of the parameter value
89
+ * within the HTTP request.
90
+ *
91
+ * @return The start offset of the parameter value within the HTTP request,
92
+ * or -1 if the parameter is not associated with a specific request.
93
+ */
94
+ int getValueStart();
95
+
96
+ /**
97
+ * This method is used to retrieve the end offset of the parameter value
98
+ * within the HTTP request.
99
+ *
100
+ * @return The end offset of the parameter value within the HTTP request, or
101
+ * -1 if the parameter is not associated with a specific request.
102
+ */
103
+ int getValueEnd();
104
+ }