AJMR-Python-Baird/Azure/hydroUsage.py

221 lines
13 KiB
Python

import requests
import json
import time
import xmltodict
import datetime
from bs4 import BeautifulSoup
import secret
loginUrl = ('https://api.loginradius.com/identity/v2/auth/login?apiKey=d842e884-2dfb-4c8f-a971-f9eacf8e9f54&loginUrl=&emailTemplate=Verification English&verificationUrl=https://account.hydroottawa.com/login')
authenticatorUrl = ('https://account.hydroottawa.com/ajax/authenticator')
secureUrl = ('https://account.hydroottawa.com/')
downloadDataUrl = ('https://secure.hydroottawa.com/Usage/Secure/TOU/DownloadMyData.aspx')
ssoMhlUrl = ('https://account.hydroottawa.com/ajax/sso_mhl')
ssoTargetUrl = ('https://secure.hydroottawa.com/Usage/SSO/SSOTarget.aspx')
jsonPayload = {
'email': secret.email,
'password': secret.password
}
headersPayloadOptions = {
'referrer': secureUrl,
'origin': secureUrl,
'Access-Control-Request-Method': 'POST',
'Connection': 'keep-alive'
}
headersPayload = {
'referrer': secureUrl,
'origin': secureUrl,
'Connection': 'keep-alive',
'Content-Type': 'application/json'
}
with requests.session() as s:
r = s.get(secureUrl)
print('get: ', r)
r = s.options(loginUrl, headers=headersPayloadOptions)
print('options: ', r)
r = s.post(loginUrl, json=jsonPayload, headers=headersPayload)
print('login post: ', r)
responseJson = r.json()
payload = {
'source': 'login',
'uid': responseJson['Profile']['Uid'],
'token': responseJson['access_token'],
'expires': responseJson['expires_in'],
'profile[Identities]': responseJson['Profile']['Identities'],
'profile[Password]': responseJson['Profile']['Password'],
'profile[LastPasswordChangeDate]': responseJson['Profile']['LastPasswordChangeDate'],
'profile[PasswordExpirationDate]': responseJson['Profile']['PasswordExpirationDate'],
'profile[LastPasswordChangeToken]': responseJson['Profile']['LastPasswordChangeToken'],
'profile[EmailVerified]': responseJson['Profile']['EmailVerified'],
'profile[IsActive]': responseJson['Profile']['IsActive'],
'profile[IsDeleted]': responseJson['Profile']['IsDeleted'],
'profile[Uid]': responseJson['Profile']['Uid'],
'profile[CustomFields][EBilling]': responseJson['Profile']['CustomFields']['EBilling'],
'profile[CustomFields][AccountID]': responseJson['Profile']['CustomFields']['AccountID'],
'profile[CustomFields][PreviousBillAmount]': responseJson['Profile']['CustomFields']['PreviousBillAmount'],
'profile[CustomFields][PreviousDueDate]': responseJson['Profile']['CustomFields']['PreviousDueDate'],
'profile[IsEmailSubscribed]': responseJson['Profile']['IsEmailSubscribed'],
'profile[UserName]': responseJson['Profile']['UserName'],
'profile[NoOfLogins]': responseJson['Profile']['NoOfLogins'],
'profile[PhoneId]': responseJson['Profile']['PhoneId'],
'profile[PhoneIdVerified]': responseJson['Profile']['PhoneIdVerified'],
'profile[Roles]': responseJson['Profile']['Roles'],
'profile[ExternalUserLoginId]': responseJson['Profile']['ExternalUserLoginId'],
'profile[RegistrationProvider]': responseJson['Profile']['RegistrationProvider'],
'profile[IsLoginLocked]': responseJson['Profile']['IsLoginLocked'],
'profile[LoginLockedType]': responseJson['Profile']['LoginLockedType'],
'profile[LastLoginLocation]': responseJson['Profile']['LastLoginLocation'],
'profile[RegistrationSource]': responseJson['Profile']['RegistrationSource'],
'profile[IsCustomUid]': responseJson['Profile']['IsCustomUid'],
'profile[UnverifiedEmail]': responseJson['Profile']['UnverifiedEmail'],
'profile[IsSecurePassword]': responseJson['Profile']['IsSecurePassword'],
'profile[PrivacyPolicy]': responseJson['Profile']['PrivacyPolicy'],
'profile[ExternalIds]': responseJson['Profile']['ExternalIds'],
'profile[IsRequiredFieldsFilledOnce]': responseJson['Profile']['IsRequiredFieldsFilledOnce'],
'profile[ConsentProfile]': responseJson['Profile']['ConsentProfile'],
'profile[PIN]': responseJson['Profile']['PIN'],
'profile[RegistrationData]': responseJson['Profile']['RegistrationData'],
'profile[ID]': responseJson['Profile']['ID'],
'profile[Provider]': responseJson['Profile']['Provider'],
'profile[Prefix]': responseJson['Profile']['Prefix'],
'profile[FirstName]': responseJson['Profile']['FirstName'],
'profile[MiddleName]': responseJson['Profile']['MiddleName'],
'profile[LastName]': responseJson['Profile']['LastName'],
'profile[Suffix]': responseJson['Profile']['Suffix'],
'profile[FullName]': responseJson['Profile']['FullName'],
'profile[NickName]': responseJson['Profile']['NickName'],
'profile[ProfileName]': responseJson['Profile']['ProfileName'],
'profile[BirthDate]': responseJson['Profile']['BirthDate'],
'profile[Gender]': responseJson['Profile']['Gender'],
'profile[Website]': responseJson['Profile']['Website'],
'profile[Email][0][Type]': responseJson['Profile']['Email'][0]['Type'],
'profile[Email][0][Value]': responseJson['Profile']['Email'][0]['Value'],
'profile[Country]': responseJson['Profile']['Country'],
'profile[ThumbnailImageUrl]': responseJson['Profile']['ThumbnailImageUrl'],
'profile[ImageUrl]': responseJson['Profile']['ImageUrl'],
'profile[Favicon]': responseJson['Profile']['Favicon'],
'profile[ProfileUrl]': responseJson['Profile']['ProfileUrl'],
'profile[HomeTown]': responseJson['Profile']['HomeTown'],
'profile[State]': responseJson['Profile']['State'],
'profile[City]': responseJson['Profile']['City'],
'profile[Industry]': responseJson['Profile']['Industry'],
'profile[About]': responseJson['Profile']['About'],
'profile[TimeZone]': responseJson['Profile']['TimeZone'],
'profile[LocalLanguage]': responseJson['Profile']['LocalLanguage'],
'profile[CoverPhoto]': responseJson['Profile']['CoverPhoto'],
'profile[TagLine]': responseJson['Profile']['TagLine'],
'profile[Language]': responseJson['Profile']['Language'],
'profile[Verified]': responseJson['Profile']['Verified'],
'profile[UpdatedTime]': responseJson['Profile']['UpdatedTime'],
'profile[Positions]': responseJson['Profile']['Positions'],
'profile[Educations]': responseJson['Profile']['Educations'],
'profile[PhoneNumbers]': responseJson['Profile']['PhoneNumbers'],
'profile[IMAccounts]': responseJson['Profile']['IMAccounts'],
'profile[Addresses]': responseJson['Profile']['Addresses'],
'profile[MainAddress]': responseJson['Profile']['MainAddress'],
'profile[Created]': responseJson['Profile']['Created'],
'profile[CreatedDate]': responseJson['Profile']['CreatedDate'],
'profile[ModifiedDate]': responseJson['Profile']['ModifiedDate'],
'profile[ProfileModifiedDate]': responseJson['Profile']['ProfileModifiedDate'],
'profile[LocalCity]': responseJson['Profile']['LocalCity'],
'profile[ProfileCity]': responseJson['Profile']['ProfileCity'],
'profile[LocalCountry]': responseJson['Profile']['LocalCountry'],
'profile[ProfileCountry]': responseJson['Profile']['ProfileCountry'],
'profile[FirstLogin]': responseJson['Profile']['FirstLogin'],
'profile[IsProtected]': responseJson['Profile']['IsProtected'],
'profile[RelationshipStatus]': responseJson['Profile']['RelationshipStatus'],
'profile[Quota]': responseJson['Profile']['Quota'],
'profile[Quote]': responseJson['Profile']['Quote'],
'profile[InterestedIn]': responseJson['Profile']['InterestedIn'],
'profile[Interests]': responseJson['Profile']['Interests'],
'profile[Religion]': responseJson['Profile']['Religion'],
'profile[Political]': responseJson['Profile']['Political'],
'profile[Sports]': responseJson['Profile']['Sports'],
'profile[InspirationalPeople]': responseJson['Profile']['InspirationalPeople'],
'profile[HttpsImageUrl]': responseJson['Profile']['HttpsImageUrl'],
'profile[FollowersCount]': responseJson['Profile']['FollowersCount'],
'profile[FriendsCount]': responseJson['Profile']['FriendsCount'],
'profile[IsGeoEnabled]': responseJson['Profile']['IsGeoEnabled'],
'profile[TotalStatusesCount]': responseJson['Profile']['TotalStatusesCount'],
'profile[Associations]': responseJson['Profile']['Associations'],
'profile[NumRecommenders]': responseJson['Profile']['NumRecommenders'],
'profile[Honors]': responseJson['Profile']['Honors'],
'profile[Awards]': responseJson['Profile']['Awards'],
'profile[Skills]': responseJson['Profile']['Skills'],
'profile[CurrentStatus]': responseJson['Profile']['CurrentStatus'],
'profile[Certifications]': responseJson['Profile']['Certifications'],
'profile[Courses]': responseJson['Profile']['Courses'],
'profile[Volunteer]': responseJson['Profile']['Volunteer'],
'profile[RecommendationsReceived]': responseJson['Profile']['RecommendationsReceived'],
'profile[Languages]': responseJson['Profile']['Languages'],
'profile[Projects]': responseJson['Profile']['Projects'],
'profile[Games]': responseJson['Profile']['Games'],
'profile[Family]': responseJson['Profile']['Family'],
'profile[TeleVisionShow]': responseJson['Profile']['TeleVisionShow'],
'profile[MutualFriends]': responseJson['Profile']['MutualFriends'],
'profile[Movies]': responseJson['Profile']['Movies'],
'profile[Books]': responseJson['Profile']['Books'],
'profile[AgeRange]': responseJson['Profile']['AgeRange'],
'profile[PublicRepository]': responseJson['Profile']['PublicRepository'],
'profile[Hireable]': responseJson['Profile']['Hireable'],
'profile[RepositoryUrl]': responseJson['Profile']['RepositoryUrl'],
'profile[Age]': responseJson['Profile']['Age'],
'profile[Patents]': responseJson['Profile']['Patents'],
'profile[FavoriteThings]': responseJson['Profile']['FavoriteThings'],
'profile[ProfessionalHeadline]': responseJson['Profile']['ProfessionalHeadline'],
'profile[ProviderAccessCredential]': responseJson['Profile']['ProviderAccessCredential'],
'profile[RelatedProfileViews]': responseJson['Profile']['RelatedProfileViews'],
'profile[KloutScore]': responseJson['Profile']['KloutScore'],
'profile[LRUserID]': responseJson['Profile']['LRUserID'],
'profile[PlacesLived]': responseJson['Profile']['PlacesLived'],
'profile[Publications]': responseJson['Profile']['Publications'],
'profile[JobBookmarks]': responseJson['Profile']['JobBookmarks'],
'profile[Suggestions]': responseJson['Profile']['Suggestions'],
'profile[Badges]': responseJson['Profile']['Badges'],
'profile[MemberUrlResources]': responseJson['Profile']['MemberUrlResources'],
'profile[TotalPrivateRepository]': responseJson['Profile']['TotalPrivateRepository'],
'profile[Currency]': responseJson['Profile']['Currency'],
'profile[StarredUrl]': responseJson['Profile']['StarredUrl'],
'profile[GistsUrl]': responseJson['Profile']['GistsUrl'],
'profile[PublicGists]': responseJson['Profile']['PublicGists'],
'profile[PrivateGists]': responseJson['Profile']['PrivateGists'],
'profile[Subscription]': responseJson['Profile']['Subscription'],
'profile[Company]': responseJson['Profile']['Company'],
'profile[GravatarImageUrl]': responseJson['Profile']['GravatarImageUrl'],
'profile[ProfileImageUrls]': responseJson['Profile']['ProfileImageUrls'],
'profile[WebProfiles]': responseJson['Profile']['WebProfiles'],
'profile[PinsCount]': responseJson['Profile']['PinsCount'],
'profile[BoardsCount]': responseJson['Profile']['BoardsCount'],
'profile[LikesCount]': responseJson['Profile']['LikesCount'],
'profile[SignupDate]': responseJson['Profile']['SignupDate'],
'profile[LastLoginDate]': responseJson['Profile']['LastLoginDate'],
'profile[PreviousUids]': responseJson['Profile']['PreviousUids']
}
print('Number of logins: ', responseJson['Profile']['NoOfLogins'])
r = s.post(authenticatorUrl, data=payload)
print('authenticator post: ', r)
r = s.get(secureUrl)
print('succesfully logged in')
ssoMhlPayload = {
'account': responseJson['Profile']['CustomFields']['AccountID'],
'request_type': 'BILLING'
}
r = s.post(ssoMhlUrl, data=ssoMhlPayload)
print('SSO: ', r)
responseSsoMhlJson = r.json()
ssoTargetPayload = {
'authssotoken': responseSsoMhlJson['token']
}
r = s.post(ssoTargetUrl, data=ssoTargetPayload)
print('SSO Target: ', r)
r = s.get(downloadDataUrl)
print('Download My Data: ', r)
# TODO: Need to figure out how to read data