Esempio n. 1
0
	def onTextMessage(self,messageProtocolEntity):
		name   = messageProtocolEntity.getNotify()
		text    = messageProtocolEntity.getBody()
		sender  = messageProtocolEntity.getFrom()
		textmsg    = TextMessageProtocolEntity
		if messageProtocolEntity.getFrom(False):
			resp = Response()
			answer = resp.getResp(text,name,sender)
			if answer and answer.strip():
				if sender.lower().find("-") == -1:
					self.toLower(textmsg(answer, to = sender ))
					print "\nMensagem pessoal"
					print str(answer)
				else:
					self.toLower(textmsg(answer, to = sender ))
					print "\nMensagem grupo"
					print str(answer)
		else:
			answer = "Oi "+name+", o comando nĂŁo esta na lista de respostas.\n"
			print sender + "\n"
			print text + "\n"
			if sender.lower().find("-") == -1:
				time.sleep(1)
				self.toLower(textmsg(answer, to = sender))
				print answer
			else:
				print answer
Esempio n. 2
0
    def test_optional_json_attrs(self):
        add(
            Response(
                responses.GET,
                url=f"{ENDPOINT}site_info",
                json=SITE_INFO_RESPONSE_WITHOUT_OPTIONS,
            )
        )

        add(
            Response(
                responses.GET,
                url=f"{ENDPOINT}site_info",
                json=SITE_INFO_RESPONSE_WITH_OPTIONS,
            )
        )

        site_info = self.powerwall.get_site_info()
        self.assertEqual(site_info.has_optional_attrs_set(), False)
        self.assertEqual(site_info.has_key("utility"), False)
        self.assertEqual(site_info.grid_voltage_setting, 230)
        self.assertEqual(site_info.has_optional_attrs(), True)

        site_info = self.powerwall.get_site_info()
        self.assertEqual(site_info.has_optional_attrs_set(), True)
        self.assertEqual(site_info.has_key("utility"), True)
        self.assertEqual(site_info.retailer, "*")
Esempio n. 3
0
 def run():
     responses.add(
         Response(method=responses.GET, url="http://example.com/one"))
     with pytest.raises(ValueError) as excinfo:
         responses.replace(
             Response(method=responses.GET, url="http://example.com/two"))
     assert "Response is not registered for URL http://example.com/two" in str(
         excinfo.value)
    def test_retry(self):

        with open('tests/data/accounts_balances.json', 'r') as file:
            response_body = json.loads(file.read())

        url = 'https://demo-api.ig.com/gateway/deal/accounts'
        headers = {'CST': 'abc123', 'X-SECURITY-TOKEN': 'xyz987'}
        api_exceeded = {
            'errorCode': 'error.public-api.exceeded-api-key-allowance'
        }
        account_exceeded = {
            'errorCode': 'error.public-api.exceeded-account-allowance'
        }
        trading_exceeded = {
            'errorCode': 'error.public-api.exceeded-account-trading-allowance'
        }

        responses.add(
            Response(method='GET',
                     url=url,
                     headers={},
                     json=api_exceeded,
                     status=403))
        responses.add(
            Response(method='GET',
                     url=url,
                     headers={},
                     json=account_exceeded,
                     status=403))
        responses.add(
            Response(method='GET',
                     url=url,
                     headers={},
                     json=trading_exceeded,
                     status=403))
        responses.add(
            Response(method='GET',
                     url=url,
                     headers=headers,
                     json=response_body,
                     status=200))

        ig_service = IGService(
            'username',
            'password',
            'api_key',
            'DEMO',
            retryer=Retrying(
                wait=tenacity.wait_exponential(),
                retry=tenacity.retry_if_exception_type(ApiExceededException)))

        result = ig_service.fetch_accounts()

        assert responses.assert_call_count(url, 4) is True
        assert isinstance(result, pd.DataFrame)
        assert result.iloc[0]['accountId'] == 'XYZ987'
 def test_meter(self):
     add(
         Response(
             responses.GET,
             url=f"{ENDPOINT}meters/aggregates",
             json=METERS_AGGREGATES_RESPONSE,
         ))
 def test_get_backup_reserved_percentage(self):
     add(
         Response(responses.GET,
                  url=f"{ENDPOINT}operation",
                  json=OPERATION_RESPONSE))
     self.assertEqual(self.powerwall.get_backup_reserve_percentage(),
                      5.000019999999999)
 def test_get_operation_mode(self):
     add(
         Response(responses.GET,
                  url=f"{ENDPOINT}operation",
                  json=OPERATION_RESPONSE))
     self.assertEqual(self.powerwall.get_operation_mode(),
                      OperationMode.SELF_CONSUMPTION)
