{"id":37194415,"url":"https://github.com/vlcty/lemon-markets-websocket","last_synced_at":"2026-01-14T22:36:15.205Z","repository":{"id":57569061,"uuid":"338824471","full_name":"vlcty/lemon-markets-websocket","owner":"vlcty","description":"Go connector for the lemon.markets WebSocket","archived":true,"fork":false,"pushed_at":"2021-06-27T08:40:35.000Z","size":25,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-09T16:42:47.676Z","etag":null,"topics":["financial-data","go","golang","golang-library","websocket"],"latest_commit_sha":null,"homepage":"","language":"Go","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/vlcty.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-02-14T14:32:16.000Z","updated_at":"2023-01-28T08:05:32.000Z","dependencies_parsed_at":"2022-08-23T18:10:45.178Z","dependency_job_id":null,"html_url":"https://github.com/vlcty/lemon-markets-websocket","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/vlcty/lemon-markets-websocket","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vlcty%2Flemon-markets-websocket","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vlcty%2Flemon-markets-websocket/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vlcty%2Flemon-markets-websocket/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vlcty%2Flemon-markets-websocket/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vlcty","download_url":"https://codeload.github.com/vlcty/lemon-markets-websocket/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vlcty%2Flemon-markets-websocket/sbom","scorecard":{"id":925533,"data":{"date":"2025-08-04","repo":{"name":"github.com/vlcty/lemon-markets-websocket","commit":"bfa5d919d968f83d08f35b4966724056b98d58f0"},"scorecard":{"version":"v5.2.1-28-gc1d103a9","commit":"c1d103a9bb9f635ec7260bf9aa0699466fa4be0e"},"score":3,"checks":[{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#dangerous-workflow"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#sast"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#binary-artifacts"}},{"name":"Code-Review","score":0,"reason":"Found 0/14 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#token-permissions"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#pinned-dependencies"}},{"name":"Maintained","score":0,"reason":"project is archived","details":["Warn: Repository is archived."],"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#maintained"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#signed-releases"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#license"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-25T11:40:28.626Z","repository_id":57569061,"created_at":"2025-08-25T11:40:28.626Z","updated_at":"2025-08-25T11:40:28.626Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28436610,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T21:32:52.117Z","status":"ssl_error","status_checked_at":"2026-01-14T21:32:33.442Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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":["financial-data","go","golang","golang-library","websocket"],"created_at":"2026-01-14T22:36:14.457Z","updated_at":"2026-01-14T22:36:15.198Z","avatar_url":"https://github.com/vlcty.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# DEPRECATED - DO NOT USE\n\nlemon.markets reached out to me telling me their streaming API ist shut down and deprecated. Do not use!\n\n# lemon-markets-websocket\n\nA go wrapper lib for the [lemon.markets](https://lemon.markets) WebSocket streams.\n\n## Installation\n\nInstall using go get:\n\n```\ngo get -u github.com/vlcty/lemon-markets-websocket\n```\n\n## Capabilities\n\nLemon.markets provides two streams:\n\nTicks:   \nTicks are price updates containing the current market price for a security. It's sent when a tade occured. The quantity value tells you the amount of traded shares. If quantity is 0 then no actual trade happened, but the market maker Lang und Schwarz set a new price.\n\nQuotes:   \nQuotes contain the current bid and ask spread and its sizes.\n\n## Connection handling\n\nThe library keeps track of the connection in the background. Automatic reconnects are done when the connection drops.\n\n## Use of channels\n\nThis library uses channels to communicate with your application. You are responsible for these channels! Depending on the amount of subscribed securities you may want to use buffered or unbuffered channels. Make sure that you close and empty them after you disconnect from the stream.\n\n## Example code\n\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\t\"time\"\n\n\t\"github.com/vlcty/lemon-markets-websocket\"\n)\n\nfunc main() {\n\t// Create the needed channels\n\ttickChan := make(chan *lemon.Tick, 0)\n\tquoteChan := make(chan *lemon.Quote, 0)\n\terrChan := make(chan error, 0)\n\n\t// Create a stream struct for tick updates and pass in the needed channels\n\ttickStream := lemon.NewTickStream(tickChan, errChan)\n\n\t// Create a stream struct for quote updates and pass in the needed channels\n\tquoteStream := lemon.NewQuoteStream(quoteChan, errChan)\n\n\t// Define some ISINs\n\tisins := []string{\n\t\t\"DE000TUAG000\", // TUI AG\n\t\t\"LS000IGOLD01\", // L\u0026S gold commodity\n\t\t\"US00165C1045\", // AMC entertainment\n\t}\n\n\tfor _, isin := range isins {\n\t\t// Subscribe to ticks\n\t\ttickStream.Subscribe(isin)\n\n\t\t// Subscribe to quotes\n\t\tquoteStream.Subscribe(isin)\n\t}\n\n\t// Create an exit condition\n\ttimeToStop := time.After(time.Minute)\n\n\t// Create a loop to process updates\n\tprocessUpdates := true\n\n\tfor processUpdates {\n\t\tselect {\n\t\tcase err := \u003c-errChan:\n            fmt.Printf(\"An error occured: %s\\n\", err.Error())\n\n\t\tcase tick := \u003c-tickChan:\n\t\t\t// A tick update was received: Print all available fields\n\t\t\tfmt.Printf(\"Tick: %s -\u003e %.4f, Quantity: %d\\n\", tick.ISIN, tick.Price, tick.Quantity)\n\n\t\tcase quote := \u003c-quoteChan:\n\t\t\t// A quote update was received: Print all available fields\n\t\t\tfmt.Printf(\"Quote: %s -\u003e Bid = %.4f, Ask = %.4f, Bidsize: %d, Asksize: %d\\n\", quote.ISIN,\n\t\t\t\tquote.Bid, quote.Ask, quote.Bidsize, quote.Asksize)\n\n\t\tcase \u003c-timeToStop:\n\t\t\t// Time to stop. Disconnect on our behalf\n\t\t\tfmt.Println(\"It's time to stop\")\n\t\t\tprocessUpdates = false\n\t\t}\n\t}\n\n\t// Disconnect from the streams\n\ttickStream.Disconnect()\n\tquoteStream.Disconnect()\n\n\t// Cleanup\n\tclose(tickChan)\n\tclose(quoteChan)\n\tclose(errChan)\n\n\tfor len(tickChan) \u003e 0 {\n\t\t\u003c-tickChan\n\t}\n\n\tfor len(quoteChan) \u003e 0 {\n\t\t\u003c-quoteChan\n\t}\n\n\tfor len(errChan) \u003e 0 {\n\t\t\u003c-errChan\n\t}\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvlcty%2Flemon-markets-websocket","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvlcty%2Flemon-markets-websocket","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvlcty%2Flemon-markets-websocket/lists"}