Repository files navigation

README.md for FCLI

FCLI

forthebadge

FCLI is a powerful, extensible, and thread-safe command-line interface (CLI) tool for interacting with APIs, particularly those following the Farcaster hub protocol. It allows users to query data, execute commands, and dynamically configure hub addresses with ease. Designed with modern C++ standards (C++23), it ensures high performance and stability.


Features

  • Dynamic Hub Configuration: Supports setting custom hub addresses via commands.
  • Thread-Safe Operations: Ensures reliable and safe execution in multi-threaded environments.
  • JSON Pretty-Printing: Parses and formats JSON responses for better readability.
  • Verbose Mode: Enables detailed debugging information for API requests.
  • Extensibility: Built with modular design principles, allowing easy addition of new features.

Getting Started

Prerequisites

  • C++23-compatible compiler (e.g., GCC 12+, Clang 16+)
  • libcurl for HTTP requests
  • jsoncpp for JSON parsing
  • CMake 3.25+ for building the project

Build Instructions

  1. Clone the Repository:

    git clone https://github.com/genyleap/FCLI.git
    cd FCLI
  2. Configure and Build:

    mkdir build &&cd build
    cmake ..
    cmake --build .
  3. Run the Executable:

    ./fcli help

Usage

Basic Commands

  1. Fetch Hub Information:

    ./fcli /v1/info dbstats=1

    Example Output:

    [INFO] Executing command with URL: https://hub.pinata.cloud/v1/info?dbstats=1
    [INFO] Response:
    {
    "version": "1.0.0",
    "dbStats": {
    "collections": 12,
    "documents": 456789
    }
    }
    
  2. Set Custom Hub Address:

    ./fcli set-hub https://hub.pinata.cloud

    Example Output:

    [INFO] Hub URL updated to: https://hub.pinata.cloud
    
  3. Help:

    ./fcli help

    Example Output:

    [INFO] Available Commands:
    /v1/info - Fetch hub information.
    /v1/reactions - Fetch reactions for a cast or user.
    set-hub <hub_url> - Set a custom hub address.
    Example:
    ./fcli /v1/info dbstats=1
    ./fcli set-hub https://hub.pinata.cloud
    ./fcli /v1/reactions query="hello world" cursor="a&b=c%20"
    
  4. Encoded Query Parameters (spaces/symbols):

    ./fcli /v1/reactions query="hello world" cursor="a&b=c%20"

    Example Request URL:

    [INFO] Executing command with URL: https://hub.pinata.cloud/v1/reactions?cursor=a%26b%3Dc%2520&query=hello%20world
    
  5. Real Farcaster Hub Smoke Request:

    ./fcli /v1/info dbstats=1 --verbose

    Example Output (truncated):

    [INFO] Executing command with URL: https://hub.pinata.cloud/v1/info?dbstats=1
    [JSON] {
    "version": "...",
    ...
    }
    
  6. Explicitly Set Pinata Hub Then Query:

    ./fcli set-hub https://hub.pinata.cloud
    ./fcli /v1/info dbstats=1 --verbose

    Example Request URL:

    [INFO] Executing command with URL: https://hub.pinata.cloud/v1/info?dbstats=1
    

Testing

cmake -S . -B build -DENABLE_TESTING=ON
cmake --build build --target fcli_network_query_string_test fcli_farcaster_live_smoke_test fcli_farcaster_hub_info_variants_test
ctest --test-dir build -R network_query_string_test --output-on-failure

Run the live Farcaster integration tests explicitly:

FCLI_RUN_LIVE_FARCASTER_TEST=1 ctest --test-dir build -R farcaster_ --output-on-failure

Project Structure

FCLI/
├── tests/
│ ├── network_query_string_test.cpp # Query string encoding test
│ ├── farcaster_live_smoke_test.cpp # Optional live Farcaster integration test
│ └── farcaster_hub_info_variants_test.cpp # Live /v1/info coverage on hub.pinata.cloud
├── source/
│ ├── logger.cpp # Implementation of Logger class
│ ├── network.cpp # Implementation of Network class
│ ├── fcli.cpp # Implementation of FCLI class
│ ├── logger.hpp # Thread-safe logging utilities
│ ├── network.hpp # Network request handler
│ ├── fcli.hpp # CLI logic
├── CMakeLists.txt # Build configuration
├── README.md # Project documentation

Contributing

Contributions are welcome! Please follow these steps:

  1. Fork the repository.
  2. Create a new branch:
    git checkout -b feature-name
  3. Commit your changes:
    git commit -m "Add new feature"
  4. Push to the branch:
    git push origin feature-name
  5. Open a pull request.

License

This project is licensed under the MIT License. See the LICENSE file for details.


Author

Developed by C O M P Ξ Z (compez.eth) as part of the Genyleap initiative. 🎉


Acknowledgments

  • libcurl for HTTP requests
  • jsoncpp for JSON parsing
  • The Farcaster ecosystem for their open API standards

---

About

FCLI is a versatile command-line tool for interacting with APIs, especially Farcaster hubs. Built with modern C++23, it supports querying data, executing commands, and dynamic hub configuration. Thread-safe and extensible, FCLI ensures high performance, stability, and ease of use for developers and power users.

Topics

Resources

Code of conduct

Security policy

Stars

10 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

