def getMessageVariantById(campaignId, variantId): endpoint = IrisHelper.constructUrl('getmessagevariant').replace('{campaignId}', str(campaignId)).replace( '{variantId}', variantId) response = Utils.makeRequest(url=endpoint, data='', auth=IrisHelper.constructAuthenticate(), headers=IrisHelper.constructHeaders(), method='GET') return IrisHelper.constructResponse(response)
def getObjectives(): campaignObjectivesEndpoint = IrisHelper.constructUrl('campaignobjectives') response = Utils.makeRequest(url=campaignObjectivesEndpoint, data='', auth=IrisHelper.constructAuthenticate(), headers=IrisHelper.constructHeaders(), method='GET') return {'RESPONSE': IrisHelper.constructResponse(response)}
def create(campaignType, testControlType, payload=None, startDate=None, endDate=None, description=None, testControlPercentage=None, name=None, updateNode=False, lockNode=False): if not CreateCampaign.checkCampaignAvialable(campaignType, testControlType) or updateNode: endpoint = IrisHelper.constructUrl('createcampaign') payload = CreateCampaign.constructPayload(campaignType, startDate, endDate, description, testControlType, testControlPercentage, name) if payload is None else payload response = IrisHelper.constructResponse( Utils.makeRequest(url=endpoint, data=payload, auth=IrisHelper.constructAuthenticate(), headers=IrisHelper.constructHeaders(), method='POST') ) if response['statusCode'] == 200: CreateCampaign.validateCreateCampaign(response) if not lockNode: CreateCampaign.updateNodeCampaign(campaignType, testControlType, response['json']['entity']['campaignId'], payload['name'], payload) if campaignType == 'LAPSED': time.sleep(25) # Wait to make Campaign Lapsed return { 'ID': response['json']['entity']['campaignId'], 'NAME': payload['name'], 'PAYLOAD': payload } else: return { 'RESPONSE': response, 'PAYLOAD': payload } else: return constant.config['node'][campaignType][testControlType]['CAMPAIGN']
def getMessageAll(campaignId, queryParam=[]): endpoint = IrisHelper.constructUrl('getmessage', queryParam=queryParam).replace('{campaignId}', str(campaignId)).replace( '{messageId}', '') response = Utils.makeRequest(url=endpoint, data='', auth=IrisHelper.constructAuthenticate(), headers=IrisHelper.constructHeaders(), method='GET') return IrisHelper.constructResponse(response)
def checkExists(campaignName): checkExistsEndpoint = IrisHelper.constructUrl( 'checkcampaignexists').replace('{name}', campaignName) response = Utils.makeRequest(url=checkExistsEndpoint, data='', auth=IrisHelper.constructAuthenticate(), headers=IrisHelper.constructHeaders(), method='GET') return IrisHelper.constructResponse(response)
def getOnboardingStatus(orgId): orgOnboardingStatusEndpoint = IrisHelper.constructUrl( 'orgonboadringstatus').replace('{orgId}', orgId) response = Utils.makeRequest(url=orgOnboardingStatusEndpoint, data='', auth=IrisHelper.constructAuthenticate(), headers=IrisHelper.constructHeaders(), method='GET') return {'RESPONSE': IrisHelper.constructResponse(response)}
def getOrgV2Status(): orgStatusEndpoint = IrisHelper.constructUrl('orgv2status') response = Utils.makeRequest(url=orgStatusEndpoint, data='', auth=IrisHelper.constructAuthenticate(), headers=IrisHelper.constructHeaders(), method='GET') return {'RESPONSE': IrisHelper.constructResponse(response)}
def approveWithCampaignAndMessageId(campaignId, messageId): endPoint = IrisHelper.constructUrl('approvemessage').replace( '{campaignId}', str(campaignId)).replace('{msgId}', messageId) return IrisHelper.constructResponse( Utils.makeRequest(url=endPoint, data=None, auth=IrisHelper.constructAuthenticate(), headers=IrisHelper.constructHeaders(), method='POST'))
def start(campaignId, messageId): endpoint = IrisHelper.constructUrl('startmessage').replace( '{campaignId}', str(campaignId)).replace('{msgId}', messageId) response = IrisHelper.constructResponse( Utils.makeRequest(url=endpoint, data='', auth=IrisHelper.constructAuthenticate(), headers=IrisHelper.constructHeaders(), method='POST')) return response
def executePrecheck(campaignId, messageId, checkVariant=True): if checkVariant: PreCheck.checkVariantIsClosed(messageId) endpoint = IrisHelper.constructUrl('precheck').replace( '{campaignId}', str(campaignId)).replace('{messageId}', messageId) response = Utils.makeRequest(url=endpoint, data='', auth=IrisHelper.constructAuthenticate(), headers=IrisHelper.constructHeaders(), method='GET') return IrisHelper.constructResponse(response)
def getAll(queryParam): endpoint = IrisHelper.constructUrl('getById', queryParam=queryParam).replace( '{group_id}', '') response = Utils.makeRequest(url=endpoint, data='', auth=IrisHelper.constructAuthenticate(), headers=IrisHelper.constructHeaders(), method='GET') return IrisHelper.constructResponse(response)
def getLevelsForDimension(category): endpoint = IrisHelper.constructUrl('productcategory').replace( '{category}', category) response = IrisHelper.constructResponse( Utils.makeRequest(url=endpoint, data='', auth=IrisHelper.constructAuthenticate(), headers=IrisHelper.constructHeaders(), method='GET')) return response
def getLevelValuesForDimension(urlSubstringForDimension, levelName): endpoint = IrisHelper.constructUrl('productlevel').replace( '{urlSubstringForDimension}', urlSubstringForDimension).replace('{levelName}', levelName) response = IrisHelper.constructResponse( Utils.makeRequest(url=endpoint, data='', auth=IrisHelper.constructAuthenticate(), headers=IrisHelper.constructHeaders(), method='GET')) return response
def edit(campaignInfo,editInfo): payload = copy.deepcopy(campaignInfo['PAYLOAD']) payload.update(editInfo) endpoint = IrisHelper.constructUrl('editcampaign').replace('{campaignId}',str(campaignInfo['ID'])) response = IrisHelper.constructResponse( Utils.makeRequest(url=endpoint, data=payload, auth=IrisHelper.constructAuthenticate(), headers=IrisHelper.constructHeaders(), method='PUT') ) return { 'PAYLOAD':payload, 'RESPONSE' : response }
def edit(campaignId, messageId, payload, editInfo=None): endpoint = IrisHelper.constructUrl('editmessage').replace( '{campaignId}', str(campaignId)).replace('{msgId}', messageId) if editInfo is not None: payload.update(editInfo) response = IrisHelper.constructResponse( Utils.makeRequest(url=endpoint, data=payload, auth=IrisHelper.constructAuthenticate(), headers=IrisHelper.constructHeaders(), method='PUT')) return {'RESPONSE': response, 'PAYLOAD': payload}
def updateSettings(self, updateInfo={}): campaignSettingsEndpoint = IrisHelper.constructUrl('campaignSettings') payload = CampaignSetting.constructUploadPayload(updateInfo) response = Utils.makeRequest( url=campaignSettingsEndpoint, data=payload, auth=IrisHelper.constructAuthenticate(), headers=IrisHelper.constructHeadersPatch(), method='PATCH') return { 'RESPONSE': IrisHelper.constructResponse(response), 'PAYLOAD': payload }
def settings(self, settingInfo={}, popField=None): Logger.log('Setting Info :', settingInfo) campaignSettingsEndpoint = IrisHelper.constructUrl('campaignSettings') payload = CampaignSetting.constructPayloadSetting( settingInfo, popField) response = Utils.makeRequest(url=campaignSettingsEndpoint, data=payload, auth=IrisHelper.constructAuthenticate(), headers=IrisHelper.constructHeaders(), method='POST') return { 'RESPONSE': IrisHelper.constructResponse(response), 'PAYLOAD': payload }
def create(campaignType, testControlType, channel, numberOfIdentifiers, numberOfCustomTag=0, campaignId=None, payload=None, messageBody=None, couponEnabled=None, pointsEnabled=None): campaignInfo = CreateCampaign.create(campaignType, testControlType) campaignId = campaignInfo['ID'] if campaignId is None else campaignId endPoint = IrisHelper.constructUrl('testpreview').replace('{campaignId}', str(campaignId)) payload = TestPreview.createPayload(campaignType, testControlType, channel, numberOfIdentifiers, numberOfCustomTag=numberOfCustomTag, messageBody=messageBody, couponEnabled=couponEnabled, pointsEnabled=pointsEnabled) if payload is None else payload response = IrisHelper.constructResponse( Utils.makeRequest(url=endPoint, data=payload, auth=IrisHelper.constructAuthenticate(), headers=IrisHelper.constructHeaders(), method='POST') ) return response, payload
def getLoyaltyProgram(): endpoint = IrisHelper.constructUrl('loyaltyprogram') response = IrisHelper.constructResponse( Utils.makeRequest(url=endpoint, data='', auth=IrisHelper.constructAuthenticate(), headers=IrisHelper.constructHeaders(), method='GET')) return (response)
def approve(campaignType, testControlType, listType, channel, messageInfo={}, messageCreateResponse=None, listInfo=None, campaignId=None, newUser=True, messageType='OUTBOUND', payload=None, targetAudience=None, scheduleType=None, messageStrategy=None, messageContent=None, updateNode=False, lockNode=False, storeType='REGISTERED_STORE', derivedListInfo=None, couponSeriesId=None): messageCreateResponse = CreateMessage.create( campaignType, testControlType, listType, channel, messageInfo=messageInfo, listInfo=listInfo, campaignId=campaignId, newUser=newUser, messageType=messageType, payload=payload, targetAudience=targetAudience, scheduleType=scheduleType, messageStrategy=messageStrategy, messageContent=messageContent, updateNode=updateNode, lockNode=lockNode, storeType=storeType, derivedListInfo=derivedListInfo, couponSeriesId=couponSeriesId ) if messageCreateResponse is None else messageCreateResponse if messageCreateResponse['RESPONSE']['statusCode'] == 200: campaignId = constant.config['node'][campaignType][testControlType][ 'CAMPAIGN']['ID'] if campaignId is None else campaignId messageId = constant.config['node'][campaignType][testControlType][ 'LIST'][listType][channel]['MESSAGE'][ messageInfo['scheduleType']['type']][messageInfo[ 'offerType']]['RESPONSE']['json']['entity'][ 'id'] if messageCreateResponse is None else messageCreateResponse[ 'RESPONSE']['json']['entity']['id'] Logger.log( 'Message Execution for CampaignType :{} , testsControlType :{} , listType :{} , channel :{} , SchedulleType :{} , offerType :{} with CampaignId :{} and messageId :{}' .format(campaignType, testControlType, listType, channel, messageInfo['scheduleType'], messageInfo['offerType'], campaignId, messageId)) variantJobName = 'PERSONALIZED_VARIANT_CREATION' if messageInfo[ 'messageStrategy'][ 'type'] == 'PERSONALISATION' else 'VARIANT_CREATION' if not message_calls().waitForJobDetailsStatusToClose( messageId, variantJobName): raise Exception('VariantNotCreatedException') endPoint = IrisHelper.constructUrl('approvemessage').replace( '{campaignId}', str(campaignId)).replace('{msgId}', messageId) response = IrisHelper.constructResponse( Utils.makeRequest(url=endPoint, data=payload, auth=IrisHelper.constructAuthenticate(), headers=IrisHelper.constructHeaders(), method='POST')) if response['statusCode'] == 200 and messageCreateResponse is None: constant.config['node'][campaignType][testControlType]['LIST'][ listType][channel]['MESSAGE'][ messageInfo['scheduleType']['type']][messageInfo[ 'offerType']]['RESPONSE']['EXECUTED'] = True return response else: raise Exception('Failed To Create Message Exception')
def getByOrgId(queryParam,entity=False): endpoint = IrisHelper.constructUrl('monitoringbyorgid', queryParam=queryParam) response = Utils.makeRequest(url=endpoint, data='', auth=IrisHelper.constructAuthenticate(), headers=IrisHelper.constructHeaders(), method='GET') return GetMonitoringDetails.constructMonitorStatusResponse(IrisHelper.constructResponse(response)['json'],byCampaignId=entity)
def create(campaignType, testControlType, listType, channel, messageInfo={}, listInfo=None, campaignId=None, newUser=True, messageType='OUTBOUND', payload=None, targetAudience=None, scheduleType=None, messageStrategy=None, messageContent=None, updateNode=False, lockNode=False, storeType='REGISTERED_STORE', numberOfCustomTag=0, derivedListInfo=None, maxUser=[], remindParams=None, couponSeriesId=None): if not CreateMessage.checkMessageAvialable( campaignType, testControlType, listType, channel, messageInfo['scheduleType']['type'], messageInfo['offerType']) or updateNode: campaignInfo = CreateCampaign.create(campaignType, testControlType) listInfo = CreateMessage.getListInfo( campaignType, testControlType, listType, channel, newUser, derivedListInfo) if listInfo is None else listInfo if listType == 'REMIND': if 'parentMessageId' not in remindParams and remindParams[ 'parentMessageId'] is None and 'reminderStrategy' not in remindParams and remindParams[ 'reminderStrategy'] is None: raise Exception('RequiredParamsMissingToConstructReminder') targetAudience = { 'isDef': True, 'includeDefinition': { 'defType': 'parentMsgReminder', 'parentMessageId': remindParams['parentMessageId'], 'reminderStrategy': remindParams['reminderStrategy'] }, 'orgUsers': [] if 'orgUsers' not in remindParams else remindParams['orgUsers'] } if listType == 'ORG_USERS': targetAudience = { 'include': [constant.config['FilterListID']], 'orgUsers': [listInfo['ID']], 'exclude': [] } campaignId = str( campaignInfo['ID']) if campaignId is None else campaignId endPoint = IrisHelper.constructUrl('createmessage').replace( '{campaignId}', str(campaignId)) payload = CreateMessage.constructPayload( campaignType, testControlType, messageInfo, listInfo, channel, messageType, numberOfCustomTag=numberOfCustomTag, targetAudience=targetAudience, scheduleType=scheduleType, messageStrategy=messageStrategy, messageContent=messageContent, storeType=storeType, maxUser=maxUser, remindParams=remindParams, couponSeriesId=couponSeriesId) if payload is None else payload Logger.log( 'Final Payload Used to Create Message :{}'.format(payload)) if campaignType == 'UPCOMING' and messageInfo['scheduleType'][ 'type'] == 'IMMEDIATE': for _ in range(30): Logger.log( 'Upcoming Campaign , is not Yet Live current time :{} and startDate of Campaign is :{}' .format(int(time.time() * 1000), campaignInfo['PAYLOAD']['startDate'])) if campaignInfo['PAYLOAD']['startDate'] > int( time.time() * 1000): time.sleep(5) else: break timeout = 30 if remindParams is None else 180 response = IrisHelper.constructResponse( Utils.makeRequest(url=endPoint, data=payload, auth=IrisHelper.constructAuthenticate(), headers=IrisHelper.constructHeaders(), timeout=timeout, method='POST')) if response['statusCode'] == 200: CreateMessage.validateCreateMessageResponse(response) if not lockNode: CreateMessage.updateMessageNode( campaignType, testControlType, listType, channel, messageInfo['scheduleType']['type'], messageInfo['offerType'], response, payload) if campaignType == 'LAPSED': time.sleep(2 * 60) return {'PAYLOAD': payload, 'RESPONSE': response} else: return {'RESPONSE': response, 'PAYLOAD': payload} else: return constant.config['node'][campaignType][testControlType][ 'LIST'][listType][channel]['MESSAGE'] [messageInfo['scheduleType']['type']][messageInfo['offerType']]
def getByMessageId(campaignId,messageId,queryParam): endpoint = IrisHelper.constructUrl('monitoringbymessageid', queryParam=queryParam).format(campaignId,messageId) response = Utils.makeRequest(url=endpoint, data='', auth=IrisHelper.constructAuthenticate(), headers=IrisHelper.constructHeaders(), method='GET') return GetMonitoringDetails.constructMonitorStatusResponse(IrisHelper.constructResponse(response)['json'])