コード例 #1
0
def do_server_play(token, game, strategy):    
    client = http.client.HTTPConnection(SERVER, 8080)
    client.connect()

    # block until the game starts
    client.request('GET', '/games/{}/board?token={}'.format(game, token))

    i = 0
    response = client.getresponse()
    
    while response.status == 200:
        data = json.loads(response.read().decode())

        print("[***] step {}, current score {}, moves we have left {}".format(
            i, data["score"], data["moves"]))

        next_cursor = solve(
            data["board"], strategy, data["score"]
        )

        time.sleep(0.2)

        # make move and wait for a new round
        client.request(
            'POST', '/games/{}/board?token={}'.format(game, token),
            json.dumps({
                'x': next_cursor.x,
                'y': next_cursor.y,
            })
        )

        response = client.getresponse()
        i += 1
    else:
        print("[i] response done, got server code {}".format(response.status))
コード例 #2
0
def main():
    # init baasbox
    print('Logging in to backend api...')

    # scopes = ['weaponmods']
    scopes = ['weapontalents', 'playertalents', 'geartalents', 'gearsets', 'weapons', 'weaponmods', 'exoticgears',
              'gearattributes']

    login_params = json.dumps({'username': '******', 'password': '******', 'appcode': 'gearsheet'})
    client = http.client.HTTPConnection("localhost:9000")

    client.request('POST', '/login', login_params, {'Content-Type': 'application/json'})
    login_response = client.getresponse()

    login_response = json.loads(login_response.read().decode('utf-8'))

    if not result_is_ok(login_response):
        print("Login to baasbox failed")
        return

    session = login_response['data']["X-BB-SESSION"]
    print('Login successful.')

    # reset the db
    print('resetting the db...')
    reset_params = json.dumps(scopes + ['indexes'])
    client.request('POST', '/plugin/bot.index', reset_params, headers={'Content-Type': 'application/json',
                                                                'X-BB-SESSION': session})
    reset_response = json.loads(client.getresponse().read().decode('utf-8'))

    print('db reset done')

    for scope in scopes:
        pull_data_from_scope(scope, session)
コード例 #3
0
def play(room_id, token, server, debug=False, alias=''):
    """
    Connect to game server and play rounds in the loop until end of game.
    """
    # connect to the game server
    client = http.client.HTTPConnection(server)
    client.connect()
    game_url = '/games/{}/board?token={}'.format(room_id, token)
    if alias:
        game_url += '&alias={}'.format(alias)

    # wait until the game starts
    client.request('GET', game_url)

    response = client.getresponse()

    while response.status == 200:
        data = json.loads(response.read().decode())
        if debug:
            print(data)
            # sleep 3 seconds so, you will be able to read printed data
            time.sleep(3)

        # make your move and wait for a new round
        client.request('POST', game_url, json.dumps(get_move(data)))

        response = client.getresponse()
コード例 #4
0
def pull_data_from_scope(scope, session):
    print('Retrieving data from gearsheet..')
    params = urllib.parse.urlencode({'scope': scope, 'format': 'verbose'})
    url = 'https://script.google.com/macros/s/AKfycbwQY10fvbOH0eo3TQ6X-uYe_TfLcWanIdqMKBx7EiXz67Uiem0/exec?%s' \
          % params

    response = urllib.request.urlopen(url).read().decode('utf-8')

    print('Data successfully retrieved.')
    data = json.loads(response)

    client = http.client.HTTPConnection("localhost:9000")
    for item in data:
        #  print(item)
        item['name'] = item['name'].strip()
        item_json = json.dumps(item)
        client.request('POST', '/document/%s' % (scope), item_json,
                       {'Content-Type': 'application/json', 'X-BB-SESSION': session})
        item_add_response = json.loads(client.getresponse().read().decode('utf-8'))

        if result_is_ok(item_add_response):
            print('successfully added an item', item['name'])

        item_id = item_add_response['data']['id']
        # add an index for the talent
        print('indexing...')
        index_json = json.dumps({'name': item['name'].lower(), 'collection': scope, 'item_id': item_id})
        client.request('POST', '/document/indexes', index_json,
                       {'Content-Type': 'application/json', 'X-BB-SESSION': session})
        index_add_response = json.loads(client.getresponse().read().decode('utf-8'))

        if result_is_ok(index_add_response):
            print("indexing %s successful" % scope)
コード例 #5
0
ファイル: preprocess.py プロジェクト: zhaosm/yelp-for-chinese
def filter_out_no_restaurant():
    key = sys.argv[1]
    client = http.client.HTTPSConnection('api.yelp.com', timeout=100)
    header = {'Authorization': 'Bearer ' + key}
    ids = set()
    with open(os.path.join(data_dir, 'restaurants.csv'), 'r') as f:
        reader = csv.reader(f)
        next(reader)
        for line in reader:
            ids.add(line[1])
    added = set()
    with open(os.path.join(data_dir, 'restaurant_info_with_migrated.csv'),
              'r') as f1:
        with open(os.path.join(data_dir, 'restaurant_info_all.csv'),
                  'w') as f2:
            writer = csv.writer(f2)
            writer.writerow(['business_id', 'image_url', 'phone', 'price'])
            reader = csv.reader(f1)
            next(reader)
            for line in reader:
                if (line[0] in ids) and (line[0] not in added):
                    writer.writerow(line)
                    added.add(line[0])
            for id in ids:
                if id not in added:
                    client.request('GET',
                                   '/v3/businesses/' + id,
                                   headers=header)
                    response = client.getresponse().read()
                    response = json.loads(response.decode('utf-8'))
                    if 'error' in response.keys():
                        if response['error']['code'] == 'BUSINESS_MIGRATED':
                            new_business_id = response['error'][
                                'new_business_id']
                            client.request('GET',
                                           '/v3/businesses/' + new_business_id,
                                           headers=header)
                            response = client.getresponse().read()
                            response = json.loads(response.decode('utf-8'))
                            image_url = response[
                                'image_url'] if 'image_url' in response.keys(
                                ) else ''
                            phone = response[
                                'display_phone'] if 'display_phone' in response.keys(
                                ) else ''
                            price = response[
                                'price'] if 'price' in response.keys() else ''
                            writer.writerow([id, image_url, phone, price])
                        else:
                            writer.writerow([id, '', '', ''])
                    else:
                        image_url = response[
                            'image_url'] if 'image_url' in response.keys(
                            ) else ''
                        phone = response[
                            'display_phone'] if 'display_phone' in response.keys(
                            ) else ''
                        price = response['price'] if 'price' in response.keys(
                        ) else ''
                        writer.writerow([id, image_url, phone, price])
