Starting from the bundle hash, call the findTransactions API to get the transaction hashes of all transactions in your bundle.
Pass the hashes to getTrytes to retrieve the transactions as tryte-encoded strings. You may want to sort the transactions in the original order (i. e. so that they are chained by trunk transaction hash) to avoid surprises when reattaching them later.
How to store them depends on how persistent you need them and what storage media you have available (RAM, disk, local storage). But since they are all strings, there should not be any problem in this step. Now wait for the snapshot.
Call the sendTrytes utility function. As first parameter, pass your array of tryte strings stored before.