Esempio n. 8
0
def changeDBType(req):
    buttons = [["Yes", "No"]]
    text = "Don't find the field you entered. Dou you want to make more changes in df_type?"
    context = [{
        "name":
        'projects/initbot-svhgjk/agent/sessions/8c5eec04-72b3-63cc-3e36-238695a1aa35/contexts/Fieldsynonyms-followup',
        "lifespanCount": 2
    }, {
        "name":
        'projects/initbot-svhgjk/agent/sessions/8c5eec04-72b3-63cc-3e36-238695a1aa35/contexts/ChangeDB_Type-field-followup',
        "lifespanCount": 0
    }, {
        "name":
        'projects/initbot-svhgjk/agent/sessions/8c5eec04-72b3-63cc-3e36-238695a1aa35/contexts/ChangeDB_Type-followup',
        "lifespanCount": 0
    }]
    type = req.dbType
    data = getUserData(req.user)
    for f in data.db.table.fields:
        if f.name == req.fieldname:
            if type == 'varchar':
                f.db_meta = 'varchar(20)'
            elif type == 'decimal':
                f.db_meta = 'decimal(10,8)'
            else:
                f.db_meta = type
            text = 'Changed.\nDou you want to make more changes in db_type?'
            break
    r = response.Response(text, None, buttons, [], context)
    res = r.response
    return res
Esempio n. 9
0
def askForSynonyms(model):
    text = None
    context = []
    image = None
    buttons = []
    field = getFirstFieldWithoutSynonyms(model.db.table)
    if field is None:
        text = "Done. This table is already complete.\nThe model created is as follow.\nDo you want to make some changes in DB_Type? (yes/no).\n\nNOTE: DB_Type is the type of fields in database."
        context = [{
            "name":
            "projects/initbot-svhgjk/agent/sessions/8c5eec04-72b3-63cc-3e36-238695a1aa35/contexts/csvpath-followup",
            "lifespanCount": 0
        }]
        buttons = [['Yes', 'No']]
        p = puml.Plantuml(model)
        idPlantumlImage = p.getPlantumlImage()
        image = endPointImages + idPlantumlImage
    else:
        text = u'Ok, now I need you tell me the synonyms for "' + str(
            field.name) + u'" field \nHere a sample of data stored in "' + str(
                field.name) + u'" field: ' + str(field.values[0]) + ', ' + str(
                    field.values[1]) + u', ' + str(
                        field.values[2]
                    ) + u'.\n\nNOTE: separate synonyms with commas.'
        context = [{
            "name":
            "projects/initbot-svhgjk/agent/sessions/8c5eec04-72b3-63cc-3e36-238695a1aa35/contexts/csvpath-followup",
            "lifespanCount": 2
        }]
    r = response.Response(text, image, buttons, [], context)
    res = r.response
    return res
Esempio n. 10
0
 def test_get_serial_numbers(self):
     add(
         Response(responses.GET,
                  url=f"{ENDPOINT}powerwalls",
                  json=POWERWALLS_RESPONSE))
     serial_numbers = self.powerwall.get_serial_numbers()
     self.assertEqual(serial_numbers, ["SerialNumber1", "SerialNumber2"])
Esempio n. 11
0
 def test_get_grid_status(self):
     add(
         Response(responses.GET,
                  url=f"{ENDPOINT}system_status/grid_status",
                  json=GRID_STATUS_RESPONSE))
     grid_status = self.powerwall.get_grid_status()
     self.assertEqual(grid_status, GridStatus.CONNECTED)