コード例 #6
0
ファイル: game.py プロジェクト: evelinakaminska/GROT_client
def play(room_id, token, server, debug=False, alias=''):
    """
    Connect to game server and play rounds in the loop until end of game.
    """
    # connect to the game server
    client = http.client.HTTPConnection(server)
    client.connect()
    game_url = '/games/{}/board?token={}'.format(room_id, token)
    if alias:
        game_url += '&alias={}'.format(alias)

    # wait until the game starts
    client.request('GET', game_url)

    response = client.getresponse()

    while response.status == 200:
        data = json.loads(response.read().decode())
        #debug = True
        if debug:
            #print(data)
            pp=pprint.PrettyPrinter(indent=4)
            pp.pprint(data)
            # sleep 3 seconds so, you will be able to read printed data
            time.sleep(3)

        # make your move and wait for a new round
        client.request('POST', game_url, json.dumps(get_move(data)))

        response = client.getresponse()
コード例 #7
0
def main():
    # Main program block
    GPIO.setwarnings(False)
    GPIO.setmode(GPIO.BCM)  # Use BCM GPIO numbers
    # Initialise display
    lcd_init()
    instance = dht11.DHT11(pin=Temp_sensor)

    while True:
        #get DHT11 sensor value
        result = instance.read()
        # Send some test

        if result.is_valid():
            lcd_string("temp: " + str(result.temperature) + " C", LCD_LINE_1)
            lcd_string("humidity: " + str(result.humidity) + "%", LCD_LINE_2)
            time.sleep(3)  # 3 second delay
            lcd_string("Welcome to T3's HOME: ", LCD_LINE_1)
            lcd_string("demo from T3", LCD_LINE_2)
            time.sleep(3)
            # print (result.temperature, result.humidity)
            client = http.client.HTTPSConnection(
                'smarthome-c4f9f.firebaseio.com')
            # client.request('PUT','/sensors/tempHumidity.json', '{"isOn":true}')
            ## { "temp": “25”, "humidity": "17" }
            tsensor_tmp = {
                "temp": result.temperature,
                "humidity": result.humidity
            }
            th_sensor = json.dumps(tsensor_tmp)
            #print (tsensor_tmp)
            client.request('PUT',
                           '/deviceTest/1/current/sensors/tempHumidity.json',
                           th_sensor)
            #client.request('PUT','/deviceTest/1/current/sensors.json', th_sensor)
            #      client.request('PUT','/sensors/tempHumidity.json', '{"temp":str(result.temperature)}')

            #      client.request('PUT','/sensors/tempHumidity.json', '{"humidity":str(result.humidity)}')
            response = client.getresponse()
            print(response.reason, response.read())

            client.request(
                'GET',
                '/deviceTest/1/current/sensors/proximityWarning/isClose.json')

            ifClose = client.getresponse().read().decode()
            print(ifClose)
            #print(ifClose.status, ifClose.reason, ifClose.read())
            if ifClose == 'true':
                #print ("someone intruded!")
                lcd_string("Warning !! ", LCD_LINE_1)
                lcd_string("Someone intruded!! ", LCD_LINE_2)
                time.sleep(3)
コード例 #8
0
def getresults(query):
    domain = "www.trainchinese.com"
    urlTemmplate = "/v1/a_user/searchForWords.php?searchWord={}"
    url = urlTemmplate.format(urllib.parse.quote(query))

    client = http.client.HTTPConnection(domain)
    client.request("GET", url)
    response = client.getresponse()
    responseText = response.read().decode()

    regex = re.compile(r'sr_oneWord\((.+?)\)\+')
    matches = re.findall(regex, responseText)

    spanRegex = re.compile(r'<\/?span[^>]*>')

    results = []
    for match in matches:
        match = match.replace("'", "\"")
        match = "[" + match + "]"
        result = json.loads(match)
        name = result[2]
        name = re.sub(spanRegex, "", name)
        name = html.parser.HTMLParser().unescape(name)
        audio = "/v1/" + result[6][3:]
        results.append([name, audio])

    return results
コード例 #9
0
 def do_GET(self):
     client = http.client.HTTPConnection(urlBlocks(str(sys.argv[2]))[0], timeout=1)
     try:
         client.request(
             "GET",
             urlBlocks(str(sys.argv[2]))[1],
             None,
             self.headers
         )
     except socket.timeout:
         self.sendResponse({"code": "timeout"})
     else:
         resp = dict()
         clientResponse = client.getresponse()
         resp["headers"] = clientResponse.getheaders()
         resp["code"] = clientResponse.getcode()
         body = clientResponse.read()
         try:
             try:
                 json.loads(body.decode())
                 decoded = True
             except ValueError:
                 decoded = False
         except UnicodeDecodeError:
             resp["content"] = str(body)
         else:
             if decoded:
                 resp["json"] = json.loads(body.decode())
             else:
                 resp["content"] = str(body.decode())
         self.sendResponse(resp)
コード例 #10
0
ファイル: function.py プロジェクト: villasv/inovespa
 def tweet(self, message):
     authorization_params = {
         "oauth_consumer_key": self.consumer_key,
         "oauth_nonce": self.oauth_nonce,
         "oauth_signature": self.oauth_sign(message),
         "oauth_signature_method": self.oauth_signature_method,
         "oauth_timestamp": self.oauth_timestamp,
         "oauth_token": self.access_token,
         "oauth_version": self.oauth_version,
     }
     oauth_header = ", ".join([
         f'{p}="{encode(authorization_params[p])}"'
         for p in sorted(authorization_params.keys())
     ])
     client = http.client.HTTPSConnection("api.twitter.com")
     client.request(
         "POST",
         "/1.1/statuses/update.json",
         body=f"status={encode(message)}",
         headers={
             "Authorization": f"OAuth {oauth_header}",
             "Content-Type": "application/x-www-form-urlencoded",
         },
     )
     response = client.getresponse()
     print(response.status, response.reason)
     data = response.read()
     print(data)
     client.close()
