Skip to content

Instantly share code, notes, and snippets.

View bubudrc's full-sized avatar

Marcelo Perretta bubudrc

View GitHub Profile
@bubudrc
bubudrc / 1_AppleAppLookup.swift
Created December 10, 2021 14:54 — forked from vzsg/1_AppleAppLookup.swift
App Store Rating Lookup for Vapor 3
import Foundation
import Vapor
struct AppInfo: Codable {
let averageUserRating: Double
let userRatingCount: Int
}
enum AppleAppLookupError: Error {
case notFound
@bubudrc
bubudrc / HTTPStatusCode.swift
Created February 2, 2022 14:32 — forked from ollieatkinson/HTTPStatusCode.swift
HTTP status codes as a Swift enum.
/// This is a list of Hypertext Transfer Protocol (HTTP) response status codes.
/// It includes codes from IETF internet standards, other IETF RFCs, other specifications, and some additional commonly used codes.
/// The first digit of the status code specifies one of five classes of response; an HTTP client must recognise these five classes at a minimum.
enum HTTPStatusCode: Int, Error {
/// The response class representation of status codes, these get grouped by their first digit.
enum ResponseType {
/// - informational: This class of status code indicates a provisional response, consisting only of the Status-Line and optional headers, and is terminated by an empty line.
case informational
@bubudrc
bubudrc / UISearchBar+Ext.swift
Created March 5, 2022 20:02 — forked from maysamsh/UISearchBar+Ext.swift
A small extension for UISearchBar which shows an UIActivityIndicator while searching
//
// UISearchBar+Ext.swift
// frazeit
//
// Created by Maysam Shahsavari on 7/30/18.
// Updated on 9/26/19.
// Copyright © 2018 Maysam Shahsavari. All rights reserved.
// Updated: 10/02/2020.
import Foundation
@bubudrc
bubudrc / CustomTitleView.swift
Last active April 23, 2022 22:13
This gist shows how to create a custom titleView to use correctly in any UINavigationController (UINavigationItem)
// CustomitleView
//
// Created by Marcelo Perretta on 21/04/2022.
//
import UIKit
class CustomTitleView: UIView {
private let elementsDistance: CGFloat = 5.0
private let iconSize: CGFloat = 25.0
@bubudrc
bubudrc / SpeechManager.swift
Created April 23, 2022 21:56
This a singleton class that lets dev start, pause, stop an speech in a correct way. Because is a singleton, you can share the instance throw the app. Also, because we set an AVAudioSession, we are able to keep listening the audio when the app goes to the background. To work correctly, you must to set the Capability 'Audio, AirPlay, and Picture i…
//
// SpeechManager.swift
//
// Created by Marcelo Perretta on 22/04/2022.
//
import Foundation
import AVFoundation
// We need this because the delegate doesnt works correctly
@bubudrc
bubudrc / AuthImagePickerSettings.swift
Last active May 19, 2022 12:48
ImagePicker. Simple solution to use camera/photo library to pick an image
//
// AuthImagePickerSettings.swift
//
// Created by Marcelo Perretta on 18/05/2022.
//
import UIKit
import AVFoundation
import Photos
import PhotosUI
@bubudrc
bubudrc / Optional+Extensions.swift
Created May 20, 2022 19:16 — forked from scribblecat/Optional+Extensions.swift
Get Array from Optional NSSet. Especially useful for getting an Array of objects in a Core Data many relationship.
/*
* Returns Array from optional NSSet. Returns empty array if NSSet is nil.
* It's useful for when you want an Array of objects from a Core Data many relationship.
*
* Example usage with managed object `game` with 1-to-many relationship to `Goal` entity:
* let goalArray = game.goals.array(of: Goal.self)
*/
extension Optional where Wrapped == NSSet {
func array<T: Hashable>(of: T.Type) -> [T] {
@bubudrc
bubudrc / GoogleTranslate.swift
Created July 14, 2022 13:57
Use Google Translate without API on Swift
private func getTranslationLanguage(translate: String, from originLanguage: String = "auto", to destinationLanguage: String = "en", completion: @escaping (_ result: String?) -> Void) {
// 1- Create the query
if let translatationURL: String = "https://translate.googleapis.com/translate_a/single?client=gtx&sl=\(originLanguage)&tl=\(destinationLanguage)&dt=t&q= \(translate)&ie=UTF-8&oe=UTF-8".addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed),
let validURL = URL(string: translatationURL) {
var resultSearch: String = keyword
// 2- Make Request
URLSession.shared.dataTask(with: validURL) { [weak self] data, _, error in
guard error == nil, let data = data else {
@bubudrc
bubudrc / FourColumns.swift
Created January 1, 2023 22:47 — forked from douglashill/FourColumns.swift
A sample UIKit app that sets up a four column layout with new iOS 14 API on UISplitViewController.
import UIKit
class FourColumnsContainerViewController: UIViewController {
let outerSplitViewController = UISplitViewController(style: .tripleColumn)
let innerSplitViewController = UISplitViewController(style: .doubleColumn)
let primary = makeContentViewController("App")
let secondary = makeContentViewController("Files")
let mainContent = makeContentViewController("File Content")
let inspector = makeContentViewController("Inspector")