All Projects → xmartlabs → Xniffer

xmartlabs / Xniffer

Licence: mit
A swift network profiler built on top of URLSession.

Programming Languages

swift
15916 projects
swift4
162 projects

Projects that are alternatives of or similar to Xniffer

Ok2curl
Convert OkHttp requests into curl logs.
Stars: ✭ 295 (-39.55%)
Mutual labels:  curl, interceptor
Curlcpp
An object oriented C++ wrapper for CURL (libcurl)
Stars: ✭ 462 (-5.33%)
Mutual labels:  networking, curl
Networkservicemesh
The Hybrid/Multi-cloud IP Service Mesh
Stars: ✭ 456 (-6.56%)
Mutual labels:  networking
Swift Request
Declarative HTTP networking, designed for SwiftUI
Stars: ✭ 481 (-1.43%)
Mutual labels:  networking
Cnp3
Computer Networking : Principles, Protocols and Practice (first and second edition, third edition is being written on https://github.com/cnp3/ebook)
Stars: ✭ 471 (-3.48%)
Mutual labels:  networking
Wesher
wireguard overlay mesh network manager
Stars: ✭ 461 (-5.53%)
Mutual labels:  networking
Wireguard Manager
Self-hosted Wireguard Installer / Manager for CentOS, Debian, Ubuntu, Arch, Fedora, Redhat, Raspbian
Stars: ✭ 478 (-2.05%)
Mutual labels:  networking
Guzzle
Guzzle, an extensible PHP HTTP client
Stars: ✭ 21,384 (+4281.97%)
Mutual labels:  curl
School Of Sre
At LinkedIn, we are using this curriculum for onboarding our entry-level talents into the SRE role.
Stars: ✭ 5,141 (+953.48%)
Mutual labels:  networking
Ucx
Unified Communication X (mailing list - https://elist.ornl.gov/mailman/listinfo/ucx-group)
Stars: ✭ 471 (-3.48%)
Mutual labels:  networking
Uni Simple Router
a simple, lightweight routing plugin that supports interception and lifecycle triggering
Stars: ✭ 481 (-1.43%)
Mutual labels:  interceptor
Goby
Attack surface mapping
Stars: ✭ 446 (-8.61%)
Mutual labels:  networking
Goappmonitor
Golang application performance data monitoring.
Stars: ✭ 478 (-2.05%)
Mutual labels:  profiler
Tenus
Linux networking in Go
Stars: ✭ 458 (-6.15%)
Mutual labels:  networking
Aura.sql
SQL database access through PDO.
Stars: ✭ 483 (-1.02%)
Mutual labels:  profiler
Monitorr
"Monitorr” is a self-hosted PHP web app that monitors the status of local and remote network services, websites, and applications.
Stars: ✭ 449 (-7.99%)
Mutual labels:  curl
Enet Csharp
Reliable UDP networking library
Stars: ✭ 464 (-4.92%)
Mutual labels:  networking
Peerdiscovery
Pure-Go library for cross-platform local peer discovery using UDP multicast 👩 🔁 👩
Stars: ✭ 476 (-2.46%)
Mutual labels:  networking
Libzt
ZeroTier Sockets - Put a network stack in your app
Stars: ✭ 486 (-0.41%)
Mutual labels:  networking
Flask Monitoringdashboard
Automatically monitor the evolving performance of Flask/Python web services.
Stars: ✭ 483 (-1.02%)
Mutual labels:  profiler

Platform iOS Swift 4 compatible Carthage compatible CocoaPods compatible License: MIT

By Xmartlabs SRL.

Introduction

Xniffer is a non-intrusive framework for intercepting outgoing requests and their responses between your app and any external service for debugging and performance monitoring purposes.

Inspired by Response detective.

Setup

In order to work, the Xniffer needs to be added as a middleware between your URLSession and the Internet. After the initial setup, a window will be displayed on top of the UI that will show all the current requests and their latency.

Basic usage

let configuration = URLSessionConfiguration.default
// The setup method adds the Xniffer's custom protocol as a middleware.
Xniffer.setup(with: configuration)
let session = URLSession(configuration: configuration)

Now we can start using this session instance for our requests!

Using Alamofire

If you are using Alamofire you can start using the Xniffer by initializing your Manager with the following:

let configuration = URLSessionConfiguration.default
configuration.httpAdditionalHeaders = SessionManager.defaultHTTPHeaders
Xniffer.setup(with: configuration)
let sessionManager = Alamofire.SessionManager(configuration: configuration)

UI Modes

The Xniffer currently supports three modes which could be used at the same time, .window, .console and .custom. The default value is only.window but this can be changed easily on the Xniffer.setup(configuration: URLSessionConfiguration, modes: [XnifferUI] = [.window]).

Each one of this uses a different implementation of the XnifferObserver.

  • .window : Displays a window on top of the status bar which can be expanded to display a list of the profiled requests. This is the default value.
  • .console : Prints the results on the Xcode console.
  • .custom : This one receives a closure of type () -> () so you can use your own implementation of the XnifferObserver.

Requirements

  • iOS 9.0+
  • Xcode 9.0+

Getting involved

  • If you want to contribute please feel free to submit pull requests.
  • If you have a feature request please open an issue.
  • If you found a bug or need help please check older issues, FAQ and threads on StackOverflow (Tag 'Xniffer') before submitting an issue..

Before contribute check the CONTRIBUTING file for more info.

If you use Xniffer in your app We would love to hear about it! Drop us a line on twitter.

Examples

Follow these 3 steps to run Example project: Clone Xniffer repository, open Xniffer workspace and run the Example project.

Installation

CocoaPods

CocoaPods is a dependency manager for Cocoa projects.

To install Xniffer, simply add the following line to your Podfile:

pod 'Xniffer', '~> 3.0'

Carthage

Carthage is a simple, decentralized dependency manager for Cocoa.

To install Xniffer, simply add the following line to your Cartfile:

github "xmartlabs/Xniffer" ~> 3.0

Author

Change Log

This can be found in the CHANGELOG.md file.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].