コード例 #11
0
def get_courses(url, campus, dept_link):
    """Gets courses from a department's course description page.

  Args:
    url: The base URL for course descriptions.
    campus: The name of the department's campus.
    dept_link: A link to the department's course description page.

  Returns:
    A list of courses offered by the department.
  """
    client = http.client.HTTPConnection(url.netloc)
    client.request('GET', '%s%s' % (url.path, dept_link))
    response = client.getresponse()
    if response.status != 200:
        logging.warning('Error reading category (%s): %d %s', dept_link,
                        response.status, response.read())
        return

    tree = lxml.html.fromstring(response.read())
    client.close()

    items = tree.xpath('/html/body/a/p')
    courses = []
    for i in items:
        course = parse_course(i, campus)
        if not course:
            logging.warning('Unable to parse course: %s',
                            lxml.html.tostring(i))
            continue

        courses.append(course)

    return courses
コード例 #12
0
def get_department_links(url):
    """Gets department links from the course index page.

  Args:
    url: The URL of the index page containing a list of departments.

  Returns:
    A set of department links found on the page.

  Raises:
    Exception: If an error occurred fetching the list of department links.
  """
    client = http.client.HTTPConnection(url.netloc)
    client.request('GET', url.path)
    response = client.getresponse()
    if response.status != 200:
        raise Exception('Error reading index: %d %s' %
                        (response.status, response.read()))

    tree = lxml.html.fromstring(response.read())
    client.close()

    depts = tree.xpath(
        '/html/body/*/*/*/*/div[contains(@class, "uw-content")]//li/a')
    return set([i.get('href') for i in depts])
コード例 #13
0
    def assertHttpContent(self, route: str):
        page_name = route.split("/")[-1]
        print("Connecting to " + self.host + ':' + self.port + '/' + route.lstrip("/"))

        client = http.client.HTTPConnection(self.host + ':' + self.port)
        client.request("GET", route)
        response = client.getresponse()
        print(response.status, response.reason)

        self.assertEqual(response.status, 200, "Should have found page " + self.host + ':' + self.port + '/' + route.lstrip("/"))

        contents = response.read().decode('utf-8')
        client.close()

        self.assertIsNotNone(contents)
        self.assertTrue(page_name in contents)
        self.assertTrue('POM_MODEL_VERSION=4.0.0' in contents)
        self.assertTrue('POM_GROUP_ID=org.example' in contents)
        self.assertTrue('POM_ARTIFACT_ID=mkdocs-pom-parser-plugin' in contents)
        self.assertTrue('POM_PACKAGING=jar' in contents)
        self.assertTrue('POM_VERSION=1.0.0-SNAPSHOT' in contents)
        self.assertTrue('POM_NAME=mkdocs-pom-parser-plugin name' in contents)
        self.assertTrue('POM_DESCRIPTION=Some description' in contents)
        self.assertTrue('POM_URL=https://github.com' in contents)
        self.assertTrue('POM_SCM_CONNECTION=scm:git:git://github.com' in contents)
        self.assertTrue(escape('<groupId>org.example</groupId>') in contents)
        self.assertTrue(escape('<artifactId>mkdocs-pom-parser-plugin</artifactId>') in contents)
        self.assertTrue(escape('<version>1.0.0-SNAPSHOT</version>') in contents)
コード例 #14
0
ファイル: config.py プロジェクト: webbmastern/playhouse-web
    def get(self):
        if BridgeConfigHandler.bridges == None: 
            client = http.client.HTTPConnection(
                manager.config['lampdest'], manager.config['lampport']
            )
            print("BridgeConfig GET /bridges")
            client.request("GET", "/bridges");

            json = client.getresponse().read().decode()
            try:
                response = tornado.escape.json_decode(json)
            except ValueError:
                print("ValueError: Did not get json from server when requesting /bridges")
                print(json) 
                self.write("<p>Did not get json from server. Is the IP and port correct? Check the output in console</p>")
            else:
                if response['state'] == 'success':
                    data = response['bridges']
                    print("BridgeConfig response:", data)
                    BridgeConfigHandler.bridges = data 
                    self.render('config_bridges.html', bridges=data)
                else:
                    self.write("<p>Unexpected answer from lamp-server.</p>")
                    self.write("<p>" + str(response) + "</p>")
                    self.write("<p>Expected 'state':'success'</p>")
        else: 
            self.render('config_bridges.html', bridges=BridgeConfigHandler.bridges) 
コード例 #15
0
def almacenarProyectoTM(nombre, areaInteres):

    headers = {
        'Authorization': settings['tm-token'],
        'Accept-Language': 'en',
        'Content-Type': 'application/json; charset=UTF-8'
    }

    info = {
        "areaOfInterest": {
            "type": "FeatureCollection",
            "features": [areaInteres]
        },
        "projectName": nombre,
        "arbitraryTasks": True
    }

    client = http.client.HTTPConnection(settings['tm'],
                                        int(settings['tm-puerto']),
                                        timeout=int(
                                            settings['timeout-request']))
    client.request('PUT', '/api/v1/admin/project', json.dumps(info), headers)
    response = client.getresponse()

    if response.status == 201:
        return json.loads(response.read())['projectId']

    else:
        return False
コード例 #16
0
def single_page(course, quarter):
    while (1):
        try:
            client = http.client.HTTPSConnection(host)
            client.connect()
            '''
            client.request("GET",url)
            res = client.getresponse()
            '''

            ############################
            body[quarter_key] = quarter
            body[course_key] = course
            #print(body)
            data = urllib.parse.urlencode(body)
            client.request("POST", url, data, headers)
            res = client.getresponse()
            #print(res.getheaders())
            raw_codes = res.read()
            html = gzip.decompress(raw_codes)
            html = html.decode("utf-8")
            ##################################
            filepath = "./raw_data/" + course + "_" + quarter + ".html"
            f = open(filepath, "w+")
            f.write(html)
            f.close()
            client.close()
            time.sleep(0.1)
            break
            ###############################

        except:
            print(raw_codes)
            print("error when reading this page!!!skipping!")
            break
