mirror of
				https://github.com/Jermolene/TiddlyWiki5
				synced 2025-11-04 01:23:01 +00:00 
			
		
		
		
	Add query string support for tm-http-request
This commit is contained in:
		@@ -32,7 +32,9 @@ HttpClient.prototype.handleHttpRequest = function(event) {
 | 
				
			|||||||
		bindProgress = paramObject["bind-progress"],
 | 
							bindProgress = paramObject["bind-progress"],
 | 
				
			||||||
		method = paramObject.method || "GET",
 | 
							method = paramObject.method || "GET",
 | 
				
			||||||
		HEADER_PARAMETER_PREFIX = "header-",
 | 
							HEADER_PARAMETER_PREFIX = "header-",
 | 
				
			||||||
 | 
							QUERY_PARAMETER_PREFIX = "query-",
 | 
				
			||||||
		PASSWORD_HEADER_PARAMETER_PREFIX = "password-header-",
 | 
							PASSWORD_HEADER_PARAMETER_PREFIX = "password-header-",
 | 
				
			||||||
 | 
							PASSWORD_QUERY_PARAMETER_PREFIX = "password-query-",
 | 
				
			||||||
		CONTEXT_VARIABLE_PARAMETER_PREFIX = "var-",
 | 
							CONTEXT_VARIABLE_PARAMETER_PREFIX = "var-",
 | 
				
			||||||
		requestHeaders = {},
 | 
							requestHeaders = {},
 | 
				
			||||||
		contextVariables = {},
 | 
							contextVariables = {},
 | 
				
			||||||
@@ -45,11 +47,19 @@ HttpClient.prototype.handleHttpRequest = function(event) {
 | 
				
			|||||||
		setBinding(bindStatus,"pending");
 | 
							setBinding(bindStatus,"pending");
 | 
				
			||||||
		setBinding(bindProgress,"0");
 | 
							setBinding(bindProgress,"0");
 | 
				
			||||||
		$tw.utils.each(paramObject,function(value,name) {
 | 
							$tw.utils.each(paramObject,function(value,name) {
 | 
				
			||||||
 | 
								// Look for query- parameters
 | 
				
			||||||
 | 
								if(name.substr(0,QUERY_PARAMETER_PREFIX.length) === QUERY_PARAMETER_PREFIX) {
 | 
				
			||||||
 | 
									url = $tw.utils.setQueryStringParameter(url,name.substr(QUERY_PARAMETER_PREFIX.length),value);
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
			// Look for header- parameters
 | 
								// Look for header- parameters
 | 
				
			||||||
			if(name.substr(0,HEADER_PARAMETER_PREFIX.length) === HEADER_PARAMETER_PREFIX) {
 | 
								if(name.substr(0,HEADER_PARAMETER_PREFIX.length) === HEADER_PARAMETER_PREFIX) {
 | 
				
			||||||
				requestHeaders[name.substr(HEADER_PARAMETER_PREFIX.length)] = value;
 | 
									requestHeaders[name.substr(HEADER_PARAMETER_PREFIX.length)] = value;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			// Look for password-header- parameters
 | 
								// Look for password-header- parameters
 | 
				
			||||||
 | 
								if(name.substr(0,PASSWORD_QUERY_PARAMETER_PREFIX.length) === PASSWORD_QUERY_PARAMETER_PREFIX) {
 | 
				
			||||||
 | 
									url = $tw.utils.setQueryStringParameter(url,name.substr(PASSWORD_QUERY_PARAMETER_PREFIX.length),$tw.utils.getPassword(value) || "");
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								// Look for password-query- parameters
 | 
				
			||||||
			if(name.substr(0,PASSWORD_HEADER_PARAMETER_PREFIX.length) === PASSWORD_HEADER_PARAMETER_PREFIX) {
 | 
								if(name.substr(0,PASSWORD_HEADER_PARAMETER_PREFIX.length) === PASSWORD_HEADER_PARAMETER_PREFIX) {
 | 
				
			||||||
				requestHeaders[name.substr(PASSWORD_HEADER_PARAMETER_PREFIX.length)] = $tw.utils.getPassword(value) || "";
 | 
									requestHeaders[name.substr(PASSWORD_HEADER_PARAMETER_PREFIX.length)] = $tw.utils.getPassword(value) || "";
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
@@ -201,4 +211,19 @@ exports.httpRequest = function(options) {
 | 
				
			|||||||
	return request;
 | 
						return request;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					exports.setQueryStringParameter = function(url,paramName,paramValue) {
 | 
				
			||||||
 | 
						var URL = $tw.browser ? window.URL : require("url").URL,
 | 
				
			||||||
 | 
							newUrl;
 | 
				
			||||||
 | 
						try {
 | 
				
			||||||
 | 
							newUrl = new URL(url);
 | 
				
			||||||
 | 
						} catch(e) {
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if(newUrl && paramName) {
 | 
				
			||||||
 | 
							newUrl.searchParams.set(paramName,paramValue || "");
 | 
				
			||||||
 | 
							return newUrl.toString();
 | 
				
			||||||
 | 
						} else {
 | 
				
			||||||
 | 
							return url;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
})();
 | 
					})();
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,8 +18,10 @@ The following parameters are used:
 | 
				
			|||||||
|!Name |!Description |
 | 
					|!Name |!Description |
 | 
				
			||||||
|method |HTTP method (eg "GET", "POST") |
 | 
					|method |HTTP method (eg "GET", "POST") |
 | 
				
			||||||
|body |String data to be sent with the request |
 | 
					|body |String data to be sent with the request |
 | 
				
			||||||
|header-* |Headers with string values|
 | 
					|query-* |Query string parameters with string values |
 | 
				
			||||||
 | 
					|header-* |Headers with string values |
 | 
				
			||||||
|password-header-* |Headers with values taken from the password store |
 | 
					|password-header-* |Headers with values taken from the password store |
 | 
				
			||||||
 | 
					|password-query-* |Query string parameters with values taken from the password store |
 | 
				
			||||||
|var-* |Variables to be passed to the completion and progress handlers (without the "var-" prefix) |
 | 
					|var-* |Variables to be passed to the completion and progress handlers (without the "var-" prefix) |
 | 
				
			||||||
|bind-status |Title of tiddler to which the status of the request ("pending", "complete", "error") should be bound |
 | 
					|bind-status |Title of tiddler to which the status of the request ("pending", "complete", "error") should be bound |
 | 
				
			||||||
|bind-progress |Title of tiddler to which the progress of the request (0 to 100) should be bound |
 | 
					|bind-progress |Title of tiddler to which the progress of the request (0 to 100) should be bound |
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user