Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Develop #2

Merged
merged 2 commits into from
Feb 19, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"[python]": {
"editor.defaultFormatter": "ms-python.autopep8"
},
"python.formatting.provider": "none"
}
31 changes: 22 additions & 9 deletions coupons/create-campaign.py
Original file line number Diff line number Diff line change
@@ -1,24 +1,37 @@
import grpc
import io.single_use_coupons.campaign_pb2 as campaign_pb2
import io.single_use_coupons.a_rpc_pb2_grpc as a_rpc_pb2_grpc
import passkit_io.single_use_coupons.campaign_pb2 as campaign_pb2
import passkit_io.single_use_coupons.a_rpc_pb2_grpc as a_rpc_pb2_grpc


def create_campaign():
# Create channel credentials
# Read the CA, certificate, and private key files
with open('../certs/ca-chain.pem', 'rb') as ca_file:
root_certificates = ca_file.read()

with open('../certs/certificate.pem', 'rb') as cert_file:
certificate_chain = cert_file.read()

with open('../certs/key.pem', 'rb') as key_file:
private_key = key_file.read()

# Create SSL credentials for gRPC
credentials = grpc.ssl_channel_credentials(
root_certificates='certs/certificate.pem', private_key_file='certs/key.pem', certificate_chain_file='certs/ca-chain.pem')
root_certificates=root_certificates,
private_key=private_key,
certificate_chain=certificate_chain
)

# Create a secure channel
channel = grpc.secure_channel(
'grpc.pub1.passkit.io' + ':' + '443', credentials)
# Create a secure gRPC channel
channel = grpc.secure_channel('grpc.pub1.passkit.io:443', credentials)

# Create a stub
couponsStub = a_rpc_pb2_grpc.SingleUseCouponsStub(channel)

# Create campaign
campaign = campaign_pb2.CouponCampaign()
campaign.Name = "Quickstart Campaign"
campaign.Status = [1, 4]
campaign.name = "Quickstart Campaign"
campaign.status.append("PROJECT_ACTIVE_FOR_OBJECT_CREATION")
campaign.status.append("PROJECT_DRAFT")
response = couponsStub.createCouponCampaign(campaign)
print(response)

Expand Down
43 changes: 28 additions & 15 deletions coupons/create-coupon.py
Original file line number Diff line number Diff line change
@@ -1,32 +1,45 @@
import grpc
import io.single_use_coupons.coupon_pb2 as coupon_pb2
import io.single_use_coupons.a_rpc_pb2_grpc as a_rpc_pb2_grpc
import io.common.personal_pb2 as personal_pb2
import passkit_io.single_use_coupons.coupon_pb2 as coupon_pb2
import passkit_io.single_use_coupons.a_rpc_pb2_grpc as a_rpc_pb2_grpc
from passkit_io.common.personal_pb2 import Person


def create_coupon():
# Create channel credentials
# Read the CA, certificate, and private key files
with open('../certs/ca-chain.pem', 'rb') as ca_file:
root_certificates = ca_file.read()

with open('../certs/certificate.pem', 'rb') as cert_file:
certificate_chain = cert_file.read()

with open('../certs/key.pem', 'rb') as key_file:
private_key = key_file.read()

# Create SSL credentials for gRPC
credentials = grpc.ssl_channel_credentials(
root_certificates='certs/certificate.pem', private_key_file='certs/key.pem', certificate_chain_file='certs/ca-chain.pem')
root_certificates=root_certificates,
private_key=private_key,
certificate_chain=certificate_chain
)

# Create a secure channel
channel = grpc.secure_channel(
'grpc.pub1.passkit.io' + ':' + '443', credentials)
# Create a secure gRPC channel
channel = grpc.secure_channel('grpc.pub1.passkit.io:443', credentials)

# Create a stub
couponsStub = a_rpc_pb2_grpc.SingleUseCouponsStub(channel)

# Create coupon
coupon = coupon_pb2.Coupon()
coupon.OfferId = "" # Get offerId from createOffer call or dashboard
coupon.CampaignId = "" # Get campaignId from createCampaign call or dashboard
coupon.Sku = ""
coupon.offerId = "" # Get offerId from createOffer call or dashboard
coupon.campaignId = "" # Get campaignId from createCampaign call or dashboard

person = personal_pb2.Person()
person.DisplayName = "Loyal Larry"
person.EmailAddress = ""
person = Person()
person.displayName = "Percy PassKit"
person.surname = "PassKit"
person.forename = "Percy"
person.emailAddress = ""

coupon.Person = person
coupon.person.CopyFrom(person)
response = couponsStub.createCoupon(coupon)
print(response)

