Skip to content

Instantly share code, notes, and snippets.

View ivanbruel's full-sized avatar

Ivan Bruel ivanbruel

View GitHub Profile
@ivanbruel
ivanbruel / NetworkImage.swift
Last active August 16, 2021 06:28
Basic NetworkImage support for SwiftUI via Kingfisher
import SwiftUI
import Kingfisher
import UIKit
public struct NetworkImage: SwiftUI.View {
// swiftlint:disable:next redundant_optional_initialization
@State private var image: UIImage? = nil
public let imageURL: URL?
@ivanbruel
ivanbruel / main.swift
Last active November 5, 2017 07:04
Buy iPhone
//
// main.swift
// BuyPhone
//
// Created by Ivan Bruel on 04/11/2017.
// Copyright © 2017 Ivan Bruel. All rights reserved.
//
import Foundation
//
// Swizzle.swift
// RouterTester
//
// Created by Ivan Bruel on 17/05/2017.
// Copyright © 2017 Unbabel. All rights reserved.
//
import Foundation
import ObjectiveC
@ivanbruel
ivanbruel / SnakeCase.swift
Last active March 19, 2023 16:42
Camel case to snake case in Swift
extension String {
func snakeCased() -> String? {
let pattern = "([a-z0-9])([A-Z])"
let regex = try? NSRegularExpression(pattern: pattern, options: [])
let range = NSRange(location: 0, length: self.characters.count)
return regex?.stringByReplacingMatches(in: self, options: [], range: range, withTemplate: "$1_$2").lowercased()
}
}
func login() -> Observable<Void> {
return Observable.combineLatest(twitterSession(), Observable.just(Globals.UUID)) { ($0, $1) }
.flatMap { (twitterSession, uuid) in
Network.request(PhoenixAPI.TwitterLogin(authToken: twitterSession.authToken,
authTokenSecret: twitterSession.authTokenSecret, uid: uuid))
}
.filterSuccessfulStatusCodes()
.debug()
.mapObject(Session)
.doOnNext { [weak self] (session: Session) in
func login() -> Observable<Void> {
return twitterSession()
.flatMap {
self.network.request(self.twitterLogin(authToken: $0.authToken,
authTokenSecret: $0.authTokenSecret,
uid: self.uuid))
}
.filterSuccessfulStatusCodes()
.debug()
.mapObject(Session)
func login() -> Observable<Void> {
return Observable.combineLatest(twitterSession(), Observable.just(Globals.UUID)) { ($0, $1) }
.flatMap { (twitterSession, uuid) in
Network.request(PhoenixAPI.TwitterLogin(authToken: twitterSession.authToken,
authTokenSecret: twitterSession.authTokenSecret, uid: uuid))
}
.filterSuccessfulStatusCodes()
.debug()
.mapObject(Session)
.doOnNext { [weak self] (session: Session) in
@ivanbruel
ivanbruel / Podfile
Created September 12, 2016 10:49
Build Time Analizer for Cocoapods
# Adding Build Time Analyzer compatibility
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
other_swift_flags = config.build_settings['OTHER_SWIFT_FLAGS'] || ['$(inherited)']
other_swift_flags << '-Xfrontend'
other_swift_flags << '-debug-time-function-bodies'
config.build_settings['OTHER_SWIFT_FLAGS'] = other_swift_flags
end
end
@ivanbruel
ivanbruel / UIImageViewTopAligned.swift
Created September 5, 2016 12:41
UIImageView with Top alignment in case the image doesn't fit in height
//
// UIImageViewTopAligned.swift
// Reddit
//
// Created by Ivan Bruel on 26/08/16.
// Copyright © 2016 Faber Ventures. All rights reserved.
//
import UIKit
import Kingfisher
@ivanbruel
ivanbruel / Podfile
Created August 30, 2016 14:50
Adding Build Time Analyzer flags for Cocoapod dependencies
# Adding Build Time Analyzer compatibility
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
other_swift_flags = config.build_settings['OTHER_SWIFT_FLAGS'] || ['$(inherited)']
other_swift_flags << '-Xfrontend'
other_swift_flags << '-debug-time-function-bodies'
config.build_settings['OTHER_SWIFT_FLAGS'] = other_swift_flags
end
end