Generated from genyleap/pt
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

README.md for FCLI

FCLI

forthebadge

FCLI is a powerful, extensible, and thread-safe command-line interface (CLI) tool for interacting with APIs, particularly those following the Farcaster hub protocol. It allows users to query data, execute commands, and dynamically configure hub addresses with ease. Designed with modern C++ standards (C++23), it ensures high performance and stability.


Features

  • Dynamic Hub Configuration: Supports setting custom hub addresses via commands.
  • Thread-Safe Operations: Ensures reliable and safe execution in multi-threaded environments.
  • JSON Pretty-Printing: Parses and formats JSON responses for better readability.
  • Verbose Mode: Enables detailed debugging information for API requests.
  • Extensibility: Built with modular design principles, allowing easy addition of new features.

Getting Started

Prerequisites

  • C++23-compatible compiler (e.g., GCC 12+, Clang 16+)
  • libcurl for HTTP requests
  • jsoncpp for JSON parsing
  • CMake 3.25+ for building the project

Build Instructions

  1. Clone the Repository:

    git clone https://github.com/genyleap/FCLI.git
    cd FCLI
  2. Configure and Build:

    mkdir build &&cd build
    cmake ..
    cmake --build .
  3. Run the Executable:

    ./fcli help

Usage

Basic Commands

  1. Fetch Hub Information:

    ./fcli /v1/info dbstats=1

    Example Output:

    [INFO] Executing command with URL: https://hub.pinata.cloud/v1/info?dbstats=1
    [INFO] Response:
    {
    "version": "1.0.0",
    "dbStats": {
    "collections": 12,
    "documents": 456789
    }
    }
    
  2. Set Custom Hub Address:

    ./fcli set-hub https://hub.pinata.cloud

    Example Output:

    [INFO] Hub URL updated to: https://hub.pinata.cloud
    
  3. Help:

    ./fcli help

    Example Output:

    [INFO] Available Commands:
    /v1/info - Fetch hub information.
    /v1/reactions - Fetch reactions for a cast or user.
    set-hub <hub_url> - Set a custom hub address.
    Example:
    ./fcli /v1/info dbstats=1
    ./fcli set-hub https://hub.pinata.cloud
    ./fcli /v1/reactions query="hello world" cursor="a&b=c%20"
    
  4. Encoded Query Parameters (spaces/symbols):

    ./fcli /v1/reactions query="hello world" cursor="a&b=c%20"

    Example Request URL:

    [INFO] Executing command with URL: https://hub.pinata.cloud/v1/reactions?cursor=a%26b%3Dc%2520&query=hello%20world
    
  5. Real Farcaster Hub Smoke Request:

    ./fcli /v1/info dbstats=1 --verbose

    Example Output (truncated):

    [INFO] Executing command with URL: https://hub.pinata.cloud/v1/info?dbstats=1
    [JSON] {
    "version": "...",
    ...
    }
    
  6. Explicitly Set Pinata Hub Then Query:

    ./fcli set-hub https://hub.pinata.cloud
    ./fcli /v1/info dbstats=1 --verbose

    Example Request URL:

    [INFO] Executing command with URL: https://hub.pinata.cloud/v1/info?dbstats=1
    

Testing

cmake -S . -B build -DENABLE_TESTING=ON
cmake --build build --target fcli_network_query_string_test fcli_farcaster_live_smoke_test fcli_farcaster_hub_info_variants_test
ctest --test-dir build -R network_query_string_test --output-on-failure

Run the live Farcaster integration tests explicitly:

FCLI_RUN_LIVE_FARCASTER_TEST=1 ctest --test-dir build -R farcaster_ --output-on-failure

Project Structure

FCLI/
├── tests/
│ ├── network_query_string_test.cpp # Query string encoding test
│ ├── farcaster_live_smoke_test.cpp # Optional live Farcaster integration test
│ └── farcaster_hub_info_variants_test.cpp # Live /v1/info coverage on hub.pinata.cloud
├── source/
│ ├── logger.cpp # Implementation of Logger class
│ ├── network.cpp # Implementation of Network class
│ ├── fcli.cpp # Implementation of FCLI class
│ ├── logger.hpp # Thread-safe logging utilities
│ ├── network.hpp # Network request handler
│ ├── fcli.hpp # CLI logic
├── CMakeLists.txt # Build configuration
├── README.md # Project documentation

Contributing

Contributions are welcome! Please follow these steps:

  1. Fork the repository.
  2. Create a new branch:
    git checkout -b feature-name
  3. Commit your changes:
    git commit -m "Add new feature"
  4. Push to the branch:
    git push origin feature-name
  5. Open a pull request.

License

This project is licensed under the MIT License. See the LICENSE file for details.


Author

Developed by C O M P Ξ Z (compez.eth) as part of the Genyleap initiative. 🎉


Acknowledgments

  • libcurl for HTTP requests
  • jsoncpp for JSON parsing
  • The Farcaster ecosystem for their open API standards

---

About

FCLI is a versatile command-line tool for interacting with APIs, especially Farcaster hubs. Built with modern C++23, it supports querying data, executing commands, and dynamic hub configuration. Thread-safe and extensible, FCLI ensures high performance, stability, and ease of use for developers and power users.

Topics

Resources

Code of conduct

Security policy

Stars

10 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

Generated from genyleap/pt
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

