def __init__(self, server): self.logger = LoggerFactory.getLogger("com.xebialabs.snyk-plugin") if server in [None, ""]: raise Exception("server is undefined") self.orgId = server['orgId'] self.http_request = HttpRequest(server)
def revoke_token(self): print "Revoking token" httpRequest = HttpRequest(self.httpConnection, None, None) servicenowApiUrl = "/oauth_revoke_token.do?token=%s" % self.accessToken response = httpRequest.get(servicenowApiUrl) servicenowApiUrl = "/oauth_revoke_token.do?token=%s" % self.refreshToken response = httpRequest.get(servicenowApiUrl)
def get_applications(ancestor, applications_count): request = HttpRequest(server, username, password) applications_batch = [] results_remain = True page = 0 while results_remain: endpoint = '/deployit/repository/query?page={}&resultsPerPage=100&type=udm.Application&ancestor={}'.format( page, ancestor) response = request.get(endpoint, contentType='application/json') if not response.isSuccessful(): raise Exception( "Failed to get application information from XL Deploy. Server return [%s], with content [%s]" % (response.status, response.response)) results = json.loads(response.response) if results == []: results_remain = False else: for result in results: applications_batch.append({ "id": "{}".format(applications_count), "name": result["ref"] }) applications_count += 1 page += 1 return {"batch": applications_batch, "count": applications_count}
def _putRequest(self, url, data): encoded_data = json.dumps(data).encode(self.encoding) response = HttpRequest(self.params).put(url, encoded_data, contentType=self.content_type, headers=self.headers) return response
def __init__(self, httpConnection, apiKey, username="", password=""): self.headers = {"X-NuGet-ApiKey": apiKey} self.query_params = "" self.httpConnection = httpConnection self.httpConnection['username'] = username self.httpConnection['password'] = password self.httpRequest = HttpRequest(self.httpConnection, username, password)
def __init__(self, tokenServer, url, username, password): try: from urlparse import urlparse # Python 2.X except ImportError: from urllib.parse import urlparse # Python 3+ # Fixes some issues with TLS os.environ['REQUESTS_CA_BUNDLE'] = 'ca.pem' # logger.info("Executing SamlTokenProvider.__init__()") # print("Executing SamlTokenProvider.__init__() \r\n") # print("url: " + url + " \r\n") hostname = urlparse(url).hostname # print("hostname: " + hostname + " \r\n") # logger.info("url = %s" % url) self.tokenServer = tokenServer self.tokenParams = { 'url': 'https://login.microsoftonline.com', 'username': username, 'password': password } self.cookieParams = { 'url': 'https://' + urlparse(url).hostname, 'username': username, 'password': password } self.url = url self.tokenRequest = HttpRequest(self.tokenParams, username, password) self.cookieRequest = HttpRequest(self.cookieParams, username, password) self.username = username self.password = password # External Security Token Service for SPO self.sts = {'host': 'login.microsoftonline.com', 'path': '/extSTS.srf'} # Sign in page url self.login = '******' # Last occurred error self.error = '' self.token = None self.FedAuth = None self.rtFa = None
def testServer(self, variables): httpConnection = variables['params'] httpRequest = HttpRequest(httpConnection) response = httpRequest.get("/") self.logger.error("Response Status = %s" % response.getStatus()) if response.getStatus() == 200: return sys.exit(-1)
def __init__(self, httpConnection, username=None, password=None): self.headers = {} self.query_params = "" self.httpConnection = httpConnection if username is not None: self.httpConnection['username'] = username if password is not None: self.httpConnection['password'] = password self.httpRequest = HttpRequest(self.httpConnection, username, password)
def call_url(verb, data, baseUrl, testUrl, keyId, keySecret, serverProxyHost, serverProxyPort, serverProxyUsername, serverProxyPassword ): r"""A convenience definition to call a URL with the necessary headers and payload. No need to worry about how to POST multipart/form-data or how to handle certain error exceptions. The return value is either the respopnse body or error reason code. """ params = { 'url': baseUrl, 'username': keyId, 'password': keySecret, 'proxyHost': serverProxyHost, 'proxyPort': serverProxyPort, 'proxyUsername': serverProxyUsername, 'proxyPassword': serverProxyPassword } try: if verb == 'post': response = HttpRequest(params).post(testUrl, json.dumps(data), contentType='application/json') elif verb == 'put': response = HttpRequest(params).put(testUrl, json.dumps(data), contentType='application/json') elif verb == 'patch': response = HttpRequest(params).patch(testUrl, json.dumps(data), contentType='application/json') elif verb == 'delete': response = HttpRequest(params).delete(testUrl, json.dumps(data), contentType='application/json') elif verb == 'get': response = HttpRequest(params).get(testUrl, contentType='application/json') else: logger.error("FATAL: HTTP verb error! Only POST, PUT, PATCH, DELETE and GET verbs supported.") sys.exit(201) output = json.loads(response.getResponse()) # Catch all exceptions except Exception as error: logger.error("FATAL: Error! %s" % error) raise Exception( "Failed to connect to Blazemeter Server." ) sys.exit(205) return output
def __init__(self, httpConnection, username=None, password=None): self.headers = {"Accept": "application/json"} self.accessToken = None self.refreshToken = None self.httpConnection = httpConnection if username: self.httpConnection['username'] = username if password: self.httpConnection['password'] = password self.httpRequest = HttpRequest(self.httpConnection, username, password)
def __init__(self, v1CI): self.Token = v1CI['accessToken'] self.uriBase = v1CI['uriBase'] self.storyStatus = v1CI['StoryStatus'] self.httpConnection = v1CI self.httpRequest = HttpRequest(v1CI) self.optionHeader = { "Accept": "application/json", "Authorization": "Bearer %s" % self.Token }
def __init__(self, httpConnection, webhookToken, maxChecksPerDeploymentId=30, timeout=5): self.httpConnection = httpConnection self.httpRequest = HttpRequest(httpConnection) self.webhookToken = webhookToken self.headers = self._get_headers() self.maxChecksPerDeploymentId = maxChecksPerDeploymentId self.timeout = timeout
def __init__(self, httpConnection, username=None, password=None): self.headers = {} self.accessToken = None self.refreshToken = None self.httpConnection = httpConnection self.useOAuth = httpConnection['useOAuth'] if username: self.httpConnection['username'] = username if password: self.httpConnection['password'] = password self.httpRequest = HttpRequest(self.httpConnection, username, password) self.sysparms = 'sysparm_display_value=%s&sysparm_input_display_value=%s' % (self.httpConnection['sysparmDisplayValue'], self.httpConnection['sysparmInputDisplayValue'])
def complete_task(self, taskId, username=None, password=None): request = HttpRequest(self.httpConnection, username, password) context = '/api/v1/tasks/%s/complete' % taskId body = '{"comment":"Completed by XL Deploy"}' response = request.post(context, body, contentType='application/json') if response.isSuccessful() and self.isTaskCompleted(taskId): print "Current Task with id [%s] is %s." % (taskId, COMPLETED) return True else: print "Failed to complete task with id: %s" % taskId response.errorDump() sys.exit(1)
def __init__(self, tokenServer, url, username, password): logger.info("Executing SamlTokenProvider.__init__()") logger.info("url = %s" % url) self.tokenServer = tokenServer self.tokenParams = { 'url': 'https://login.microsoftonline.com', 'username': username, 'password': password } self.cookieParams = { 'url': 'https://login.microsoftonline.com', 'username': username, 'password': password } self.url = url self.tokenRequest = HttpRequest(self.tokenParams, username, password) self.cookieRequest = HttpRequest(self.cookieParams, username, password) self.username = username self.password = password # External Security Token Service for SPO self.sts = {'host': 'login.microsoftonline.com', 'path': '/extSTS.srf'} # Sign in page url self.login = '******' #dwang_DEBUG self.msftlogin = '******' self.msfthost = 'login.microsoftonline.com' # Last occurred error self.error = '' self.token = None self.FedAuth = None self.rtFa = None logger.info("Exiting SamlTokenProvider.__init__()")
def assign_task(self, task_id, owner, username=None, password=None): request = HttpRequest(self.httpConnection, username, password) context = '/api/v1/tasks/%s/assign/%s' % (task_id, owner) body = '' response = request.post(context, body, contentType='application/json') if response.isSuccessful(): print "Assigned task with id [%s] to [%s]" % (task_id, owner) return True else: print "Failed to assign task with id [%s] to [%s]" % (task_id, owner) response.errorDump() sys.exit(1)
def isTaskCompleted(self, taskId, username=None, password=None): request = HttpRequest(self.httpConnection, username, password) context = '/api/v1/tasks/%s' % taskId response = request.get(context, contentType='application/json') if response.isSuccessful(): data = json.loads(response.response) status = data["status"] print "Current Task with id [%s] is %s." % (taskId, status) return status == COMPLETED else: print "Failed to get status for task with id: %s" % taskId response.errorDump() sys.exit(1)
def meetup_getpostcomments(self, variables): httpConnection = variables['server'] httpRequest = HttpRequest(httpConnection, variables['username'], variables['password']) url = "/comments?postId=%s" % variables['postId'] self.logger.error("Get Post Comments %s" % (url)) response = httpRequest.get(url, contentType='application/json') jsonData = response.getResponse() data = json.loads( jsonData ) listData = [] for recordData in data: self.logger.error( recordData['body'] ) listData.append( recordData['body'] ) returnData = {"responseJson": jsonData, "comments": listData } return returnData
def refresh_token(self, httpConnection, refreshToken): servicenowUrl = "/oauth_token.do" content = {} content['grant_type'] = 'refresh_token' content['client_id'] = httpConnection['clientId'] content['client_secret'] = httpConnection['clientSecret'] content['refresh_token'] = refreshToken httpRequest = HttpRequest(httpConnection, None, None) response = httpRequest.post(servicenowUrl, body=urllib.urlencode(content), contentType='application/x-www-form-urlencoded') if response.getStatus() == SN_RESULT_STATUS: data = json.loads(response.getResponse()) return data print "Unable to refresh token using %s" % refreshToken self.throw_error(response)
def __init__(self, httpConnection, username=None, password=None): self.headers = {} self.accessToken = None self.httpConnection = httpConnection self.username = username if username else httpConnection['username'] self.password = password if password else httpConnection['password'] # clear username/password so underlying library doesn't try to do basic authentication del httpConnection['username'] del httpConnection['password'] self.httpRequest = HttpRequest(self.httpConnection) self.issue_token()
def create_token(self, httpConnection): servicenow_oauth_url = "/oauth_token.do" content = {} content['grant_type'] = 'password' content['client_id'] = httpConnection['clientId'] content['client_secret'] = httpConnection['clientSecret'] content['username'] = httpConnection['oauthUsername'] content['password'] = httpConnection['oauthPassword'] httpRequest = HttpRequest(httpConnection, None, None) response = httpRequest.post(servicenow_oauth_url, body=urllib.urlencode(content), contentType='application/x-www-form-urlencoded') if response.getStatus() == SN_RESULT_STATUS: data = json.loads(response.getResponse()) return data print 'Could not get access token' self.throw_error(response)
def __init__(self, httpConnection, username=None, password=None): self.headers = {'Content-type': 'application/json; charset=UTF-8'} self.accessToken = None self.refreshToken = None self.httpConnection = httpConnection self.useServicenowApp = httpConnection['useServicenowApp'] self.useOAuth = httpConnection['useOAuth'] self.service_now_url = httpConnection['url'].rstrip("/") if username: self.httpConnection['username'] = username if password: self.httpConnection['password'] = password self.httpRequest = HttpRequest(self.httpConnection, username, password) self.sysparms = 'sysparm_display_value=%s&sysparm_input_display_value=%s' % ( self.httpConnection['sysparmDisplayValue'], self.httpConnection['sysparmInputDisplayValue'])
def get_applications_metadata(applications): request = HttpRequest(server, username, password) application_metadata = {} for application in applications: applicationShortName = application["name"].split('/')[-1] application_metadata[applicationShortName] = {} application_metadata[applicationShortName]["plotId"] = application[ "id"] endpoint = '/deployit/repository/ci/{}'.format(application["name"]) response = request.get(endpoint, contentType='application/json') if not response.isSuccessful(): raise Exception( "Failed to get application information from XL Deploy. Server return [%s], with content [%s]" % (response.status, response.response)) lastVersion = json.loads(response.response)["lastVersion"] application_metadata[applicationShortName]["lastVersion"] = lastVersion if lastVersion == "": applicationDependencies = [] else: endpoint = '/deployit/repository/ci/{}/{}'.format( application["name"], lastVersion) response = request.get(endpoint, contentType='application/json') if not response.isSuccessful(): raise Exception( "Failed to get deployment package information from XL Deploy. Server return [%s], with content [%s]" % (response.status, response.response)) if json.loads(response.response)["type"] == "udm.CompositePackage": applicationDependencies = [] else: applicationDependencies = json.loads( response.response)["applicationDependencies"].keys() application_metadata[applicationShortName][ "applicationDependencies"] = applicationDependencies application_metadata[applicationShortName]["dependedUponCount"] = 0 for application in application_metadata.keys(): for dependency in application_metadata[application][ "applicationDependencies"]: if dependency in application_metadata.keys( ): # only add if dependency exists in XLD application_metadata[dependency]["dependedUponCount"] += 1 return application_metadata
def __init__(self, httpConnection, username=None, password=None): self.httpConnection = httpConnection if username is not None: self.httpConnection['username'] = username if password is not None: self.httpConnection['password'] = password params = { 'url': httpConnection['url'], 'proxyHost': httpConnection['proxyHost'], 'proxyPort': httpConnection['proxyPort'] } self.httpRequest = HttpRequest(params) self.accessToken = self._getAuthToken() self.headers = { 'Accept': 'application/json', 'Cookie': 'token=%s' % self.accessToken }
def hasPermission(task, is610andAbove, configs=None): de = getProperty(t, is610andAbove, "environment", "deploymentEnvironment") if de != None: u = getProperty(t, is610andAbove, "username") p = getProperty(t, is610andAbove, "password", isPassword=True) dp = getProperty(t, is610andAbove, "deploymentPackage") if is610andAbove: s = getProperty(t, is610andAbove, "server") if u == None or u == "": u = s.username if p == None or p == "": p = s.password url = s.url else: s = findServerData(getProperty(t, is610andAbove, "server"), configs)[0] if u == None or u == "": u = s["username"] if p == None or p == "": p = s["password"] p = "admin" url = s["url"] http_request = HttpRequest( { "url": url, "username": str(u), "password": str(p) }, "", "") response = http_request.get( "/deployit/security/check/deploy%23initial/Environments/" + de, contentType="application/xml") if response.status == 200: res_text = response.getResponse() if res_text.find("false") > -1: return False else: return True else: return False else: return False
def __init__(self, buildId, testName, testNameWildCard, hourRange, limit, http_connection, acctUsername, accessKey): self.configUsername = acctUsername self.configAccessKey = accessKey self.http_connection = http_connection # If not username and accessKey not configured in the getJobs task, use the info from the # SauceLabs server configuration if not self.configUsername: self.configUsername = http_connection.get("username") if not self.configAccessKey: self.configAccessKey = http_connection.get("password") self.http_request = HttpRequest(http_connection, self.configUsername, self.configAccessKey) self.acctUsername = acctUsername self.buildId = buildId self.testName = testName self.testNameWildCard = testNameWildCard self.beginRange = None self.endRange = None self.limit = limit if hourRange and hourRange > 0: self.endRange = str(int(time.time())) self.beginRange = str(int(time.time()) - (int(hourRange) * 3600))
def __init__(self, http_connection, username=None, password=None): self.http_request = HttpRequest(http_connection, username, password)
def __init__(self, server, username, password): self.logger = LoggerFactory.getLogger("com.xebialabs.bitbucket-plugin") creds = CredentialsFallback(server, username, password).getCredentials() self.http_request = HttpRequest(server, creds['username'], creds['password'])
# from jenkinsci import JenkinsciScript from xlrelease.HttpRequest import HttpRequest import json, urllib jenkins_server = securityApi.decrypt( configurationApi.getConfiguration(request.query['serverId'])) params = { 'url': jenkins_server.url, 'username': jenkins_server.username, 'password': jenkins_server.password, 'proxyHost': jenkins_server.proxyHost, 'proxyPort': jenkins_server.proxyPort, 'proxyUsername': jenkins_server.proxyUsername, 'proxyPassword': jenkins_server.proxyPassword } buildId = request.query['buildId'] jobId = request.query['jobid'] http_request = HttpRequest(params) jenkins_response = http_request.get('/job/' + jobId + '/' + buildId + '/testReport/api/json') if jenkins_response.isSuccessful(): json_data = json.loads(jenkins_response.getResponse()) response.entity = json_data else: error = json.loads(jenkins_response.getResponse()) sys.exit(1)
# # The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # import json from xlrelease.HttpRequest import HttpRequest if not sonarServer: raise Exception("Sonar server ID must be provided") sonar_url = sonarServer['url'] sonar_server_api_url = '/api/measures/component?componentKey=%s&metricKeys=%s' % ( resource, ','.join(metrics.keys())) http_request = HttpRequest(sonarServer, username, password) sonar_response = http_request.get(sonar_server_api_url) if sonar_response.isSuccessful(): json_data = json.loads(sonar_response.getResponse()) data1 = {} data1['id'] = json_data['component']['id'] data1['key'] = json_data['component']['key'] data1['name'] = json_data['component']['name'] data1['sonarUrl'] = sonar_url for item in json_data['component']['measures']: data1[item['metric']] = item['value'] data = data1 else: error = json.loads(sonar_response.getResponse()) if 'Invalid table' in error['error']['message']: print "Invalid Table Name"