コード例 #17
0
    def close_trade(self, trade_id, amount=None):
        """
        Close existing market trade

        Return values:
            204 Ok. No content.
            400 Bad Request. The request could not be understood by the server due to malformed syntax.
            401 Unauthorized. The request requires user authentication.
            402 Payment Required. Not enough money for the operation.
            403 Forbidden. The request is forbidden due to limited access rights.
            404 Not Found. Required trade was not found.
            410 Gone. Off quotes or dealer reject.
            500 Internal Server Error. The server encountered an unexpected condition which prevented it from fulfilling the request.

        Keyword arguments:
        trade_id -- trade Id to close
        amount -- amount to close (optional)
        """
        client = self.__create_http_client()
        method = 'DELETE'
        if amount is None:
            url_relative = '/api/v1/trade?type=Close&id={0}'.format(trade_id)
        else:
            url_relative = '/api/v1/trade?type=Close&id={0}&amount={1}'.format(trade_id, amount)
        url_absolute = 'https://{0}{1}'.format(self.__web_api_address, url_relative)
        client.request(method, url_relative, None, self.__get_http_hmac_headers(method, url_absolute, None))
        return client.getresponse().status
コード例 #18
0
    def __init__(self):
        try:
            config = JsonHandler().LoadJson('Config.json')
            print(config)
            Client = pymongo.MongoClient("mongodb://localhost:27017/")
            dataBase = Client['DBB_db']
            PostCollection = dataBase['PostCollection']
            postList = []
            cursor = PostCollection.find({})

            for doc in cursor:
                postList.append(doc)

            sortedList = sorted(postList,
                                key=lambda i: i['PayLoadToken'],
                                reverse=True)
            print(str(len(sortedList)))
            token = sortedList[0]['PayLoadToken'] if len(sortedList) > 0 else 0
            payload = {"PayLoadToken": token}
            client = http.client.HTTPConnection(config['CordinatorHost'],
                                                config['CordinatorHTTPPort'])
            client.request('POST', "/recovery", json.dumps(payload),
                           {'Content-type': 'application/json'})
            response = client.getresponse()
            if response.status == 200:
                responseData = response.read()
                responseJSon = json.loads(responseData)
                if len(responseJSon) > 0:
                    PostCollection.insert_many(responseJSon)
        except Exception as ex:
            print(ex)
コード例 #19
0
    def get_daily_snapshots(self, request):
        """
        Get daily account snapshots

        New daily account snapshots request is described by the filling following fields:
        - **TimestampFrom** (optional) - Lower timestamp bound of the daily account snapshot request
        - **TimestampTo** (optional) - Upper timestamp bound of the daily account snapshot request
        - **RequestDirection** (optional) - Request paging direction ("Forward" or "Backward"). Default is "Forward".
        - **RequestPageSize** (optional) - Request page size. Default is 100.
        - **RequestFromId** (optional) - Request paging from Id

        If timestamps fields are not set daily account snapshot will be requests from the begin or from the current timestamp
        depending on **RequestDirection** value.

        Snapshots are returned by chunks by paging size (default is 100). You can provide timestamp bounds (from, to)
        and direction of access (forward or backward). After the first request you'll get a list of daily account snapshots
        records with Ids. The next request should contain **RequestFromId** with the Id of the last processed snapshot
        record. As the result you'll get the next chunk of daily account snapshots records. If the last page was reached
        response flag **IsLastReport** will be set.

        Keyword arguments:
        request -- daily account snapshots request
        """
        client = self.__create_http_client()
        method = 'POST'
        url_relative = '/api/v1/dailysnapshots'
        url_absolute = 'https://{0}{1}'.format(self.__web_api_address, url_relative)
        body = json.dumps(request)
        client.request(method, url_relative, body.encode(), self.__get_http_hmac_headers(method, url_absolute, body))
        response = json.loads(self.__decode_response(client.getresponse()))
        return response
コード例 #20
0
    def create_trade(self, trade):
        """
        Create new trade

        New trade request is described by the filling following fields:
        - ClientId (optional) - Client trade Id
        - Type (required) - Type of trade. Possible values: "Market", "Limit", "Stop"
        - Side (required) - Side of trade. Possible values: "Buy", "Sell"
        - Symbol (required) - Trade symbol (e.g. "EURUSD")
        - Price (optional) - Price of the "Limit" / "Stop" trades (for Market trades price field is ignored)
        - Amount (required) - Trade amount
        - StopLoss (optional) - Stop loss price
        - TakeProfit (optional) - Take profit price
        - ExpiredTimestamp (optional) - Expiration date and time for pending trades ("Limit", "Stop")
        - ImmediateOrCancel (optional) - "Immediate or cancel" flag (works only for "Limit" trades)
        - Comment (optional) - Client comment

        Keyword arguments:
        trade -- create trade request
        """
        client = self.__create_http_client()
        method = 'POST'
        url_relative = '/api/v1/trade'
        url_absolute = 'https://{0}{1}'.format(self.__web_api_address, url_relative)
        body = json.dumps(trade)
        client.request(method, url_relative, body.encode(), self.__get_http_hmac_headers(method, url_absolute, body))
        response = json.loads(self.__decode_response(client.getresponse()))
        return response
コード例 #21
0
 def __send_post_request__(self, db, query):
     """This method sends a post request with the appropriate query for ALTER CREATE DELETE DROP GRANT KILL
     REVOKE! """
     self.log.info('Start post request: db=' + db + ' q=' + query)
     client = self.__conn_setup__()
     try:
         client.request("POST",
                        "/query?db=" + db + "&q=" + query,
                        headers=self.__get_header__())
         resp = client.getresponse()
         self.log.info('Post response is: ' + str(resp.status))
         if resp.status >= 400:
             raise Exception
         iserror = str(resp.read().decode('utf-8'))
         self.log.debug(iserror)
         if iserror.find('error') >= 0:
             raise Exception
         return resp.status
     except json.JSONDecodeError:
         self.log.error(
             'No JSON came back from the get request to influx DB')
         return 400
     except Exception as e:
         self.log.error('The POST Request did not succeed, Status: ', e)
         return 400