README.md for FCLI

FCLI

forthebadge

FCLI is a powerful, extensible, and thread-safe command-line interface (CLI) tool for interacting with APIs, particularly those following the Farcaster hub protocol. It allows users to query data, execute commands, and dynamically configure hub addresses with ease. Designed with modern C++ standards (C++23), it ensures high performance and stability.


Features

  • Dynamic Hub Configuration: Supports setting custom hub addresses via commands.
  • Thread-Safe Operations: Ensures reliable and safe execution in multi-threaded environments.
  • JSON Pretty-Printing: Parses and formats JSON responses for better readability.
  • Verbose Mode: Enables detailed debugging information for API requests.
  • Extensibility: Built with modular design principles, allowing easy addition of new features.

Getting Started

Prerequisites

  • C++23-compatible compiler (e.g., GCC 12+, Clang 16+)
  • libcurl for HTTP requests
  • jsoncpp for JSON parsing
  • CMake 3.25+ for building the project

Build Instructions

  1. Clone the Repository:

    git clone https://github.com/genyleap/FCLI.git
    cd FCLI
  2. Configure and Build:

    mkdir build &&cd build
    cmake ..
    cmake --build .
  3. Run the Executable:

    ./fcli help

Usage

Basic Commands

  1. Fetch Hub Information:

    ./fcli /v1/info dbstats=1

    Example Output:

    [INFO] Executing command with URL: https://hub.pinata.cloud/v1/info?dbstats=1
    [INFO] Response:
    {
    "version": "1.0.0",
    "dbStats": {
    "collections": 12,
    "documents": 456789
    }
    }
    
  2. Set Custom Hub Address:

    ./fcli set-hub https://hub.pinata.cloud

    Example Output:

    [INFO] Hub URL updated to: https://hub.pinata.cloud
    
  3. Help:

    ./fcli help

    Example Output:

    [INFO] Available Commands:
    /v1/info - Fetch hub information.
    /v1/reactions - Fetch reactions for a cast or user.
    set-hub <hub_url> - Set a custom hub address.
    Example:
    ./fcli /v1/info dbstats=1
    ./fcli set-hub https://hub.pinata.cloud
    ./fcli /v1/reactions query="hello world" cursor="a&b=c%20"
    
  4. Encoded Query Parameters (spaces/symbols):

    ./fcli /v1/reactions query="hello world" cursor="a&b=c%20"

    Example Request URL:

    [INFO] Executing command with URL: https://hub.pinata.cloud/v1/reactions?cursor=a%26b%3Dc%2520&query=hello%20world
    
  5. Real Farcaster Hub Smoke Request:

    ./fcli /v1/info dbstats=1 --verbose

    Example Output (truncated):

    [INFO] Executing command with URL: https://hub.pinata.cloud/v1/info?dbstats=1
    [JSON] {
    "version": "...",
    ...
    }
    
  6. Explicitly Set Pinata Hub Then Query:

    ./fcli set-hub https://hub.pinata.cloud
    ./fcli /v1/info dbstats=1 --verbose

    Example Request URL:

    [INFO] Executing command with URL: https://hub.pinata.cloud/v1/info?dbstats=1
    

Testing

cmake -S . -B build -DENABLE_TESTING=ON
cmake --build build --target fcli_network_query_string_test fcli_farcaster_live_smoke_test fcli_farcaster_hub_info_variants_test
ctest --test-dir build -R network_query_string_test --output-on-failure

Run the live Farcaster integration tests explicitly:

FCLI_RUN_LIVE_FARCASTER_TEST=1 ctest --test-dir build -R farcaster_ --output-on-failure

Project Structure

FCLI/
├── tests/
│ ├── network_query_string_test.cpp # Query string encoding test
│ ├── farcaster_live_smoke_test.cpp # Optional live Farcaster integration test
│ └── farcaster_hub_info_variants_test.cpp # Live /v1/info coverage on hub.pinata.cloud
├── source/
│ ├── logger.cpp # Implementation of Logger class
│ ├── network.cpp # Implementation of Network class
│ ├── fcli.cpp # Implementation of FCLI class
│ ├── logger.hpp # Thread-safe logging utilities
│ ├── network.hpp # Network request handler
│ ├── fcli.hpp # CLI logic
├── CMakeLists.txt # Build configuration
├── README.md # Project documentation

Contributing

Contributions are welcome! Please follow these steps:

  1. Fork the repository.
  2. Create a new branch:
    git checkout -b feature-name
  3. Commit your changes:
    git commit -m "Add new feature"
  4. Push to the branch:
    git push origin feature-name
  5. Open a pull request.

License

This project is licensed under the MIT License. See the LICENSE file for details.


Author

Developed by C O M P Ξ Z (compez.eth) as part of the Genyleap initiative. 🎉


Acknowledgments

  • libcurl for HTTP requests
  • jsoncpp for JSON parsing
  • The Farcaster ecosystem for their open API standards

---

About

FCLI is a versatile command-line tool for interacting with APIs, especially Farcaster hubs. Built with modern C++23, it supports querying data, executing commands, and dynamic hub configuration. Thread-safe and extensible, FCLI ensures high performance, stability, and ease of use for developers and power users.

Topics

Resources

Code of conduct

Security policy

Stars

10 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

Generated from genyleap/pt
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

