def check_message_id_in_messages(json_obj, message_id): for message in json_obj: message_dict = get_value_from_json(message, "message") message = get_value_from_json(message_dict, "id") if message == message_id: return True return False
def create_model_from_json(self, json_body): """ :param json_body: Json with fields :return: Attachment model """ self.size = get_value_from_json(json_body, "size") self.data = get_value_from_json(json_body, "data") return self
def set_model_from_json(self, json): """ Set model data from json object :param json: Json object with data """ self.access_window = get_value_from_json(json, "accessWindow") self.disposition = get_value_from_json(json, "disposition") return self
def set_model_from_json(self, json): """ Set model data from json object :param json: Json object with data """ self.enabled = get_value_from_json(json, "enabled") self.email_address = get_value_from_json(json, "emailAddress") self.disposition = get_value_from_json(json, "disposition") return self
def set_model_from_json(self, json): """ Set model data from json object :param json: Json object with data """ self.enabled = get_value_from_json(json, "enabled") self.auto_expunge = get_value_from_json(json, "autoExpunge") self.expunge_behavior = get_value_from_json(json, "expungeBehavior") self.max_folder_size = get_value_from_json(json, "maxFolderSize") return self
def init_acl_from_json(self, json_data): """ Метод инициализирует объект данными Args: json_data (dict): json ответ от сервера """ self.role = get_value_from_json(json_data, "role") scope_json = get_value_from_json(json_data, "scope") self.scope_type = scope_json['type'] self.scope_value = scope_json['value'] return self
def get_iis_message_from_json(self, json_obj): """ IIS - model for import, insert, send methods Args: json_obj (dict): response json to parse Returns: MessageModel: model with basic fields + header and data """ self.get_basic_message_from_json(json_obj) self.header = get_value_from_json(json_obj, "payload")["headers"] self.data = base64.b64decode( get_value_from_json(json_obj, "payload")["body"]["data"]).rstrip() return self
def check_that_message_added(json_obj, message_id): history_dict = get_value_from_json(json_obj, "history") check = check_history_message(history_dict, message_id, "messagesAdded") log_info("Checking that message {message_id} was added in history".format( message_id=message_id)) assert check, "Message {message_id} was not added from history".format( message_id=message_id)
def list(self, user_id): """ Lists all labels in the user's mailbox. :param user_id: The user's email address. :return: response, (list<LabelModel>) list of models. """ log_info( "[Users.labels]: List of labels for user with id={user_id}".format( user_id=user_id)) url = '{host}/{api}/{user_id}/labels/'.format(host=self.host, api=self.api, user_id=user_id) http = HttpLib(url=url) http.auth_to_google(client=client, scope=scope_labels) http.send_get() label_models_list = [] labels = get_value_from_json(http.get_response_json(http.response), 'labels') for label in labels: label_models_list.append( LabelModel().parse_response_to_model_for_list(label)) log_info( '[Users.labels]: LIST response: {status_code}, \n{models}'.format( status_code=http.get_response_status_code(http.response), models='\n'.join(model.__str__() for model in label_models_list))) return http.response, label_models_list
def get_iis_message_with_attachment_from_json(self, json_obj): """ IIS - model with attach for import, insert, send methods :param json_obj: response json to parse :return: MessageModel with all fields """ self.get_basic_message_from_json(json_obj) self.data = base64.b64decode( get_value_from_json(json_obj, "payload")['parts'][0]['body']['data']) self.header = get_value_from_json(json_obj, "payload")["headers"] self.file_name = get_value_from_json(json_obj, "payload")['parts'][1]['filename'] self.file_size = get_value_from_json( json_obj, "payload")['parts'][1]['body']['size'] self.attachment_id = get_value_from_json( json_obj, "payload")['parts'][1]['body']['attachmentId'] return self
def check_history_message(json_obj, message_id, key_message): for item in json_obj: try: message_added = get_value_from_json(item, key_message) except KeyError: continue if check_message_id_in_messages(message_added, message_id): return True return False
def get_empty_list_from_json(self, json_obj): """ Args: json_obj (dict): response json to parse Returns: MessageModel: """ self.result_size_estimate = get_value_from_json( json_obj, "resultSizeEstimate") return self
def get_basic_message_from_json(self, json_obj): """ Args: json_obj (dict): response json to parse Returns: MessageModel: """ self.message_id = get_value_from_json(json_obj, "id") self.thread_id = get_value_from_json(json_obj, "threadId")\ if json_obj.keys().count('threadId') \ else None self.label_ids = get_value_from_json(json_obj, "labelIds") \ if json_obj.keys().count('labelIds') \ else None self.snippet = get_value_from_json(json_obj, "snippet") \ if json_obj.keys().count('snippet') \ else None return self
def init_freebusy_from_json(self, json_data): """ Метод инициализирует объект данными из json :param json_data: json объект для инициализации объекта :type json_data: dict :return: созданная модель """ _regular = "(.*T\\d{1,2}:\\d{1,2}:\\d{1,2})" self.time_min = re.search(_regular, get_value_from_json(json_data, "timeMin")).group(0) self.time_max = re.search(_regular, get_value_from_json(json_data, "timeMax")).group(0) try: self.time_zone = get_value_from_json(json_data, "timeZone") except KeyError: self.time_zone = "" return self
def get_history_model_from_json(self, json_obj): try: self.message_added_id = \ get_value_from_json(json_obj["history"][0]['messagesAdded'][0]['message'], "id") self.message_added_thread_id = \ get_value_from_json(json_obj["history"][0]['messagesAdded'][0]['message'], "threadId") except KeyError: self.message_added_id = 0 self.message_added_thread_id = 0 try: self.message_deleted_id = \ get_value_from_json(json_obj["history"][2]['messagesDeleted'][0]['message'], "id") if len( json_obj["history"]) > 1 else None self.message_deleted_thread_id = \ get_value_from_json(json_obj["history"][2]['messagesDeleted'][0]['message'], "threadId") if len( json_obj["history"]) > 1 else None except KeyError: self.message_deleted_id = 0 self.message_deleted_thread_id = 0 return self
def calendar_list_list(self): """ Returns entries on the user's calendar list. :return: response, list<CalendarListModel> """ log_info("Send get request") http = HttpLib(url=self.url) http.auth_to_google(client=client, scope=scope_calendar) request = http.send_get() calendar_lists = [] lists = get_value_from_json( request.get_response_json(request.response), 'items') for calendar_list in lists: calendar_lists.append( CalendarListModel().pars_response_to_model(calendar_list)) log_info("Returned:\nModel calendarList list:\n{model_list}".format( model_list='\n'.join( str(item.__dict__) for item in calendar_lists))) return request.response, calendar_lists
def forwarding_list(self, user_id="me", client_id=client): """ Build forwarding list request :param user_id: user email :param client_id: auth client :return: response, ForwardingModel object """ forwarding = [] url = "{host}/{api}/{user_id}/settings/forwardingAddresses".format(host=self.host, api=self.api, user_id=user_id) log_info(url) http = HttpLib(url=url) http.auth_to_google(client=client_id, scope=scope_settings_forwarding) http.send_get() log_pretty_json(http.response.text, "Forwarding list response") forwarding_items = get_value_from_json(http.get_response_json(http.response), 'forwardingAddresses') for item in forwarding_items: forwarding.append(ForwardingModel().create_model_from_json(item)) return http.response, forwarding
def settings_list(self): """ Method to build setings list request Returns: list of SettingsModel objects: list of settings from response int: response status code """ settings = [] url = "{host}/{api}/settings".format(host=self.host, api=self.api) http = HttpLib(url=url) http.auth_to_google(client=client, scope=scope_calendar) http.send_get() settings_items = get_value_from_json( http.get_response_json(http.response), 'items') for item in settings_items: settings.append(SettingsModel().create_model_from_json(item)) return settings, http.get_response_status_code(http.response)
def get_send_as_model_from_json(self, json_obj): self.send_as_email = get_value_from_json(json_obj, 'sendAsEmail') self.display_name = get_value_from_json(json_obj, 'displayName') self.signature = get_value_from_json(json_obj, 'signature') return self
def get_users_model_from_json(self, json_obj): self.email = get_value_from_json(json_obj, 'emailAddress') self.messages_total = get_value_from_json(json_obj, 'messagesTotal') self.threads_total = get_value_from_json(json_obj, 'threadsTotal') self.history_id = get_value_from_json(json_obj, 'historyId') return self
def create_model_from_json(self, json_str): self.kind = get_value_from_json(json_str, 'kind') self.etag = get_value_from_json(json_str, 'etag') self.id = get_value_from_json(json_str, 'id') self.value = get_value_from_json(json_str, 'value') return self
def get_draft_message_model_from_json(self, json_object): message_basic = get_value_from_json(json_object, "message") self.get_basic_message_from_json(message_basic) self.draft_message_id = get_value_from_json(json_object, "id") return self