コード例 #22
0
def getresults(query):
    domain = "www.trainchinese.com"
    urlTemmplate = "/v1/a_user/searchForWords.php?searchWord={}"
    url = urlTemmplate.format(urllib.parse.quote(query))

    client = http.client.HTTPConnection(domain)
    client.request("GET", url)
    response = client.getresponse()
    responseText = response.read().decode();

    regex = re.compile(r'sr_oneWord\((.+?)\)\+')
    matches = re.findall(regex, responseText)

    spanRegex = re.compile(r'<\/?span[^>]*>')

    results = []
    for match in matches:
        match = match.replace("'", "\"")
        match = "[" + match + "]"
        result = json.loads(match)
        name = result[2]
        name = re.sub(spanRegex, "", name)
        name = html.parser.HTMLParser().unescape(name)
        audio = "/v1/" +result[6][3:]
        results.append([name, audio])

    return results 
コード例 #23
0
def mymsfConsoleRead(myid):
    jobs[myid]='<started>'  
    listout=[]        
    msfToken()
    msfConsole()
     
    #results?
    client =  http.client.HTTPConnection('localhost',55552)        
    params=msgpack.packb(['console.read',msftoken,msfconsoleid])
    client.request("POST","/api/",params, msfheaders)
    response = client.getresponse()
    if response.status == 200:
        resdata=msgpack.unpackb(response.read())
        if len(resdata[b'data'])>0:
            for line in bytes.decode(resdata[b'data']).split('\n'):
                dictout={}
                #remove the msf > prompt and spaces since we've got limited space
                #and remove any \x01\x02 type chars in the prompt since it errors python xmlrpc.
                prompt=safestring(bytes.decode(resdata[b'prompt']))
                prompt=prompt.replace('msf > ','')
                prompt=prompt.replace('msf','')
                dictout['prompt']=prompt.strip()
                dictout['line']=safestring(line)
                listout.append(dictout)
    jobs[myid]=listout
コード例 #24
0
def mymsfConsoleWrite(myid,msfcommand):
    jobs[myid]='<started>'  
    listout=[]    
    msfToken()
    msfConsole()

    #command(s) to run in the msfconsole
    #send multiple like so: 
    #command=r"""one
    #two
    #three"""    
    if '\n' not in msfcommand:
        #add a line feed, most likely a single line command
        msfcommand+="\r\n"        
    if type(msfcommand)!=bytes:
        msfcommand=msfcommand.encode('ascii')
    #print(msfcommand)
    client =  http.client.HTTPConnection('localhost',55552)        
    params=msgpack.packb(['console.write',msftoken,msfconsoleid,msfcommand])
    client =  http.client.HTTPConnection('localhost',55552)        
    client.request("POST","/api/",params, msfheaders)
    response = client.getresponse()
    if response.status == 200:
        #listout.append(msgpack.unpackb(response.read()))
        resdata=msgpack.unpackb(response.read()) 
        #should be like this: {b'wrote': 33}        
    jobs[myid]=listout
コード例 #25
0
ファイル: osm.py プロジェクト: OpenOPx/opx-web-restructured
def agregarChangeset():

    try:
        #Armando XML
        root = Element('osm')

        changeset = SubElement(root, 'changeset')
        changeset.set('version', '0.6')

        tag = SubElement(changeset, 'tag')
        tag.set('k', 'comment')
        tag.set('v', 'test')

        client = http.client.HTTPSConnection(osmRestApiUrl)
        client.request('PUT', '/api/0.6/changeset/create', tostring(root),
                       osmHeaders())

        response = client.getresponse()

        if response.status == 200:
            return str(response.read(), 'utf-8')

        else:
            raise TypeError("Error Al intentar Crear Changeset OSM: " +
                            str(response.read(), 'utf-8'))

    except:
        raise TypeError("Error Al intentar Crear Changeset OSM " +
                        str(response.read(), 'utf-8'))
コード例 #26
0
def mymsfHosts(myid):
    jobs[myid]='<started>'  
    listout=[]    
    msferror=False
    global msftoken
    msfToken()
    
    #return a dict of all hosts info

    client =  http.client.HTTPConnection('localhost',55552)        
    params=msgpack.packb(['db.hosts',msftoken,[]])
    client.request("POST","/api/",params, msfheaders)
    response = client.getresponse()
    if response.status == 200:
        resdata=msgpack.unpackb(response.read())
        if b'error_message' in resdata.keys():
            msferror=True
            print(resdata[b'error_message'])
    #	print(resdata) #{b'hosts': ({b'info': b'', b'os_sp': b'', b'os_lang': b'', b'os_name': b'', b'name': b'', b'created_at': 1325119167, b'updated_at': 1325119167, b'mac': b'00:16:C6:46:28:18', b'state': b'alive', b'purpose': b'', b'address': b'192.168.10.10', b'os_flavor': b''},)}
    else:
        print("db.hosts failed")
        msferror=True
    
    if not msferror:
        if len(resdata[b'hosts'])>0:
            for host in resdata[b'hosts']:
                ahost={}
                ahost['name']=bytes.decode(host[b'name'])
                ahost['address']=bytes.decode(host[b'address'])
                listout.append(ahost)
                #print(bytes.decode(host[b'name']),bytes.decode(host[b'address']))
    jobs[myid]=listout
コード例 #27
0
ファイル: utils.py プロジェクト: digideskio/headless
def request(url, port, method, path, body=None, headers=None, **kwargs):
    '''
    Make a secure HTTPS request as JSON and return JSON

    This is a thin wrapper around http.client.HTTPSConnection to send/receive
    JSON and to bypass SSL verification and hostname verification. Works on
    Python 3.4 and 3.4.3.
    '''

    headers = headers or {'Accept': 'application/json',
                          'Content-Type': 'application/json',}

    ssl_config = {'check_hostname': False}

    if hasattr(ssl, '_create_unverified_context'):
        ssl_config['context'] = ssl._create_unverified_context()

    if not body is None:
        body = json.dumps(body)

    client = http.client.HTTPSConnection(url, port, **ssl_config)
    client.request(method, path, body, headers=headers)

    response = client.getresponse()

    if not str(response.status).startswith('2'):
        msg = 'Unsuccessful Response. Status: {0}'.format(response.status)
        raise Exception(msg)

    return response