README.md for FCLI

FCLI

forthebadge

FCLI is a powerful, extensible, and thread-safe command-line interface (CLI) tool for interacting with APIs, particularly those following the Farcaster hub protocol. It allows users to query data, execute commands, and dynamically configure hub addresses with ease. Designed with modern C++ standards (C++23), it ensures high performance and stability.


Features

  • Dynamic Hub Configuration: Supports setting custom hub addresses via commands.
  • Thread-Safe Operations: Ensures reliable and safe execution in multi-threaded environments.
  • JSON Pretty-Printing: Parses and formats JSON responses for better readability.
  • Verbose Mode: Enables detailed debugging information for API requests.
  • Extensibility: Built with modular design principles, allowing easy addition of new features.

Getting Started

Prerequisites

  • C++23-compatible compiler (e.g., GCC 12+, Clang 16+)
  • libcurl for HTTP requests
  • jsoncpp for JSON parsing
  • CMake 3.25+ for building the project

Build Instructions

  1. Clone the Repository:

    git clone https://github.com/genyleap/FCLI.git
    cd FCLI
  2. Configure and Build:

    mkdir build &&cd build
    cmake ..
    cmake --build .
  3. Run the Executable:

    ./fcli help

Usage

Basic Commands

  1. Fetch Hub Information:

    ./fcli /v1/info dbstats=1

    Example Output:

    [INFO] Executing command with URL: https://hub.pinata.cloud/v1/info?dbstats=1
    [INFO] Response:
    {
    "version": "1.0.0",
    "dbStats": {
    "collections": 12,
    "documents": 456789
    }
    }
    
  2. Set Custom Hub Address:

    ./fcli set-hub https://hub.pinata.cloud

    Example Output:

    [INFO] Hub URL updated to: https://hub.pinata.cloud
    
  3. Help:

    ./fcli help

    Example Output:

    [INFO] Available Commands:
    /v1/info - Fetch hub information.
    /v1/reactions - Fetch reactions for a cast or user.
    set-hub <hub_url> - Set a custom hub address.
    Example:
    ./fcli /v1/info dbstats=1
    ./fcli set-hub https://hub.pinata.cloud
    ./fcli /v1/reactions query="hello world" cursor="a&b=c%20"
    
  4. Encoded Query Parameters (spaces/symbols):

    ./fcli /v1/reactions query="hello world" cursor="a&b=c%20"

    Example Request URL:

    [INFO] Executing command with URL: https://hub.pinata.cloud/v1/reactions?cursor=a%26b%3Dc%2520&query=hello%20world
    
  5. Real Farcaster Hub Smoke Request:

    ./fcli /v1/info dbstats=1 --verbose

    Example Output (truncated):

    [INFO] Executing command with URL: https://hub.pinata.cloud/v1/info?dbstats=1
    [JSON] {
    "version": "...",
    ...
    }
    
  6. Explicitly Set Pinata Hub Then Query:

    ./fcli set-hub https://hub.pinata.cloud
    ./fcli /v1/info dbstats=1 --verbose

    Example Request URL:

    [INFO] Executing command with URL: https://hub.pinata.cloud/v1/info?dbstats=1
    

Testing

cmake -S . -B build -DENABLE_TESTING=ON
cmake --build build --target fcli_network_query_string_test fcli_farcaster_live_smoke_test fcli_farcaster_hub_info_variants_test
ctest --test-dir build -R network_query_string_test --output-on-failure

Run the live Farcaster integration tests explicitly:

FCLI_RUN_LIVE_FARCASTER_TEST=1 ctest --test-dir build -R farcaster_ --output-on-failure

Project Structure

FCLI/
├── tests/
│ ├── network_query_string_test.cpp # Query string encoding test
│ ├── farcaster_live_smoke_test.cpp # Optional live Farcaster integration test
│ └── farcaster_hub_info_variants_test.cpp # Live /v1/info coverage on hub.pinata.cloud
├── source/
│ ├── logger.cpp # Implementation of Logger class
│ ├── network.cpp # Implementation of Network class
│ ├── fcli.cpp # Implementation of FCLI class
│ ├── logger.hpp # Thread-safe logging utilities
│ ├── network.hpp # Network request handler
│ ├── fcli.hpp # CLI logic
├── CMakeLists.txt # Build configuration
├── README.md # Project documentation

Contributing

Contributions are welcome! Please follow these steps:

  1. Fork the repository.
  2. Create a new branch:
    git checkout -b feature-name
  3. Commit your changes:
    git commit -m "Add new feature"
  4. Push to the branch:
    git push origin feature-name
  5. Open a pull request.

License

This project is licensed under the MIT License. See the LICENSE file for details.


Author

Developed by C O M P Ξ Z (compez.eth) as part of the Genyleap initiative. 🎉


Acknowledgments

  • libcurl for HTTP requests
  • jsoncpp for JSON parsing
  • The Farcaster ecosystem for their open API standards

---

About

FCLI is a versatile command-line tool for interacting with APIs, especially Farcaster hubs. Built with modern C++23, it supports querying data, executing commands, and dynamic hub configuration. Thread-safe and extensible, FCLI ensures high performance, stability, and ease of use for developers and power users.

Topics

Resources

Code of conduct

Security policy

Stars

10 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

Generated from genyleap/pt
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