Esempio n. 12
0
def ask_extraInfo():
    text = 'The field to ask for maps is saved. Do you want add extra data in maps?'
    buttons = [["Yes", "No"]]
    r = response.Response(text, None, buttons, [], None)
    res = r.response

    return res
Esempio n. 13
0
 def test_get_charge(self):
     add(
         Response(
             GET, url=f"{ENDPOINT}system_status/soe", json={"percentage": 53.123423}
         )
     )
     self.assertEqual(self.powerwall.get_charge(), 53)
     self.assertEqual(self.powerwall.get_charge(rounded=False), 53.123423)
Esempio n. 14
0
 def test_is_grid_services_active(self):
     add(
         Response(
             responses.GET,
             url=f"{ENDPOINT}system_status/grid_status",
             json=GRID_STATUS_RESPONSE,
         ))
     self.assertEqual(self.powerwall.is_grid_services_active(), False)
Esempio n. 15
0
 def handle_request(self, request):
     response = Response()
     handler = self.routes.get(request.path)
     if handler is not None:
         handler(request, response)
     else:
         self.default_response(response)
     return response
Esempio n. 16
0
 def test_get_device_type(self):
     add(
         Response(responses.GET,
                  url=f"{ENDPOINT}status",
                  json=STATUS_RESPONSE))
     device_type = self.powerwall.get_device_type()
     self.assertIsInstance(device_type, DeviceType)
     self.assertEqual(device_type, DeviceType.GW1)
Esempio n. 17
0
def make_post_client_credentials() -> Response:
    return Response(method='POST',
                    url='https://accounts.spotify.com/api/token',
                    json={
                        'access_token': 'MockSpotifyAccessToken',
                        'token_type': 'bearer',
                        'expires_in': 3600
                    })
Esempio n. 18
0
    def test_send__when_responded_OK__should_set_status_as_delivered(self):
        self.mocked_responses.add(Response(method='POST', url=self.endpoint))
        use_case = SendMessageToForeignUseCase(self.endpoint)
        use_case.send(self.message)

        assert self.message.status == MessageStatus.DELIVERED
        assert len(self.mocked_responses.calls) == 1
        assert self.mocked_responses.calls[
            0].request.body == b'{"receiver": "AU"}'
Esempio n. 19
0
 def test_detect_and_pin_version(self):
     add(
         Response(responses.GET,
                  url=f"{ENDPOINT}status",
                  json=STATUS_RESPONSE))
     vers = version.LooseVersion("1.50.1")
     pw = Powerwall(ENDPOINT)
     self.assertEqual(pw.detect_and_pin_version(), vers)
     self.assertEqual(pw._pin_version, vers)
Esempio n. 20
0
 def test_get_site_info(self):
     add(
         Response(responses.GET,
                  url=f"{ENDPOINT}site_info",
                  json=SITE_INFO_RESPONSE))
     site_info = self.powerwall.get_site_info()
     self.assertEqual(site_info.nominal_system_energy, 27)
     self.assertEqual(site_info.site_name, "test")
     self.assertEqual(site_info.timezone, "Europe/Berlin")
Esempio n. 21
0
def make_listen_response(id: str, song_id: str, listen_time_utc: str,
                         song_provider: str) -> Response:
    return Response(method='GET',
                    url=f'https://micro.morningcd.com/listens/{id}',
                    json={
                        'id': id,
                        'song_id': song_id,
                        'listen_time_utc': listen_time_utc,
                        'song_provider': song_provider
                    })
Esempio n. 22
0
def tablename_intent(req):
    # get model by username
    data = getUserData(req.user)
    # create table and add to user data
    data.db.table = table.Table(req.tablename, '', None)
    # generate response
    text = "Ok, saved!\nNow I need the csv url of '" + req.tablename + "' table."
    r = response.Response(text, None, [], [], None)
    res = r.response
    return res
Esempio n. 23
0
def showButtonsToChooseType(req, type):
    text = 'Choose the new type.'
    buttons = []
    if type == 'DB_Type':
        buttons = [['date'], ['integer'], ['varchar'], ['decimal']]
    else:
        buttons = [['number'], ['date'], ['url'], ['phone-number'], ['custom']]
    r = response.Response(text, None, buttons, [], None)
    res = r.response
    return res