Expand Down
108 changes: 63 additions & 45 deletions coupons/create-offer.py
Original file line number Diff line number Diff line change
@@ -1,20 +1,32 @@
import grpc
import io.single_use_coupons.offer_pb2 as offer_pb2
import io.single_use_coupons.a_rpc_pb2_grpc as a_rpc_pb2_grpc
import io.core.a_rpc_templates_pb2_grpc as a_rpc_templates_pb2_grpc
import io.common.template_pb2 as template_pb2
import passkit_io.single_use_coupons.offer_pb2 as offer_pb2
import passkit_io.single_use_coupons.a_rpc_pb2_grpc as a_rpc_pb2_grpc
import passkit_io.core.a_rpc_templates_pb2_grpc as a_rpc_templates_pb2_grpc
import passkit_io.common.template_pb2 as template_pb2
import google.protobuf.timestamp_pb2 as timestamp_pb2
import datetime


def create_offer():
# Create channel credentials
# Read the CA, certificate, and private key files
with open('../certs/ca-chain.pem', 'rb') as ca_file:
root_certificates = ca_file.read()

with open('../certs/certificate.pem', 'rb') as cert_file:
certificate_chain = cert_file.read()

with open('../certs/key.pem', 'rb') as key_file:
private_key = key_file.read()

# Create SSL credentials for gRPC
credentials = grpc.ssl_channel_credentials(
root_certificates='certs/certificate.pem', private_key_file='certs/key.pem', certificate_chain_file='certs/ca-chain.pem')
root_certificates=root_certificates,
private_key=private_key,
certificate_chain=certificate_chain
)

# Create a secure channel
channel = grpc.secure_channel(
'grpc.pub1.passkit.io' + ':' + '443', credentials)
# Create a secure gRPC channel
channel = grpc.secure_channel('grpc.pub1.passkit.io:443', credentials)

# Create a stub
couponsStub = a_rpc_pb2_grpc.SingleUseCouponsStub(channel)
Expand All @@ -24,50 +36,56 @@ def create_offer():

# Create template
templateRequest = template_pb2.DefaultTemplateRequest()
templateRequest.Protocol = "SINGLE_USE_COUPON"
templateRequest.Revision = 1
templateRequest.protocol = "SINGLE_USE_COUPON"
templateRequest.revision = 1

template = templatesStub.getDefaultTemplate(templateRequest)

template.Name = "Quickstart Base Offer"
template.Description = "Quickstart Base Offer Pass"
template.Timezone = "Europe/London"
template.name = "Quickstart Base Offer"
template.description = "Quickstart Base Offer Pass"
template.timezone = "Europe/London"

templateId = templatesStub.createTemplate(template)
try:
response = templatesStub.createTemplate(template)
print("Template " + response.id + " successfully created")
except grpc.RpcError as e:
print("Failed to create template", e.details())

# Create offer
offer = offer_pb2.CouponOffer()
offer.Id = "Base Offer"
offer.OfferTitle = "Base Offer Title"
offer.OfferShortTitle = "Base Offer"
offer.OfferDetails = "Base Offer Details"
offer.OfferFinePrint = "Base Offer fine print"
offer.BeforeRedeemPassTemplateId(templateId.Id)

issueStartDate = datetime.datetime.strptime(
"10/9/2023", "%d/%m/%Y").timestamp()
issueEndDate = datetime.datetime.strptime(
"10/11/2023", "%d/%m/%Y").timestamp()
redemptionStartDate = datetime.datetime.strptime(
"10/9/2023", "%d/%m/%Y").timestamp()
redemptionEndDate = datetime.datetime.strptime(
"10/11/2023", "%d/%m/%Y").timestamp()

offer.id = "Base Offer"
offer.offerTitle = "Base Offer Title"
offer.offerShortTitle = "Base Offer"
offer.offerDetails = "Base Offer Details"
offer.offerFinePrint = "Base Offer fine print"
offer.beforeRedeemPassTemplateId = response.id

# Get current UTC time as timezone-aware datetime
issueStartDate = datetime.datetime.now(datetime.timezone.utc)
issueEndDate = datetime.datetime.now(datetime.timezone.utc)
redemptionStartDate = datetime.datetime.now(datetime.timezone.utc)
redemptionEndDate = datetime.datetime.now(datetime.timezone.utc)

# Convert the datetime objects to Timestamp
redemptionSettings = offer_pb2.RedemptionSettings()
redemptionSettings.RedemptionStartDate = timestamp_pb2.Timestamp(
redemptionStartDate)
redemptionSettings.RedemptionEndDate = timestamp_pb2.Timestamp(
redemptionEndDate)

couponExpirySettings = offer_pb2.CouponExpirySettings
couponExpirySettings.CouponExpiryType = "AUTO_EXPIRE_REDEMPTION_END_DATE"

offer.IssueStartDate = timestamp_pb2.Timestamp(issueStartDate)
offer.IssueEndDate = timestamp_pb2.Timestamp(issueEndDate)
offer.RedemptionSettings = redemptionSettings
offer.CouponExpirySettings = couponExpirySettings
offer.CampaignId = "" # Get from campaignId from createCampaign call or dashboard
offer.IanaTimezone = "Europe/London"
redemptionSettings.redemptionStartDate = redemptionStartDate

redemptionSettings.redemptionEndDate = redemptionEndDate