README.md for FCLI

FCLI

forthebadge

FCLI is a powerful, extensible, and thread-safe command-line interface (CLI) tool for interacting with APIs, particularly those following the Farcaster hub protocol. It allows users to query data, execute commands, and dynamically configure hub addresses with ease. Designed with modern C++ standards (C++23), it ensures high performance and stability.


Features

  • Dynamic Hub Configuration: Supports setting custom hub addresses via commands.
  • Thread-Safe Operations: Ensures reliable and safe execution in multi-threaded environments.
  • JSON Pretty-Printing: Parses and formats JSON responses for better readability.
  • Verbose Mode: Enables detailed debugging information for API requests.
  • Extensibility: Built with modular design principles, allowing easy addition of new features.

Getting Started

Prerequisites

  • C++23-compatible compiler (e.g., GCC 12+, Clang 16+)
  • libcurl for HTTP requests
  • jsoncpp for JSON parsing
  • CMake 3.25+ for building the project

Build Instructions

  1. Clone the Repository:

    git clone https://github.com/genyleap/FCLI.git
    cd FCLI
  2. Configure and Build:

    mkdir build &&cd build
    cmake ..
    cmake --build .
  3. Run the Executable:

    ./fcli help

Usage

Basic Commands

  1. Fetch Hub Information:

    ./fcli /v1/info dbstats=1

    Example Output:

    [INFO] Executing command with URL: https://hub.pinata.cloud/v1/info?dbstats=1
    [INFO] Response:
    {
    "version": "1.0.0",
    "dbStats": {
    "collections": 12,
    "documents": 456789
    }
    }
    
  2. Set Custom Hub Address:

    ./fcli set-hub https://hub.pinata.cloud

    Example Output:

    [INFO] Hub URL updated to: https://hub.pinata.cloud
    
  3. Help:

    ./fcli help

    Example Output:

    [INFO] Available Commands:
    /v1/info - Fetch hub information.
    /v1/reactions - Fetch reactions for a cast or user.
    set-hub <hub_url> - Set a custom hub address.
    Example:
    ./fcli /v1/info dbstats=1
    ./fcli set-hub https://hub.pinata.cloud
    ./fcli /v1/reactions query="hello world" cursor="a&b=c%20"
    
  4. Encoded Query Parameters (spaces/symbols):

    ./fcli /v1/reactions query="hello world" cursor="a&b=c%20"

    Example Request URL:

    [INFO] Executing command with URL: https://hub.pinata.cloud/v1/reactions?cursor=a%26b%3Dc%2520&query=hello%20world
    
  5. Real Farcaster Hub Smoke Request:

    ./fcli /v1/info dbstats=1 --verbose

    Example Output (truncated):

    [INFO] Executing command with URL: https://hub.pinata.cloud/v1/info?dbstats=1
    [JSON] {
    "version": "...",
    ...
    }
    
  6. Explicitly Set Pinata Hub Then Query:

    ./fcli set-hub https://hub.pinata.cloud
    ./fcli /v1/info dbstats=1 --verbose

    Example Request URL:

    [INFO] Executing command with URL: https://hub.pinata.cloud/v1/info?dbstats=1
    

Testing

cmake -S . -B build -DENABLE_TESTING=ON
cmake --build build --target fcli_network_query_string_test fcli_farcaster_live_smoke_test fcli_farcaster_hub_info_variants_test
ctest --test-dir build -R network_query_string_test --output-on-failure

Run the live Farcaster integration tests explicitly:

FCLI_RUN_LIVE_FARCASTER_TEST=1 ctest --test-dir build -R farcaster_ --output-on-failure

Project Structure

FCLI/
├── tests/
│ ├── network_query_string_test.cpp # Query string encoding test
│ ├── farcaster_live_smoke_test.cpp # Optional live Farcaster integration test
│ └── farcaster_hub_info_variants_test.cpp # Live /v1/info coverage on hub.pinata.cloud
├── source/
│ ├── logger.cpp # Implementation of Logger class
│ ├── network.cpp # Implementation of Network class
│ ├── fcli.cpp # Implementation of FCLI class
│ ├── logger.hpp # Thread-safe logging utilities
│ ├── network.hpp # Network request handler
│ ├── fcli.hpp # CLI logic
├── CMakeLists.txt # Build configuration
├── README.md # Project documentation

Contributing

Contributions are welcome! Please follow these steps:

  1. Fork the repository.
  2. Create a new branch:
    git checkout -b feature-name
  3. Commit your changes:
    git commit -m "Add new feature"
  4. Push to the branch:
    git push origin feature-name
  5. Open a pull request.

License

This project is licensed under the MIT License. See the LICENSE file for details.


Author

Developed by C O M P Ξ Z (compez.eth) as part of the Genyleap initiative. 🎉


Acknowledgments

  • libcurl for HTTP requests
  • jsoncpp for JSON parsing
  • The Farcaster ecosystem for their open API standards

---

About

FCLI is a versatile command-line tool for interacting with APIs, especially Farcaster hubs. Built with modern C++23, it supports querying data, executing commands, and dynamic hub configuration. Thread-safe and extensible, FCLI ensures high performance, stability, and ease of use for developers and power users.

Topics

Resources

Code of conduct

Security policy

Stars

10 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

Generated from genyleap/pt
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