コード例 #28
0
ファイル: wdslTelviva.py プロジェクト: SwannMR/PythonScripts
 def save_number(self,
         description = '',
         stype = '',
         snumber = '',
         sname = '',
         dtype = '',
         dnumber = '',
         owner = '',
         callerid = '',
         ):
     """
     Update feature code or number details
     """
     client = http.client.HTTPConnection(self.host)
     body = self.request.replace('<<method>>','save_number')
     enswitch_headers = '<enswitch:description>%s</enswitch:description>' % (description)
     enswitch_headers += '<enswitch:stype>%s</enswitch:stype>' % (stype)
     enswitch_headers += '<enswitch:snumber>%s</enswitch:snumber>' % (snumber)
     enswitch_headers += '<enswitch:sname>%s</enswitch:sname>' % (sname)
     enswitch_headers += '<enswitch:dtype>%s</enswitch:dtype>' % (dtype)
     enswitch_headers += '<enswitch:dnumber>%s</enswitch:dnumber>' % (dnumber)
     enswitch_headers += '<enswitch:owner>%s</enswitch:owner>' % (owner)
     enswitch_headers += '<enswitch:callerid>%s</enswitch:callerid>' % (callerid)
     body = body.replace('<<enswitch_headers>>',enswitch_headers)
     client.request('POST', self.url, body, headers=self.headers)
     response = client.getresponse()
     data = xmlToDictionary(response)
     return data
コード例 #29
0
ファイル: wdslTelviva.py プロジェクト: SwannMR/PythonScripts
 def make_call(self, stype, snumber, callerid1, ctype, cnumber, callerid2, card, wait, warn1, warn2,screen1,screen2,answer1, answer2, recordgroup):
     """
     Initiate a call from Telviva
     """
     client = http.client.HTTPConnection(self.host)
     body = self.request.replace('<<method>>','make_call')
     enswitch_headers = '<enswitch:stype>%s</enswitch:stype>' % (stype)
     enswitch_headers += '<enswitch:snumber>%s</enswitch:snumber>' % (snumber)
     enswitch_headers += '<enswitch:callerid1>%s</enswitch:callerid1>' % (callerid1)
     enswitch_headers += '<enswitch:ctype>%s</enswitch:ctype>' % (ctype)
     enswitch_headers += '<enswitch:cnumber>%s</enswitch:cnumber>' % (cnumber)
     enswitch_headers += '<enswitch:callerid2>%s</enswitch:callerid2>' % (callerid2)
     enswitch_headers += '<enswitch:card>%s</enswitch:card>' % (card)
     enswitch_headers += '<enswitch:wait>%s</enswitch:wait>' % (wait)
     enswitch_headers += '<enswitch:warn1>%s</enswitch:warn1>' % (warn1)
     enswitch_headers += '<enswitch:warn2>%s</enswitch:warn2>' % (warn2)
     enswitch_headers += '<enswitch:screen1>%s</enswitch:screen1>' % (screen1)
     enswitch_headers += '<enswitch:screen2>%s</enswitch:screen2>' % (screen2)
     enswitch_headers += '<enswitch:answer1>%s</enswitch:answer1>' % (answer1)
     enswitch_headers += '<enswitch:answer2>%s</enswitch:answer2>' % (answer2)
     enswitch_headers += '<enswitch:recordgroup>%s</enswitch:recordgroup>' % (recordgroup)
     body = body.replace('<<enswitch_headers>>', enswitch_headers)
     client.request('POST', self.url, body, headers=self.headers)
     response = client.getresponse()
     data = xmlToDictionary(response)
     return data
コード例 #30
0
 def do_POST(self):
     length = int(self.headers.get('content-length', 0))
     data = self.rfile.read(length)
     try:
         loaded_json = json.loads(data)
     except ValueError:
         self.send_json({"code": "invalid json"})
         return
     if "url" not in loaded_json.keys() or (
             "type" in loaded_json.keys()
             and "content" not in loaded_json.keys()
             and loaded_json["type"] == "POST"):
         self.send_json({"code": "invalid json"})
         return
     timeout = loaded_json["timeout"] if "timeout" in loaded_json.keys(
     ) else 1
     body = loaded_json["content"] if "type" in loaded_json.keys(
     ) and loaded_json["type"] == "POST" else None
     if body is not None and not isinstance(body, str):
         body = json.dumps(body)
     headers = loaded_json["headers"] if "headers" in loaded_json.keys(
     ) else dict()
     parsed_url = url_parse(loaded_json["url"])
     client = http.client.HTTPConnection(parsed_url[0], timeout=timeout)
     try:
         client.request(loaded_json["type"], parsed_url[1], body, headers)
     except socket.timeout:
         self.send_json({"code": "timeout"})
     else:
         self.create_json(client.getresponse())
コード例 #31
0
def getHttpContent(client, url):
	try:
		client.request("GET", url)
		res = client.getresponse()
	except socket.error as e:
		print("Could not even connect. Upsilon may not be running at this address & port.")
		print(("Socket error: " + str(e)))
		sys.exit()
	except client.BadStatusLine as e:
		print("Connected, but could not parse HTTP response.")
		print("If this server is running SSL, try again with --ssl")
		sys.exit()

	if res.status == 302 and res.getheader('Location'):
		res.read()
		return getHttpContent(client, "/" + res.getheader('Location'));
	if res.status == 301:
		res.read()
		parts = urlparse(res.getheader('Location'))
		location = parts.path
		return getHttpContent(client, location);

	if res.status != 200:
		logging.error("Requested: %s, Expected HTTP 200, got HTTP %d" % (url, res.status))

	res = res.read()

	assert len(res) > 0, "Expected non-empty response."

	return res
コード例 #32
0
def call(meth, option):
    global authenticated
    global token
    if meth != "auth.login":
        if not authenticated:
            print('MsfRPC: Not Authenticated')
            exit(1)

    # 認証以外のAPIの場合は、オプションに認証済みトークンを入れる
    if meth != "auth.login":
        option.insert(0, token)

    # オプションの組み立て
    option.insert(0, meth)

    # パラメータをmsgpackでシリアライズ
    params = msgpack.packb(option)

    # RPC APIの実行
    client.request("POST", "/api/", params, {"Content-type": "binary/message-pack"})

    # RPC APIの実行結果を返却
    # 実行結果はmsgpackからデシリアライズ
    resp = client.getresponse()
    return msgpack.unpackb(resp.read())
