{"id":28538376,"url":"https://github.com/metachaos-systems/steemex","last_synced_at":"2026-03-06T18:09:57.112Z","repository":{"id":57553208,"uuid":"65038169","full_name":"metachaos-systems/steemex","owner":"metachaos-systems","description":"Elixir websockets library and utilities for Steem blockchain ","archived":false,"fork":false,"pushed_at":"2019-05-10T20:02:43.000Z","size":180,"stargazers_count":25,"open_issues_count":0,"forks_count":0,"subscribers_count":5,"default_branch":"master","last_synced_at":"2026-01-14T07:33:40.833Z","etag":null,"topics":["blockchain","cryptocurrency","elixir","steem","steemit"],"latest_commit_sha":null,"homepage":"","language":"Elixir","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/metachaos-systems.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-08-05T17:51:09.000Z","updated_at":"2024-07-21T08:58:40.000Z","dependencies_parsed_at":"2022-09-26T18:51:48.986Z","dependency_job_id":null,"html_url":"https://github.com/metachaos-systems/steemex","commit_stats":null,"previous_names":["cyberpunk-ventures/steemex"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/metachaos-systems/steemex","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/metachaos-systems%2Fsteemex","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/metachaos-systems%2Fsteemex/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/metachaos-systems%2Fsteemex/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/metachaos-systems%2Fsteemex/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/metachaos-systems","download_url":"https://codeload.github.com/metachaos-systems/steemex/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/metachaos-systems%2Fsteemex/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30189591,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-06T17:33:53.563Z","status":"ssl_error","status_checked_at":"2026-03-06T17:33:51.678Z","response_time":250,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["blockchain","cryptocurrency","elixir","steem","steemit"],"created_at":"2025-06-09T18:12:12.711Z","updated_at":"2026-03-06T18:09:57.101Z","avatar_url":"https://github.com/metachaos-systems.png","language":"Elixir","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Steemex\n\nElixir HTTP/Websockets client for Steem JSONRPC interface and official Steemit API. \n\n## Installation\n\n  1. Add `steemex` to your list of dependencies in `mix.exs`:\n \n```elixir\n   def deps do\n      [\n        {:steemex, \"\u003e= 0.0.0\"}\n      ]\n    end\n```\n\n## Configuration\n\nStemeex doesn't require any configuration. If no config is provided, Steemex will use `http://api.steemit.com` condenser endpoint for all JSONRPC calls.\n\nIf you want to use another transport, public node or private node, set corresponding values for `api` and `api_url`. Possible api values are `:steemit_api`, `:jsonrpc_ws_api`, `:jsonrpc_http_api`.\n\n\n\nIf you are using http or ws api, you need to set a steemd instance url, for example, a public node `http://gtg.steem.house:8090` for jsonrpc_http_api.\n\nExample:\n\n```elixir\nconfig :steemex,\n  api: :jsonrpc_http_api,\n  api_url: \"http://gtg.steem.house:8090\",\n  activate_stage_sup: false\n```\n\nIf want Steemex to stream incoming events in pseudo-realtime, set `activate_stage_sup` to `true` and see the example of a GenStage consumer.\n\n\n# JSONRPC API\n\nSteemex module includes structs for all operations types. Streamer module parses each operation and converts it to a corresponding struct.\n\nThe main module function is `Steemex.call`. It will block the calling process and return a success tuple with a \"result\" data from the JSONRPC call response. JSONRPC call ids are handled automatically.\n\n# Documentation\n\nAll database api functions have docs, typespecs and example API responses.\n\n# GenStage\n\nSteemex uses GenStage, [a new specification](http://elixir-lang.org/blog/2016/07/14/announcing-genstage/) for handling and exchanging events among Elixir/Erlang processes.\n\nOn module app startup two GenStage processes are started and registered:\n\n* Steemex.Stage.Blocks.Producer which, perhaps unsurprisingly, is a new blocks producer\n* Steemex.Stage.RawOps produces raw blockchain operations\n* Steemex.Stage.MungedOps produces parsed, cleaned and transformed operations\n\n\n## An example of GenStage consumer to handle stream of new operations\n\n```\ndefmodule Steemex.Stage.ExampleConsumer do\n  use GenStage\n  alias Steemex.MungedOps\n  require Logger\n\n  def start_link(args, options \\\\ []) do\n    GenStage.start_link(__MODULE__, args, options)\n  end\n\n  def init(state) do\n    Logger.info(\"Example consumer is initializing...\")\n    {:consumer, state, subscribe_to: state[:subscribe_to]}\n  end\n\n  def handle_events(events, _from, state) do\n    for op \u003c- events do\n      process_event(op)\n    end\n    {:noreply, [], state}\n  end\n\n  def process_event(%{data: %MungedOps.Reblog{} = data, metadata: %{block_height: h, timestamp: t} = metadata}) do\n      Logger.info \"\"\"\n      New reblog:\n      #{inspect data}\n      with metadata\n      #{inspect metadata}\n      \"\"\"\n  end\n\n  def process_event(%{data: data, metadata: %{block_height: h, timestamp: t} = metadata}) do\n      Logger.info \"\"\"\n      New operation:\n      #{inspect data}\n      with metadata\n      #{inspect metadata}\n      \"\"\"\n  end\n\nend\n```\n\n## Roadmap\n\nSteemex is under active development.\n\n* Add more utility functions\n* Add more types and structs\n* Add transaction broadcasting\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmetachaos-systems%2Fsteemex","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmetachaos-systems%2Fsteemex","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmetachaos-systems%2Fsteemex/lists"}