Esempio n. 24
0
    def test_process_message__when_not_delivered__should_try_to_deliver(self):
        self.mocked_responses.add(Response(method='POST', url=self.endpoint))
        use_case = ProcessMessageUseCase(self.channel_repo,
                                         self.channel_queue_repo,
                                         self.endpoint)
        self.client.post(url_for('views.post_message'), json=self.message_data)
        use_case.execute()

        assert len(self.mocked_responses.calls) == 1
        assert self.mocked_responses.calls[
            0].request.body == b'{"obj": "QmQtYtUS7K1AdKjbuMsmPmPGDLaKL38M5HYwqxW9RKW49n", "predicate": "UN.CEFACT.Trade.CertificateOfOrigin.created", "receiver": "CN", "sender": "AU", "subject": "AU.abn0000000000.XXXX-XXXXX-XXXXX-XXXXXX"}'
Esempio n. 25
0
def askForMaps_intent(req):
    text = 'You can find the final model in the following image.\n\nNow I need some info in order to create maps.\nDo your csv have fields with coordinates X and Y (longitude and latitude)? (yes/no).'
    buttons = [["Yes", "No"]]
    data = getUserData(req.user)
    p = puml.Plantuml(data)
    idPlantumlImage = p.getPlantumlImage()
    image = endPointImages + idPlantumlImage
    r = response.Response(text, image, buttons, [], None)
    res = r.response

    return res
Esempio n. 26
0
def ask_valueMap(data):
    text = 'Good! The coordinates are saved.\n\nNow I need you tell me the field to ask for maps. Choose the field with the following buttons.'
    inline = []
    for f in data.db.table.fields:
        inline.append([{
            'text': f.name,
            'callback_data': 'valueMap is ' + f.name
        }])
    r = response.Response(text, None, [], inline, None)
    res = r.response
    return res
Esempio n. 27
0
    def make_response(self):
        valid_resourse = validate_path(unquote(self.resource), self.root_dir)
        if not valid_resourse:
            logging.info('Requested file is not allowed or not exist')
            return NOTFOUND_RESPONSE

        return Response(code=OK,
                        content=valid_resourse.read_bytes()
                        if self.method == 'GET' else None,
                        lengt=valid_resourse.stat().st_size,
                        mime_type=MIME_TYPES.get(valid_resourse.suffix[1:]),
                        method=self.method)
Esempio n. 28
0
def dbName_intent(req):
    global persistData
    # create model
    db = database.DataBase(req.dbname, None)
    data = userdata.UserData(req.user, db, None)
    # save data
    save_data(data)
    # create response
    text = "Saved!\nNow tell me the name of the table you want add to the database."
    r = response.Response(text, None, [], [], None)
    res = r.response
    return res
Esempio n. 29
0
 def test_is_sending(self):
     add(
         Response(responses.GET,
                  url=f"{ENDPOINT}meters/aggregates",
                  json=METERS_AGGREGATES_RESPONSE))
     meters = self.powerwall.get_meters()
     self.assertEqual(meters.solar.is_sending_to(), False)
     self.assertEqual(meters.solar.is_active(), True)
     self.assertEqual(meters.solar.is_drawing_from(), True)
     self.assertEqual(meters.site.is_sending_to(), True)
     self.assertEqual(meters.load.is_sending_to(), True)
     self.assertEqual(meters.load.is_drawing_from(), False)
     self.assertEqual(meters.load.is_active(), True)
Esempio n. 30
0
    def test_get_meters(self):
        add(
            Response(responses.GET,
                     url=f"{ENDPOINT}meters/aggregates",
                     json=METERS_AGGREGATES_RESPONSE))
        meters = self.powerwall.get_meters()
        self.assertIsInstance(meters, MetersAggregates)

        self.assertIsInstance(meters.site, Meter)
        self.assertIsInstance(meters.solar, Meter)
        self.assertIsInstance(meters.battery, Meter)
        self.assertIsInstance(meters.load, Meter)
        self.assertIsInstance(meters.get_meter(MeterType.SOLAR), Meter)