Skip to content

Instantly share code, notes, and snippets.

View ajtatum's full-sized avatar

AJ Tatum ajtatum

View GitHub Profile
@ajtatum
ajtatum / ApplicationUser.cs
Created November 17, 2020 03:27
AspNetUSer with ApiAuthKey
public class ApplicationUser : IdentityUser
{
[Column(TypeName = "varchar(50)")]
[StringLength(50)]
public string ApiAuthKey { get; set; }
}
@ajtatum
ajtatum / Register.cs
Created November 17, 2020 03:33
Creating a new user with API Auth Key
var apiAuthKey = Guid.NewGuid().ToString("N");
var user = new ApplicationUser
{
ApiAuthKey = apiAuthKey,
};
@ajtatum
ajtatum / AuthKeyFilter.cs
Created November 17, 2020 03:41
AuthKeyFilter logic
public class AuthKeyFilter : ActionFilterAttribute
{
private readonly IdentityDbContext _context;
private readonly ILogger<AuthKeyFilter> _logger;
public AuthKeyFilter(IdentityDbContext context, ILogger<AuthKeyFilter> logger)
{
_context = context;
_logger = logger;
}
@ajtatum
ajtatum / bitlyservice.cs
Created December 7, 2020 15:42
Create Bitly Custom Backhalf (Public)
public async Task<string> GetShortUrl(string longUrl, string customBitLink)
{
var shortContent = $"{{\"long_url\":\"{longUrl}\",\"group_guid\":\"groupGuid\",\"domain\":\"domain.com\"}}";
var shortenUrlRequest = new HttpRequestMessage(HttpMethod.Post, ShortenUrl)
{
Content = new StringContent(shortContent, Encoding.UTF8, "application/json")
};
shortenUrlRequest.Headers.Authorization = new AuthenticationHeaderValue("Bearer", _appSettings.BitlyApiToken);
@ajtatum
ajtatum / CdnService.cs
Created January 15, 2021 23:31
Azure Storage To Photo CDN
public string ConvertToPhotoCdn(string imageUrl)
{
var cdnUrl = _appSettings.CDN.Images.CdnUrl;
return _appSettings.CDN.Images.UseCdn
? imageUrl.Replace(_appSettings.Azure.Storage.StorageBlobUrl, cdnUrl)
: imageUrl;
}
@ajtatum
ajtatum / View.cshtml
Created January 15, 2021 23:35
Using Photo CDN Service
<img
src="@CdnHelper.ConvertToPhotoCdn($"{primaryMediaImage.ImageUrl}?tr=w-252")"
srcset="@CdnHelper.ConvertToPhotoCdn($"{primaryMediaImage.ImageUrl}?tr=w-252"),
@CdnHelper.ConvertToPhotoCdn($"{primaryMediaImage.ImageUrl}?tr=w-378") 1.5x,
@CdnHelper.ConvertToPhotoCdn($"{primaryMediaImage.ImageUrl}?tr=w-504") 2x,
@CdnHelper.ConvertToPhotoCdn($"{primaryMediaImage.ImageUrl}?tr=w-756") 3x,"
alt="@Model.Media.Title" title="@Model.Media.Title" class="coverphoto rounded hoverable" itemprop="image" sizes="252" />
@ajtatum
ajtatum / Startup.cs
Created January 15, 2021 23:42
ImageKit Client Hints
var imageCdnUrl = Configuration["CDN:Images:CdnUrl"];
app.Use(async (context, next) =>
{
context.Response.Headers.Add("Accept-CH", "viewport-width, width, dpr");
context.Response.Headers.Add("Feature-Policy", $"ch-viewport-width {imageCdnUrl};ch-width {imageCdnUrl};ch-dpr {imageCdnUrl};ch-device-memory {imageCdnUrl};ch-rtt {imageCdnUrl};ch-ect {imageCdnUrl};ch-downlink {imageCdnUrl}");
context.Response.Headers.Add("Permissions-Policy", $"ch-viewport-width {imageCdnUrl};ch-width {imageCdnUrl};ch-dpr {imageCdnUrl};ch-device-memory {imageCdnUrl};ch-rtt {imageCdnUrl};ch-ect {imageCdnUrl};ch-downlink {imageCdnUrl}");
await next();
});
@ajtatum
ajtatum / RedisService.cs
Created January 19, 2021 20:51
Get Redis Cache Keys
public async Task<List<string>> GetCacheKeys()
{
var cacheKeys = new List<string>();
var endpoints = Connection.GetEndPoints();
var keys = Connection.GetServer(endpoints.First()).KeysAsync();
var enumerator = keys.GetAsyncEnumerator();
while (await enumerator.MoveNextAsync())
{
var key = enumerator.Current;
@ajtatum
ajtatum / docReady.js
Created August 23, 2021 02:04
Pure JavaScript docReady Function
// add event cross browser
function addEvent(elem, event, fn) {
if (elem.addEventListener) {
elem.addEventListener(event, fn, false);
} else {
elem.attachEvent("on" + event, function () {
// set the this pointer same as addEventListener when fn is called
return fn.call(elem, window.event);
});
}
@ajtatum
ajtatum / country-helper.js
Created August 30, 2021 02:27
JavaScript Country Name To Code and Code To Country Name Functions
var countryNameToCode = {
'Afghanistan': 'AF',
'Aland Islands': 'AX',
'Albania': 'AL',
'Algeria': 'DZ',
'American Samoa': 'AS',
'Andorra': 'AD',
'Angola': 'AO',
'Anguilla': 'AI',
'Antarctica': 'AQ',