{"id":24557641,"url":"https://github.com/yortw/spooky","last_synced_at":"2025-10-09T01:16:24.767Z","repository":{"id":70831140,"uuid":"70145879","full_name":"Yortw/Spooky","owner":"Yortw","description":"An HttpClient based Json RPC 2.0/XML-RPC client for .Net.","archived":false,"fork":false,"pushed_at":"2018-01-21T05:50:53.000Z","size":2783,"stargazers_count":19,"open_issues_count":0,"forks_count":2,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-10-03T20:37:10.118Z","etag":null,"topics":["c-sharp","httpclient","json","json-rpc","rpc"],"latest_commit_sha":null,"homepage":"https://yortw.github.io/Spooky/","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Yortw.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-10-06T10:58:49.000Z","updated_at":"2025-07-21T08:40:57.000Z","dependencies_parsed_at":"2023-06-03T01:30:26.138Z","dependency_job_id":null,"html_url":"https://github.com/Yortw/Spooky","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/Yortw/Spooky","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Yortw%2FSpooky","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Yortw%2FSpooky/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Yortw%2FSpooky/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Yortw%2FSpooky/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Yortw","download_url":"https://codeload.github.com/Yortw/Spooky/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Yortw%2FSpooky/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279000722,"owners_count":26082894,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-08T02:00:06.501Z","response_time":56,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["c-sharp","httpclient","json","json-rpc","rpc"],"created_at":"2025-01-23T05:18:30.455Z","updated_at":"2025-10-09T01:16:24.752Z","avatar_url":"https://github.com/Yortw.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Spooky\n## What is Spooky?\nShort description: A Json RPC 2.0 client library for .Net.\n\nLong Description: Spooky is two things;\n\n1. A portable, async-await based, .Net abstraction for RPC clients.\n2. An implementation of the Json RPC 2.0 specification over HTTP (using HttpClient) fitting that abstraction. \n\nBasically Spooky lets you make Json RPC calls, and could theoretically be extended to work with XML-RPC, future Json RPC versions and other similar systems without altering dependant systems.\nBecause the Json RPC implementation uses HttpClient for transport, it supports injecting message handlers into the HTTP pipeline. This allows support for HTTP based authentication/authorisation, compression, retry logic etc. \n(assuming the server is also compatible with those features).\n\nThe transport, serialization and client layers are all separate, so while Json RPC over HTTP is supported out of the box, implementing it over sockets or another network protocol should be relatively simple and self-contained.\nBy relying on the abstraction, clients are protected from changing requirements at the network or serialization layers, and could even choose those at runtime.\n\n[![GitHub license](https://img.shields.io/github/license/mashape/apistatus.svg)](https://github.com/Yortw/Spooky/blob/master/LICENSE.md) \n\n## Supported Platforms\nCurrently;\n\n* .Net Framework 4.0+\n* Net Standard 1.1\n* Xamarin.iOS\n* Xamarin.Android\n* WinRT (Windows Store Apps 8.1)\n* UWP 10+ (Windows 10 Universal Programs)\n\n## Build Status\n[![Build status](https://ci.appveyor.com/api/projects/status/o2m5qx499ctm58qg?svg=true)](https://ci.appveyor.com/project/Yortw/spooky)\n\n## How do I use Spooky?\n*We got your samples right here*\n\nInstall the relevant Nuget package. \n\nIf you just want the abstraction layer to write your own implementation against, try;\n```powershell\nPM\u003e Install-Package Spooky\n```\n\nIf you want to do Json RPC (2.0) do this;\n```powershell\nPM\u003e Install-Package Spooky.Json20\n```\n\nOnce the package is installed, add a using for the Spooky.Json20 namespace;\n```c#\nusing Spooky.Json20;\n```\n\nThen create an client and call the *Invoke method* to start making remote calls. The following sample calls a remote *add* procedure passing two arguments by name, *a* and *b*. Both named and \npositional arguments are supported. For positional arguments use an object array or the overload that takes params object[]. For named arguments pass a dictionary as shown in this sample.\n```c#\n    var client = new Spooky.Json20.JsonRpcHttpClient(new Uri(\"http://www.myserver.com/mathservice\"));\n    var answer = await client.Invoke\u003cint\u003e\n    (\n\t    \"add\", \n\t    new Dictionary\u003cstring, object\u003e()\n\t    {\n    \t\t{ \"a\", 4 },\n\t    \t{ \"b\", 6 }\n\t    }\n    ).ConfigureAwait(false);\n```\n\nThat's it, you've made your first successful RPC call!\n\n[![NuGet Badge](https://buildstats.info/nuget/Spooky)](https://www.nuget.org/packages/Spooky/)\n\n## Server Implementation\nSpooky doesn't even attempt to provide a server implementation. If you want to implement a server in .Net, try the awesome [Jayrock](https://github.com/atifaziz/Jayrock) library.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyortw%2Fspooky","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyortw%2Fspooky","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyortw%2Fspooky/lists"}