README.md for FCLI

FCLI

forthebadge

FCLI is a powerful, extensible, and thread-safe command-line interface (CLI) tool for interacting with APIs, particularly those following the Farcaster hub protocol. It allows users to query data, execute commands, and dynamically configure hub addresses with ease. Designed with modern C++ standards (C++23), it ensures high performance and stability.


Features

  • Dynamic Hub Configuration: Supports setting custom hub addresses via commands.
  • Thread-Safe Operations: Ensures reliable and safe execution in multi-threaded environments.
  • JSON Pretty-Printing: Parses and formats JSON responses for better readability.
  • Verbose Mode: Enables detailed debugging information for API requests.
  • Extensibility: Built with modular design principles, allowing easy addition of new features.

Getting Started

Prerequisites

  • C++23-compatible compiler (e.g., GCC 12+, Clang 16+)
  • libcurl for HTTP requests
  • jsoncpp for JSON parsing
  • CMake 3.25+ for building the project

Build Instructions

  1. Clone the Repository:

    git clone https://github.com/genyleap/FCLI.git
    cd FCLI
  2. Configure and Build:

    mkdir build &&cd build
    cmake ..
    cmake --build .
  3. Run the Executable:

    ./fcli help

Usage

Basic Commands

  1. Fetch Hub Information:

    ./fcli /v1/info dbstats=1

    Example Output:

    [INFO] Executing command with URL: https://hub.pinata.cloud/v1/info?dbstats=1
    [INFO] Response:
    {
    "version": "1.0.0",
    "dbStats": {
    "collections": 12,
    "documents": 456789
    }
    }
    
  2. Set Custom Hub Address:

    ./fcli set-hub https://hub.pinata.cloud

    Example Output:

    [INFO] Hub URL updated to: https://hub.pinata.cloud
    
  3. Help:

    ./fcli help

    Example Output:

    [INFO] Available Commands:
    /v1/info - Fetch hub information.
    /v1/reactions - Fetch reactions for a cast or user.
    set-hub <hub_url> - Set a custom hub address.
    Example:
    ./fcli /v1/info dbstats=1
    ./fcli set-hub https://hub.pinata.cloud
    ./fcli /v1/reactions query="hello world" cursor="a&b=c%20"
    
  4. Encoded Query Parameters (spaces/symbols):

    ./fcli /v1/reactions query="hello world" cursor="a&b=c%20"

    Example Request URL:

    [INFO] Executing command with URL: https://hub.pinata.cloud/v1/reactions?cursor=a%26b%3Dc%2520&query=hello%20world
    
  5. Real Farcaster Hub Smoke Request:

    ./fcli /v1/info dbstats=1 --verbose

    Example Output (truncated):

    [INFO] Executing command with URL: https://hub.pinata.cloud/v1/info?dbstats=1
    [JSON] {
    "version": "...",
    ...
    }
    
  6. Explicitly Set Pinata Hub Then Query:

    ./fcli set-hub https://hub.pinata.cloud
    ./fcli /v1/info dbstats=1 --verbose

    Example Request URL:

    [INFO] Executing command with URL: https://hub.pinata.cloud/v1/info?dbstats=1
    

Testing

cmake -S . -B build -DENABLE_TESTING=ON
cmake --build build --target fcli_network_query_string_test fcli_farcaster_live_smoke_test fcli_farcaster_hub_info_variants_test
ctest --test-dir build -R network_query_string_test --output-on-failure

Run the live Farcaster integration tests explicitly:

FCLI_RUN_LIVE_FARCASTER_TEST=1 ctest --test-dir build -R farcaster_ --output-on-failure

Project Structure

FCLI/
├── tests/
│ ├── network_query_string_test.cpp # Query string encoding test
│ ├── farcaster_live_smoke_test.cpp # Optional live Farcaster integration test
│ └── farcaster_hub_info_variants_test.cpp # Live /v1/info coverage on hub.pinata.cloud
├── source/
│ ├── logger.cpp # Implementation of Logger class
│ ├── network.cpp # Implementation of Network class
│ ├── fcli.cpp # Implementation of FCLI class
│ ├── logger.hpp # Thread-safe logging utilities
│ ├── network.hpp # Network request handler
│ ├── fcli.hpp # CLI logic
├── CMakeLists.txt # Build configuration
├── README.md # Project documentation

Contributing

Contributions are welcome! Please follow these steps:

  1. Fork the repository.
  2. Create a new branch:
    git checkout -b feature-name
  3. Commit your changes:
    git commit -m "Add new feature"
  4. Push to the branch:
    git push origin feature-name
  5. Open a pull request.

License

This project is licensed under the MIT License. See the LICENSE file for details.


Author

Developed by C O M P Ξ Z (compez.eth) as part of the Genyleap initiative. 🎉


Acknowledgments

  • libcurl for HTTP requests
  • jsoncpp for JSON parsing
  • The Farcaster ecosystem for their open API standards

---

About

FCLI is a versatile command-line tool for interacting with APIs, especially Farcaster hubs. Built with modern C++23, it supports querying data, executing commands, and dynamic hub configuration. Thread-safe and extensible, FCLI ensures high performance, stability, and ease of use for developers and power users.

Topics

Resources

Code of conduct

Security policy

Stars

10 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

Generated from genyleap/pt
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