コード例 #33
0
def recurse(subreddit, hot_list=[], after=None, client=None):
    """Get all hot posts on a Subreddit"""

    path = '/r/' + urllib.parse.quote(subreddit, safe='') + '/hot.json'
    path += '?raw_json=1'
    if after is not None:
        path += '&after=' + urllib.parse.quote_plus(after)
        path += '&count=' + str(len(hot_list))
    if client is None:
        client = http.client.HTTPSConnection('www.reddit.com')
        client.connect()
    client.putrequest('GET', path)
    client.putheader('Connection', 'keep-alive')
    client.putheader('User-Agent', 'python:hbtn701t2:1 (by /u/SamHermesBoots)')
    client.endheaders()
    response = client.getresponse()
    if response.status != 200:
        client.close()
        return None
    posts = json.load(io.TextIOWrapper(response, encoding='UTF-8'))
    if response.getheader('Connection', 'close') == 'close':
        client.close()
        client = None
    hot_list.extend(p['data']['title'] for p in posts['data']['children'])
    if posts['data']['after'] is None:
        client.close()
        return hot_list
    return recurse(subreddit, hot_list, posts['data']['after'], client)
コード例 #34
0
 def do_POST(self):
     try:
         post_json = json.loads(
             self.rfile.read(int(self.headers.get('Content-Length',
                                                  0))).decode())
         result = check_json(post_json)
         if result[0] is False:
             self.set_headers()
             self.construct_json(response=None,
                                 timeout=False,
                                 invalid_json=True)
         else:
             client = http.client.HTTPConnection(result[2][0],
                                                 timeout=result[5])
             try:
                 client.request(result[1],
                                result[2][1],
                                headers=result[3],
                                body=result[4])
                 self.set_headers()
                 self.construct_json(client.getresponse(), False)
             except socket.timeout:
                 self.set_headers()
                 self.construct_json(None, True)
     except ValueError:
         self.set_headers()
         self.construct_json(None, False, True)
コード例 #35
0
ファイル: osm.py プロジェクト: OpenOPx/opx-web-restructured
def cerrarChangeset(changeset):

    client = http.client.HTTPSConnection(osmRestApiUrl)
    client.request('PUT', '/api/0.6/changeset/' + changeset + '/close', None,
                   osmHeaders())

    response = client.getresponse()
コード例 #36
0
def downloadfile(url, path):
    domain = "www.trainchinese.com"
    client = http.client.HTTPConnection(domain)
    client.request("GET", url)
    response = client.getresponse()

    with open(path, "wb") as outputfile:
        outputfile.write(response.read())
コード例 #37
0
ファイル: omeglesession.py プロジェクト: prauscher/omegle
	def clientRequest(self, method, url, postdata='\r\n', server=''):
		if server == '':
			server = self.server
		client = http.client.HTTPConnection(server)
		client.request(method, url, postdata, {"Content-Type": "application/x-www-form-urlencoded"});
		resp = client.getresponse()
		cont = resp.read().decode('utf-8')
		return cont
コード例 #38
0
def makeLocate(city):
    client = http.client.HTTPConnection(ipaddress, 5555)

    print("Locating Drivers nearby:")
    client.request("GET", "/locate?city=" + city)
    res = client.getresponse()
    data = res.read().decode('utf-8')
    return json.loads(data)
コード例 #39
0
 def get_public_all_ticks(self):
     """
     Get list of all available public feed ticks
     """
     client = self.__create_http_client()
     client.request('GET', '/api/v1/public/tick', None, self.__get_http_public_headers())
     response = json.loads(self.__decode_response(client.getresponse()))
     return response
コード例 #40
0
 def get_public_trade_session(self):
     """
     Get public trade session information
     """
     client = self.__create_http_client()
     client.request('GET', '/api/v1/public/tradesession', None, self.__get_http_public_headers())
     response = json.loads(self.__decode_response(client.getresponse()))
     return response
コード例 #41
0
def downloadfile(url, path):
    domain = "www.trainchinese.com"
    client = http.client.HTTPConnection(domain)
    client.request("GET", url)
    response = client.getresponse()

    with open(path, "wb") as outputfile:
        outputfile.write(response.read())
コード例 #42
0
    def do_POST(self):
        data = self.rfile.read(int(self.headers.get('content-length', 0)))
        try:
            jsonData = json.loads(data)
        except ValueError:
            self.sendResponse({"code": "invalid json"})
            return
        if "url" not in jsonData.keys() or \
                ("type" in jsonData.keys() and
                 jsonData["type"] == "POST" and
                 "content" not in jsonData.keys()):

            self.sendResponse({"code": "invalid json"})
            return
        if "timeout" in jsonData.keys():
            timeout = jsonData["timeout"]
        else:
            timeout = 1

        if "type" in jsonData.keys() and jsonData["type"] == "POST":
            body = jsonData["content"]
        else:
            body = None

        if not isinstance(body, str) and body is not None:
            body = json.dumps(body)

        if "headers" in jsonData.keys():
            headers = jsonData["headers"]
        else:
            headers = dict()

        client = http.client.HTTPConnection(urlBlocks(jsonData["url"])[0], timeout=timeout)

        try:
            client.request(jsonData["type"], urlBlocks(jsonData["url"])[1], body, headers)
        except socket.timeout:
            self.sendResponse({"code": "timeout"})
        else:
            resp = dict()
            clientResponse = client.getresponse()
            resp["code"] = clientResponse.getcode()
            resp["headers"] = clientResponse.getheaders()
            body = clientResponse.read()
            try:
                try:
                    json.loads(body.decode())
                    decoded = True
                except ValueError:
                    decoded = False
            except UnicodeDecodeError:
                resp["content"] = str(body)
            else:
                if decoded:
                    resp["json"] = json.loads(body.decode())
                else:
                    resp["content"] = str(body.decode())
            self.sendResponse(resp)
コード例 #43
0
ファイル: wdslTelviva.py プロジェクト: SwannMR/PythonScripts
 def delete_queue_destinations(self, queue_id):
     client = http.client.HTTPConnection(self.host)
     body = self.request.replace('<<method>>','delete_queue_destination')
     enswitch_headers = '<enswitch:queue>%s</enswitch:queue>' % (queue_id)
     body = body.replace('<<enswitch_headers>>', enswitch_headers)
     client.request('POST', self.url, body, headers=self.headers)
     response = client.getresponse()
     data = xmlToDictionary(response)
     return data
