Skip to content

Instantly share code, notes, and snippets.

View lukecurtis93's full-sized avatar

Luke Curtis lukecurtis93

View GitHub Profile
@lukecurtis93
lukecurtis93 / Post.php
Created April 1, 2019 09:35
Simple Geosearch in Laravel
/**
* Scope to query the database to return the listings between
* a latitude and longitude, with distance.
*
* @param \Illuminate\Database\Eloquent\Builder $query
* @param Double $lat
* @param Double $lng
* @param Integer $radius - KM
* @return \Illuminate\Database\Eloquent\Builder
*/
@lukecurtis93
lukecurtis93 / AndroidReceiptValidtionController.php
Created May 8, 2020 05:58
Validate a Android subscription with a token and subscription ID
<?php
namespace App\Http\Controllers\Api\v1;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Services\ValidateAndroidSubscription;
use ReceiptValidator\GooglePlay\Validator as PlayValidator;
use \Google_Client as GoogleClient;
use \Google_Service_AndroidPublisher as AndroidPublisher;
@lukecurtis93
lukecurtis93 / MyToken.sol
Last active March 21, 2022 14:34
An upgradeable token.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.2;
import "@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol";
import "@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20BurnableUpgradeable.sol";
import "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol";
import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol";
import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
contract MyToken is Initializable, ERC20Upgradeable, ERC20BurnableUpgradeable, AccessControlUpgradeable, OwnableUpgradeable {
@lukecurtis93
lukecurtis93 / deploy2.js
Created March 16, 2022 22:26
Upgrading a contract
const { ethers, upgrades } = require('hardhat');
async function main () {
const MyToken2 = await ethers.getContractFactory('MyToken2');
await upgrades.upgradeProxy('THECONTRACTADDRESS', MyToken2);
console.log('Contract upgraded');
}
main();
@lukecurtis93
lukecurtis93 / deploy.ts
Created March 16, 2022 22:23
Deploying an upgradable contract
const { ethers, upgrades } = require('hardhat');
async function main() {
// Hardhat always runs the compile task when running scripts with its command
// line interface.
//
// If this script is run directly using `node` you may want to call compile
// manually to make sure everything is compiled
// await hre.run('compile');
@lukecurtis93
lukecurtis93 / TestCase.php
Created March 8, 2020 23:03
Mock Stripe API with Mockery & Laravel
<?php
namespace Tests;
use Illuminate\Foundation\Testing\TestCase as BaseTestCase;
use Stripe\Customer;
use Stripe\Stripe;
/**
* Class TestCase.
@lukecurtis93
lukecurtis93 / UserSubscriptionRepositoryTest.php
Last active September 9, 2021 11:18
Mock Stripe in a Test
<?php
namespace Tests\Unit;
use Illuminate\Foundation\Testing\TestCase;
use Illuminate\Foundation\Testing\RefreshDatabase;
class UserSubscriptionRepositoryTest extends TestCase
{
use CreatesApplication, RefreshDatabase;
@lukecurtis93
lukecurtis93 / docker-compose.yml
Created July 2, 2021 10:50
Laravel Valet & Kafka/Kakfa UI Docker
---
# Required packages for PHP & C libraries if you want your Laravel app to talk to this from valet
#https://github.com/edenhill/librdkafka
#https://github.com/arnaud-lb/php-rdkafka
version: '2'
services:
zookeeper-1:
image: confluentinc/cp-zookeeper:latest
environment:
ZOOKEEPER_CLIENT_PORT: 2181
@lukecurtis93
lukecurtis93 / AddressSort.php
Created February 25, 2019 12:38
Laravel Full Text Search with JSON, using spatie schemaless attributes and query builder
<?php
namespace App\Filters\Sorts;
use Spatie\QueryBuilder\Sorts\Sort;
use Illuminate\Database\Eloquent\Builder;
class AddressSort implements Sort
{
public function __invoke(Builder $query, string $property) : Builder
@lukecurtis93
lukecurtis93 / SendXeroInvoice.php
Created July 11, 2019 07:16
Send an invoice to Xero in Laravel Job
<?php
namespace App\Jobs\Xero;
use File;
use DateTime;
use App\Models\Invoice;
use Illuminate\Bus\Queueable;
use Spatie\Browsershot\Browsershot;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;