Skip to content

Instantly share code, notes, and snippets.

View J7mbo's full-sized avatar
🔨
Working with distributed systems

James Mallison J7mbo

🔨
Working with distributed systems
View GitHub Profile
@J7mbo
J7mbo / golang-constructors-blog-6.go
Created February 22, 2019 12:07
golang-constructors-blog-6
package Package1
/* The interface is exported, so publically available */
type MyStructsInterface interface {
SomeInterfaceMethod() int
}
/* Private struct */
type myStruct struct {
num int
@J7mbo
J7mbo / golang-constructors-blog-5.go
Created February 22, 2019 12:07
golang-constructors-blog-5
package Package2
type SomeService struct { }
func (*SomeService) DoSomething(obj myStruct) { /* WONT WORK!!*/ }
@J7mbo
J7mbo / golang-constructors-blog-4.go
Created February 22, 2019 12:06
golang-constructors-blog-4
/* Yep, now it's private because of the lower-cased 'm' */
type myStruct struct {
num int
}
func NewMyStruct() *myStruct {
return &myStruct{num: 42}
}
@J7mbo
J7mbo / golang-constructors-blog-3.go
Created February 22, 2019 12:06
golang-constructors-blog-3
type MyStruct struct {
dep *ADependency
}
func (m *MyStruct) DoSomethingWithDep() {
m.dep.DoSomething()
}
type ADependency struct {
num int
@J7mbo
J7mbo / golang-constructors-blog-2.go
Created February 22, 2019 12:05
golang-constructors-blog-2
myStruct := MyStruct{}
@J7mbo
J7mbo / golang-constructors-blog-1.go
Created February 22, 2019 12:04
golang-constructors-blog-1
type MyStruct struct { }
func NewMyStruct() MyStruct {
return MyStruct{dep: ADependency{}}
}
type ADependency struct { }
myStruct := NewMyStruct() // We get back a valid struct
@J7mbo
J7mbo / drive.sh
Created February 11, 2019 12:52
Download Google Drive file with wget / curl / bash
#!/bin/bash
fileid="$1"
filename="$2"
curl -c ./cookie -s -L "https://drive.google.com/uc?export=download&id=${fileid}" > /dev/null
curl -Lb ./cookie "https://drive.google.com/uc?export=download&confirm=`awk '/download/ {print $NF}' ./cookie`&id=${fileid}" -o "${filename}"
# USAGE: sh gdrive.sh "<FILE ID (FROM URL) GOES HERE>" "<FILE NAME (FROM TOP LEFT OF GDRIVE PAGE) GOES HERE>"
# Example: sh gdrive.sh "1zJ_dLqrJwU5QYHSJDKFLnDC3LSJD" "The Name Of My File.zip"
struct JsonDownloader
{
public func downloadContentsOfUrl(_ url: URL) -> Promise<String> {
return Promise { resolve, reject in
let jsonData = try! Data(contentsOf: url)
let jsonData = try! JSONSerialization.jsonObject(with: response, options: []) as! [String: Any]
return resolve(url: jsonData['image_url'])
}
DispatchQueue.global(qos: .background).async {
let jsonDownloader: JsonDownloader = JsonDownloader()
let imageDownloader: ImageDownloader = ImageDownloader()
let json: [String: AnyObject] = jsonDownloader.downloadContentsOfUrl("ourUrl.com")
let image: UIImage = imageDownloader.downloadImage(URL(string: json["image_url"]))
DispatchQueue.main.async {
// -- SNIP -- Add image to UIImageView and add a subview in UIView
class ViewController: UIViewController
{
override func viewDidLoad()
{
super.viewDidLoad()
async {
let jsonDownloader: JsonDownloader = JsonDownloader()
let imageDownloader: ImageDownloader = ImageDownloader()