コード例 #44
0
 def _rest_method(self, endpoint, method, data=None):
     encoded_data = urllib.parse.urlencode(data) if data else None
     client = http.client.HTTPSConnection(get_hostname(self.token))
     client.request(method.upper(), endpoint, encoded_data,
                  headers=get_authorization_header(self.token))
     response = client.getresponse()
     data = response.read().decode('utf-8')
     client.close()
     return data
コード例 #45
0
ファイル: wdslTelviva.py プロジェクト: SwannMR/PythonScripts
 def get_phone(self, phone):
     client = http.client.HTTPConnection(self.host)
     body = self.request.replace('<<method>>','get_phone')
     enswitch_headers = '<enswitch:phone>%s</enswitch:phone>' % (phone)
     body = body.replace('<<enswitch_headers>>',enswitch_headers)
     client.request('POST', self.url, body, headers=self.headers)
     response = client.getresponse()
     data = xmlToDictionary(response)
     return data
コード例 #46
0
 def get_all_trades(self):
     """
     Get list of all available trades
     """
     client = self.__create_http_client()
     method = 'GET'
     url_relative = '/api/v1/trade'
     url_absolute = 'https://{0}{1}'.format(self.__web_api_address, url_relative)
     client.request(method, url_relative, None, self.__get_http_hmac_headers(method, url_absolute, None))
     response = json.loads(self.__decode_response(client.getresponse()))
     return response
コード例 #47
0
ファイル: wdslTelviva.py プロジェクト: SwannMR/PythonScripts
 def get_conference(self, confid):
     """
     Get conference based on the id
     """
     client = http.client.HTTPConnection(self.host)
     body = self.request.replace('<<method>>','get_conference')
     enswitch_headers = '<enswitch:confid>%s</enswitch:confid>' % (confid)
     body = body.replace('<<enswitch_headers>>', enswitch_headers)
     client.request('POST', self.url, body, headers=self.headers)
     response = client.getresponse()
     data = xmlToDictionary(response)
コード例 #48
0
    def get_public_currency(self, currency):
        """
        Get public currency by name

        Keyword arguments:
        currency -- currency name
        """
        currency = urllib.parse.quote_plus(urllib.parse.quote_plus(currency))
        client = self.__create_http_client()
        client.request('GET', '/api/v1/public/currency/{0}'.format(currency), None, self.__get_http_public_headers())
        response = json.loads(self.__decode_response(client.getresponse()))
        return response
コード例 #49
0
    def get_public_tick(self, symbol):
        """
        Get public feed tick by name

        Keyword arguments:
        symbol -- symbol name
        """
        symbol = urllib.parse.quote_plus(urllib.parse.quote_plus(symbol))
        client = self.__create_http_client()
        client.request('GET', '/api/v1/public/tick/{0}'.format(symbol), None, self.__get_http_public_headers())
        response = json.loads(self.__decode_response(client.getresponse()))
        return response
コード例 #50
0
ファイル: wdslTelviva.py プロジェクト: SwannMR/PythonScripts
 def delete_number(self, snumber):
     """
     Delete a feature code or number
     """
     client = http.client.HTTPConnection(self.host)
     body = self.request.replace('<<method>>','delete_number')
     enswitch_headers += '<enswitch:snumber>%s</enswitch:snumber>' % (snumber)
     body = body.replace('<<enswitch_headers>>',enswitch_headers)
     client.request('POST', self.url, body, headers=self.headers)
     response = client.getresponse()
     data = xmlToDictionary(response)
     return data
コード例 #51
0
ファイル: wdslTelviva.py プロジェクト: SwannMR/PythonScripts
 def get_queue(self, queue_id):
     """
     Return a spefic queue
     """
     client = http.client.HTTPConnection(self.host)
     body = self.request.replace('<<method>>','get_queue')
     enswitch_headers = '<enswitch:id>%s</enswitch:id>' % (queue_id)
     body = body.replace('<<enswitch_headers>>', enswitch_headers)
     client.request('POST', self.url, body, headers=self.headers)
     response = client.getresponse()
     data = xmlToDictionary(response)
     return data
コード例 #52
0
ファイル: wdslTelviva.py プロジェクト: SwannMR/PythonScripts
 def get_cos_outroutes(self, cos):
     """
     Get a list of exceptions
     """
     client = http.client.HTTPConnection(self.host)
     body = self.request.replace('<<method>>','get_cos_outroutes')
     enswitch_headers = '<enswitch:cos>%s</enswitch:cos>' % (cos)
     body = body.replace('<<enswitch_headers>>', enswitch_headers)
     client.request('POST', self.url, body, headers=self.headers)
     response = client.getresponse()
     data = xmlToDictionary(response)
     return data
コード例 #53
0
ファイル: wdslTelviva.py プロジェクト: SwannMR/PythonScripts
 def get_people(self, customer=0):
     """
     Get a list people from a customer
     """
     client = http.client.HTTPConnection(self.host)
     body = self.request.replace('<<method>>','get_people')
     enswitch_headers = '<enswitch:customer>%s</enswitch:customer>' % (customer)
     body = body.replace('<<enswitch_headers>>', enswitch_headers)
     client.request('POST', self.url, body, headers=self.headers)
     response = client.getresponse()
     data = xmlToDictionary(response)
     return data
コード例 #54
0
ファイル: wdslTelviva.py プロジェクト: SwannMR/PythonScripts
 def get_numbers(self):
     """
     Return a list of numbers and feature codes
     """
     client = http.client.HTTPConnection(self.host)
     body = self.request.replace('<<method>>','get_numbers')
     enswitch_headers = ''
     body = body.replace('<<enswitch_headers>>',enswitch_headers)
     client.request('POST', self.url, body, headers=self.headers)
     response = client.getresponse()
     data = xmlToDictionary(response)
     return data
コード例 #55
0
ファイル: wdslTelviva.py プロジェクト: SwannMR/PythonScripts
 def get_remote_access(self, access_id):
     """
     Get a list of remote access accounts
     """
     client = http.client.HTTPConnection(self.host)
     body = self.request.replace('<<method>>','get_access')
     enswitch_headers = '<enswitch:id>%s</enswitch:id>' % (access_id)
     body = body.replace('<<enswitch_headers>>',enswitch_headers)
     client.request('POST', self.url, body, headers=self.headers)
     response = client.getresponse()
     data = xmlToDictionary(response)
     return data