couponExpirySettings = offer_pb2.CouponExpirySettings()
couponExpirySettings.couponExpiryType = "AUTO_EXPIRE_REDEMPTION_END_DATE"

offer.issueStartDate = issueStartDate

offer.issueEndDate = issueEndDate

# Assign settings
offer.redemptionSettings.CopyFrom(redemptionSettings)
offer.couponExpirySettings.CopyFrom(couponExpirySettings)
offer.campaignId = "" # Get from campaignId from createCampaign call or dashboard
offer.ianaTimezone = "Europe/London"

# Create coupon offer
response = couponsStub.createCouponOffer(offer)
print(response)

Expand Down
43 changes: 32 additions & 11 deletions coupons/list-coupons.py
Original file line number Diff line number Diff line change
@@ -1,26 +1,47 @@
import grpc
import io.single_use_coupons.coupon_pb2 as coupon_pb2
import io.single_use_coupons.a_rpc_pb2_grpc as a_rpc_pb2_grpc
import passkit_io.single_use_coupons.coupon_pb2 as coupon_pb2
import passkit_io.single_use_coupons.a_rpc_pb2_grpc as a_rpc_pb2_grpc


def list_coupons():
# Create channel credentials
# Read the CA, certificate, and private key files
with open('../certs/ca-chain.pem', 'rb') as ca_file:
root_certificates = ca_file.read()

with open('../certs/certificate.pem', 'rb') as cert_file:
certificate_chain = cert_file.read()

with open('../certs/key.pem', 'rb') as key_file:
private_key = key_file.read()

# Create SSL credentials for gRPC
credentials = grpc.ssl_channel_credentials(
root_certificates='certs/certificate.pem', private_key_file='certs/key.pem', certificate_chain_file='certs/ca-chain.pem')
root_certificates=root_certificates,
private_key=private_key,
certificate_chain=certificate_chain
)

# Create a secure channel
channel = grpc.secure_channel(
'grpc.pub1.passkit.io' + ':' + '443', credentials)
# Create a secure gRPC channel
channel = grpc.secure_channel('grpc.pub1.passkit.io:443', credentials)

# Create a stub
couponsStub = a_rpc_pb2_grpc.SingleUseCouponsStub(channel)

# List coupons by campaignId
listCouponRequest = coupon_pb2.ListRequest()
listCouponRequest.CouponCampaignId = "" # Campaign Id of coupons to list

response = couponsStub.listCouponsByCouponCampaign(listCouponRequest)
print(response)
listCouponRequest.couponCampaignId = "0S5FnxW9i2e0fBa8chRhBw" # Campaign Id of coupons to list

try:
couponsList = couponsStub.listCouponsByCouponCampaign(listCouponRequest, timeout=30)
for data in couponsList:
# This will print each member data received from the stream
print("Received:", data)

print("Stream ended successfully.")
except grpc.RpcError as e:
print(f"gRPC Error: {e.code()} - {e.details()}")
except Exception as e:
print(f"Error: {e}")


list_coupons()
31 changes: 21 additions & 10 deletions coupons/redeem-coupon.py
Original file line number Diff line number Diff line change
@@ -1,25 +1,36 @@
import grpc
import io.single_use_coupons.coupon_pb2 as coupon_pb2
import io.single_use_coupons.a_rpc_pb2_grpc as a_rpc_pb2_grpc
import passkit_io.single_use_coupons.coupon_pb2 as coupon_pb2
import passkit_io.single_use_coupons.a_rpc_pb2_grpc as a_rpc_pb2_grpc


def redeem_coupon():
# Create channel credentials
# Read the CA, certificate, and private key files
with open('../certs/ca-chain.pem', 'rb') as ca_file:
root_certificates = ca_file.read()

with open('../certs/certificate.pem', 'rb') as cert_file:
certificate_chain = cert_file.read()

with open('../certs/key.pem', 'rb') as key_file:
private_key = key_file.read()

# Create SSL credentials for gRPC
credentials = grpc.ssl_channel_credentials(
root_certificates='certs/certificate.pem', private_key_file='certs/key.pem', certificate_chain_file='certs/ca-chain.pem')
root_certificates=root_certificates,
private_key=private_key,
certificate_chain=certificate_chain
)

# Create a secure channel
channel = grpc.secure_channel(
'grpc.pub1.passkit.io' + ':' + '443', credentials)
# Create a secure gRPC channel
channel = grpc.secure_channel('grpc.pub1.passkit.io:443', credentials)

# Create a stub
couponsStub = a_rpc_pb2_grpc.SingleUseCouponsStub(channel)

# Redeem coupon
coupon = coupon_pb2.Coupon()
coupon.Id = "" # Id of coupon to void
coupon.CampaignId = "" # Get campaignId from createCampaign call or dashboard
coupon.Status = 1
coupon.id = "" # Id of coupon to void
coupon.campaignId = "" # Get campaignId from createCampaign call or dashboard

response = couponsStub.redeemCoupon(coupon)
print(response)
Expand Down
Loading