README.md for FCLI

FCLI

forthebadge

FCLI is a powerful, extensible, and thread-safe command-line interface (CLI) tool for interacting with APIs, particularly those following the Farcaster hub protocol. It allows users to query data, execute commands, and dynamically configure hub addresses with ease. Designed with modern C++ standards (C++23), it ensures high performance and stability.


Features

  • Dynamic Hub Configuration: Supports setting custom hub addresses via commands.
  • Thread-Safe Operations: Ensures reliable and safe execution in multi-threaded environments.
  • JSON Pretty-Printing: Parses and formats JSON responses for better readability.
  • Verbose Mode: Enables detailed debugging information for API requests.
  • Extensibility: Built with modular design principles, allowing easy addition of new features.

Getting Started

Prerequisites

  • C++23-compatible compiler (e.g., GCC 12+, Clang 16+)
  • libcurl for HTTP requests
  • jsoncpp for JSON parsing
  • CMake 3.25+ for building the project

Build Instructions

  1. Clone the Repository:

    git clone https://github.com/genyleap/FCLI.git
    cd FCLI
  2. Configure and Build:

    mkdir build &&cd build
    cmake ..
    cmake --build .
  3. Run the Executable:

    ./fcli help

Usage

Basic Commands

  1. Fetch Hub Information:

    ./fcli /v1/info dbstats=1

    Example Output:

    [INFO] Executing command with URL: https://hub.pinata.cloud/v1/info?dbstats=1
    [INFO] Response:
    {
    "version": "1.0.0",
    "dbStats": {
    "collections": 12,
    "documents": 456789
    }
    }
    
  2. Set Custom Hub Address:

    ./fcli set-hub https://hub.pinata.cloud

    Example Output:

    [INFO] Hub URL updated to: https://hub.pinata.cloud
    
  3. Help:

    ./fcli help

    Example Output:

    [INFO] Available Commands:
    /v1/info - Fetch hub information.
    /v1/reactions - Fetch reactions for a cast or user.
    set-hub <hub_url> - Set a custom hub address.
    Example:
    ./fcli /v1/info dbstats=1
    ./fcli set-hub https://hub.pinata.cloud
    ./fcli /v1/reactions query="hello world" cursor="a&b=c%20"
    
  4. Encoded Query Parameters (spaces/symbols):

    ./fcli /v1/reactions query="hello world" cursor="a&b=c%20"

    Example Request URL:

    [INFO] Executing command with URL: https://hub.pinata.cloud/v1/reactions?cursor=a%26b%3Dc%2520&query=hello%20world
    
  5. Real Farcaster Hub Smoke Request:

    ./fcli /v1/info dbstats=1 --verbose

    Example Output (truncated):

    [INFO] Executing command with URL: https://hub.pinata.cloud/v1/info?dbstats=1
    [JSON] {
    "version": "...",
    ...
    }
    
  6. Explicitly Set Pinata Hub Then Query:

    ./fcli set-hub https://hub.pinata.cloud
    ./fcli /v1/info dbstats=1 --verbose

    Example Request URL:

    [INFO] Executing command with URL: https://hub.pinata.cloud/v1/info?dbstats=1
    

Testing

cmake -S . -B build -DENABLE_TESTING=ON
cmake --build build --target fcli_network_query_string_test fcli_farcaster_live_smoke_test fcli_farcaster_hub_info_variants_test
ctest --test-dir build -R network_query_string_test --output-on-failure

Run the live Farcaster integration tests explicitly:

FCLI_RUN_LIVE_FARCASTER_TEST=1 ctest --test-dir build -R farcaster_ --output-on-failure

Project Structure

FCLI/
├── tests/
│ ├── network_query_string_test.cpp # Query string encoding test
│ ├── farcaster_live_smoke_test.cpp # Optional live Farcaster integration test
│ └── farcaster_hub_info_variants_test.cpp # Live /v1/info coverage on hub.pinata.cloud
├── source/
│ ├── logger.cpp # Implementation of Logger class
│ ├── network.cpp # Implementation of Network class
│ ├── fcli.cpp # Implementation of FCLI class
│ ├── logger.hpp # Thread-safe logging utilities
│ ├── network.hpp # Network request handler
│ ├── fcli.hpp # CLI logic
├── CMakeLists.txt # Build configuration
├── README.md # Project documentation

Contributing

Contributions are welcome! Please follow these steps:

  1. Fork the repository.
  2. Create a new branch:
    git checkout -b feature-name
  3. Commit your changes:
    git commit -m "Add new feature"
  4. Push to the branch:
    git push origin feature-name
  5. Open a pull request.

License

This project is licensed under the MIT License. See the LICENSE file for details.


Author

Developed by C O M P Ξ Z (compez.eth) as part of the Genyleap initiative. 🎉


Acknowledgments

  • libcurl for HTTP requests
  • jsoncpp for JSON parsing
  • The Farcaster ecosystem for their open API standards

---

About

FCLI is a versatile command-line tool for interacting with APIs, especially Farcaster hubs. Built with modern C++23, it supports querying data, executing commands, and dynamic hub configuration. Thread-safe and extensible, FCLI ensures high performance, stability, and ease of use for developers and power users.

Topics

Resources

Code of conduct

Security policy

Stars

10 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

Generated from genyleap/pt
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

README.md for FCLI

FCLI

forthebadge

FCLI is a powerful, extensible, and thread-safe command-line interface (CLI) tool for interacting with APIs, particularly those following the Farcaster hub protocol. It allows users to query data, execute commands, and dynamically configure hub addresses with ease. Designed with modern C++ standards (C++23), it ensures high performance and stability.


Features

  • Dynamic Hub Configuration: Supports setting custom hub addresses via commands.
  • Thread-Safe Operations: Ensures reliable and safe execution in multi-threaded environments.
  • JSON Pretty-Printing: Parses and formats JSON responses for better readability.
  • Verbose Mode: Enables detailed debugging information for API requests.
  • Extensibility: Built with modular design principles, allowing easy addition of new features.

Getting Started

Prerequisites

  • C++23-compatible compiler (e.g., GCC 12+, Clang 16+)
  • libcurl for HTTP requests
  • jsoncpp for JSON parsing
  • CMake 3.25+ for building the project

Build Instructions

  1. Clone the Repository:

    git clone https://github.com/genyleap/FCLI.git
    cd FCLI
  2. Configure and Build:

    mkdir build &&cd build
    cmake ..
    cmake --build .
  3. Run the Executable:

    ./fcli help

Usage

Basic Commands

  1. Fetch Hub Information:

    ./fcli /v1/info dbstats=1

    Example Output:

    [INFO] Executing command with URL: https://hub.pinata.cloud/v1/info?dbstats=1
    [INFO] Response:
    {
    "version": "1.0.0",
    "dbStats": {
    "collections": 12,
    "documents": 456789
    }
    }
    
  2. Set Custom Hub Address:

    ./fcli set-hub https://hub.pinata.cloud

    Example Output:

    [INFO] Hub URL updated to: https://hub.pinata.cloud
    
  3. Help:

    ./fcli help

    Example Output:

    [INFO] Available Commands:
    /v1/info - Fetch hub information.
    /v1/reactions - Fetch reactions for a cast or user.
    set-hub <hub_url> - Set a custom hub address.
    Example:
    ./fcli /v1/info dbstats=1
    ./fcli set-hub https://hub.pinata.cloud
    ./fcli /v1/reactions query="hello world" cursor="a&b=c%20"
    
  4. Encoded Query Parameters (spaces/symbols):

    ./fcli /v1/reactions query="hello world" cursor="a&b=c%20"

    Example Request URL:

    [INFO] Executing command with URL: https://hub.pinata.cloud/v1/reactions?cursor=a%26b%3Dc%2520&query=hello%20world
    
  5. Real Farcaster Hub Smoke Request:

    ./fcli /v1/info dbstats=1 --verbose

    Example Output (truncated):

    [INFO] Executing command with URL: https://hub.pinata.cloud/v1/info?dbstats=1
    [JSON] {
    "version": "...",
    ...
    }
    
  6. Explicitly Set Pinata Hub Then Query:

    ./fcli set-hub https://hub.pinata.cloud
    ./fcli /v1/info dbstats=1 --verbose

    Example Request URL:

    [INFO] Executing command with URL: https://hub.pinata.cloud/v1/info?dbstats=1
    

Testing

cmake -S . -B build -DENABLE_TESTING=ON
cmake --build build --target fcli_network_query_string_test fcli_farcaster_live_smoke_test fcli_farcaster_hub_info_variants_test
ctest --test-dir build -R network_query_string_test --output-on-failure

Run the live Farcaster integration tests explicitly:

FCLI_RUN_LIVE_FARCASTER_TEST=1 ctest --test-dir build -R farcaster_ --output-on-failure

Project Structure

FCLI/
├── tests/
│ ├── network_query_string_test.cpp # Query string encoding test
│ ├── farcaster_live_smoke_test.cpp # Optional live Farcaster integration test
│ └── farcaster_hub_info_variants_test.cpp # Live /v1/info coverage on hub.pinata.cloud
├── source/
│ ├── logger.cpp # Implementation of Logger class
│ ├── network.cpp # Implementation of Network class
│ ├── fcli.cpp # Implementation of FCLI class
│ ├── logger.hpp # Thread-safe logging utilities
│ ├── network.hpp # Network request handler
│ ├── fcli.hpp # CLI logic
├── CMakeLists.txt # Build configuration
├── README.md # Project documentation

Contributing

Contributions are welcome! Please follow these steps:

  1. Fork the repository.
  2. Create a new branch:
    git checkout -b feature-name
  3. Commit your changes:
    git commit -m "Add new feature"
  4. Push to the branch:
    git push origin feature-name
  5. Open a pull request.

License

This project is licensed under the MIT License. See the LICENSE file for details.


Author

Developed by C O M P Ξ Z (compez.eth) as part of the Genyleap initiative. 🎉


Acknowledgments

  • libcurl for HTTP requests
  • jsoncpp for JSON parsing
  • The Farcaster ecosystem for their open API standards

---

About

FCLI is a versatile command-line tool for interacting with APIs, especially Farcaster hubs. Built with modern C++23, it supports querying data, executing commands, and dynamic hub configuration. Thread-safe and extensible, FCLI ensures high performance, stability, and ease of use for developers and power users.

Topics

Resources

Code of conduct

Security policy

Stars

10 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

Generated from genyleap/pt