lbry 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 5d38161742271e9c0ab2b6d9716d9d655704f483
4
+ data.tar.gz: 6f8746957b8dc16f4b8e05fe8a65e0c620901dfe
5
+ SHA512:
6
+ metadata.gz: c53dca994f68e3a6bd0e8b522923ef36b88d3816a736a0ad04f31551335ed45aa868c1c04e23426be421f0681af94fe273eef31e827d3b75ad01d7179fcd81ac
7
+ data.tar.gz: 59c43cb256d06bafd055b9f542879eaa5ae581adbbbfbb280d5e41e814b330e179ce277523dbe7a11c5b956bb102afcd5a5361c7e7707c94891e6800c4abc2a9
@@ -0,0 +1,10 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+ .ruby-version
@@ -0,0 +1,5 @@
1
+ sudo: false
2
+ language: ruby
3
+ rvm:
4
+ - 2.3.4
5
+ before_install: gem install bundler -v 1.14.6
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in lbry.gemspec
4
+ gemspec
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2018 Daniel Dominguez
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
@@ -0,0 +1,59 @@
1
+ # Lbry
2
+
3
+
4
+ LBRY is an open-source protocol providing distribution, discovery, and purchase of digital content (data) via a decentralized network.
5
+ Ruby wrapper for LBRY and LBRYcrd APIs
6
+
7
+ ## Installation
8
+
9
+ Add this line to your application's Gemfile:
10
+
11
+ ```ruby
12
+ gem 'lbry'
13
+ ```
14
+
15
+ And then execute:
16
+
17
+ $ bundle
18
+
19
+ Or install it yourself as:
20
+
21
+ $ gem install lbry
22
+
23
+ ## Usage
24
+
25
+ All methods listed on [Lbry API doc](https://lbryio.github.io/lbry) are working here and they have the same name and accept the same arguments, for example to call the method get example from the api doc: `curl 'http://localhost:5279' --data '{"method":"get","params":{"uri":"what"} }'`, here you will need to do this
26
+ ```
27
+ client = Lbry::Client.new
28
+ client.get(uri: "what") =>
29
+ => #<OpenStruct id=nil, jsonrpc="2.0", result=#<OpenStruct blobs_completed=76, blobs_in_stream=76, channel_claim_id=nil, channel_name=nil, claim_id="6769855a9aa43b67086f9ff3c1a5bacb5698a27a", claim_name="what", completed=true, download_directory="/home/r1/Downloads", download_path="/home/r1/Downloads/LBRY100.mp4", file_name="LBRY100.mp4", key="0edc1705489d7a2b2bcad3fea7e5ce92", metadata=#<OpenStruct author="Samuel Bryan", description="What is LBRY? An introduction with Alex Tabarrok", language="en", license="LBRY inc", licenseUrl="", nsfw=false, preview="", thumbnail="https://s3.amazonaws.com/files.lbry.io/logo.png", title="What is LBRY?", version="_0_1_0">, mime_type="video/mp4", nout=0, outpoint="6c71c02c4990ce0590f6888a77ad11f1ae45486f6a4c56d5013954ee8f6356bc:0", points_paid=0.0, sd_hash="d5169241150022f996fa7cd6a9a1c421937276a3275eb912790bd07ba7aec1fac5fd45431d226b8fb402691e79aeb24b", status="completed", stopped=true, stream_hash="9f41e37b1ea706d1b431a65f634b89c5aadefb106280da3661e4d565d47bc938a345755cafb2af807bcfc9fbde3306e3", stream_name="LBRY100.mp4", suggested_file_name="LBRY100.mp4", total_bytes=158433904, txid="6c71c02c4990ce0590f6888a77ad11f1ae45486f6a4c56d5013954ee8f6356bc", written_bytes=158433824>>
30
+
31
+ ```
32
+
33
+ Example on how to get a list of claims:
34
+ ```
35
+ client = Lbry::Client.new
36
+ response = client.claim_list(name: "lbry")
37
+ claims = response.result.claims # array of claims
38
+ claims.first => #<OpenStruct address="bTzDhXE4vK6fLqU9LSVgrBGYhxuSj8spH8", amount=1.0, claim_id="2c63bcc26eb26d60e91fe99cd972e38bb64b3401", claim_sequence=15, decoded_claim=true, depth=232551, effective_amount=1.0, has_signature=false, height=147432, hex="080110011adc010801129401080410011a0d57686174206973204c4252593f223057686174206973204c4252593f20416e20696e74726f64756374696f6e207769746820416c6578205461626172726f6b2a0c53616d75656c20427279616e32084c42525920696e6338004a2f68747470733a2f2f73332e616d617a6f6e6177732e636f6d2f66696c65732e6c6272792e696f2f6c6f676f2e706e6752005a001a41080110011a30e3bcfb59a97efd76d5ce7533ff9aae8ad565df4b8d10db32b7296b07d2a3fbd41ba99c439cc972b567323fc97132041d2209766964656f2f6d7034", name="lbry", nout=0, permanent_url="lbry#2c63bcc26eb26d60e91fe99cd972e38bb64b3401", supports=[], txid="32b2c71eb1edb47dfa1b9b645c35fa5a4fdc77b4d4eada08d747e21f3f0871a7", valid_at_height=150075, value=#<OpenStruct claimType="streamType", stream=#<OpenStruct metadata=#<OpenStruct author="Samuel Bryan", description="What is LBRY? An introduction with Alex Tabarrok", language="en", license="LBRY inc", licenseUrl="", nsfw=false, preview="", thumbnail="https://s3.amazonaws.com/files.lbry.io/logo.png", title="What is LBRY?", version="_0_1_0">, source=#<OpenStruct contentType="video/mp4", source="e3bcfb59a97efd76d5ce7533ff9aae8ad565df4b8d10db32b7296b07d2a3fbd41ba99c439cc972b567323fc97132041d", sourceType="lbry_sd_hash", version="_0_0_1">, version="_0_0_1">, version="_0_0_1">>
39
+ ```
40
+
41
+ You can also look under `test/fixtures/[method_name]/ to see how the response looks like.
42
+
43
+ You can get the list of supported methods [here](https://github.com/dan1d/lbry-api-ruby/blob/master/lib/lbry/client.rb#L6) and the API doc [here](https://lbryio.github.io/lbry), on the original API DOC you can see the list of arguments needed for each method call.
44
+
45
+
46
+ ## Development
47
+
48
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
49
+
50
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
51
+
52
+ ## Contributing
53
+
54
+ Bug reports and pull requests are welcome on GitHub at https://github.com/dan1d/lbry.
55
+
56
+
57
+ ## License
58
+
59
+ The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
@@ -0,0 +1,10 @@
1
+ require "bundler/gem_tasks"
2
+ require "rake/testtask"
3
+
4
+ Rake::TestTask.new(:test) do |t|
5
+ t.libs << "test"
6
+ t.libs << "lib"
7
+ t.test_files = FileList['test/**/*_test.rb']
8
+ end
9
+
10
+ task :default => :test
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "lbry"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start(__FILE__)
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,40 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'lbry/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "lbry"
8
+ spec.version = Lbry::VERSION
9
+ spec.authors = ["Daniel Dominguez"]
10
+ spec.email = ["danielfromarg@gmail.com"]
11
+
12
+ spec.summary = %q{Ruby wrapper for LBRY and LBRYcrd APIs}
13
+ spec.description = %q{Ruby wrapper for LBRY and LBRYcrd APIs}
14
+ spec.homepage = "https://github.com/dan1d/lbry-api-ruby"
15
+ spec.license = "MIT"
16
+
17
+ # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
18
+ # to allow pushing to a single host or delete this section to allow pushing to any host.
19
+ # if spec.respond_to?(:metadata)
20
+ # spec.metadata['allowed_push_host'] = "TODO: Set to 'http://mygemserver.com'"
21
+ # else
22
+ # raise "RubyGems 2.0 or newer is required to protect against " \
23
+ # "public gem pushes."
24
+ # end
25
+
26
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
27
+ f.match(%r{^(test|spec|features)/})
28
+ end
29
+ spec.bindir = "exe"
30
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
31
+ spec.require_paths = ["lib"]
32
+
33
+ spec.add_development_dependency "bundler", "~> 1.14"
34
+ spec.add_development_dependency "rake", "~> 10.0"
35
+ spec.add_development_dependency "minitest", "~> 5.0"
36
+ spec.add_development_dependency "vcr"
37
+ spec.add_development_dependency "webmock"
38
+ spec.add_development_dependency "httparty"
39
+ spec.add_development_dependency "pry"
40
+ end
@@ -0,0 +1,10 @@
1
+ require "lbry/version"
2
+ require "lbry/api"
3
+ require "lbry/api_error"
4
+ require "lbry/client"
5
+
6
+ module Lbry
7
+ def initialize(auth: {})
8
+ Client.new(auth: auth)
9
+ end
10
+ end
@@ -0,0 +1,48 @@
1
+ require 'httparty'
2
+ require 'json'
3
+
4
+ module Lbry
5
+ class Api
6
+ include HTTParty
7
+ attr_accessor :auth, :default_options
8
+
9
+ base_uri 'http://localhost:5279'
10
+ headers 'Content-Type' => 'application/json'
11
+
12
+ def parse_response(raw_response)
13
+ # binding.pry
14
+ struct = JSON.parse(raw_response.body, object_class: OpenStruct)
15
+ error = struct.error
16
+ return struct unless error && error.code && error.message
17
+ # binding.pry
18
+ raise Lbry::ApiError.new(error)
19
+ end
20
+
21
+ def initialize(auth: {})
22
+ @auth = { username: auth["user"], password: auth["password"] }
23
+ @default_options = {}
24
+ default_options[:basic_auth] = auth if auth.values.any?
25
+ end
26
+
27
+ def request(http_verb, lbry_command, lbry_params, headers: {})
28
+ params = { body: { method: lbry_command, params: lbry_params }.to_json }
29
+ params[:headers] = headers if headers.keys.any?
30
+ response = self.class.send(http_verb, '', params)
31
+ parse_response(response)
32
+ end
33
+
34
+ def get(lbry_command, lbry_params = {}, options: {})
35
+ request(:get, lbry_command, lbry_params)
36
+ end
37
+
38
+ def post(lbry_command, *lbry_params)
39
+ headers = { "Content-Type" => "application/x-www-form-urlencoded" }
40
+ request(:post, lbry_command, *lbry_params, headers: headers)
41
+ end
42
+
43
+ def put(lbry_command, lbry_params = {}, options: {})
44
+ request(:put, lbry_command, lbry_params)
45
+ end
46
+
47
+ end
48
+ end
@@ -0,0 +1,12 @@
1
+
2
+ module Lbry
3
+ class ApiError < StandardError
4
+ def initialize(attributes)
5
+ @error = attributes.error
6
+ @code = attributes.code
7
+ @message = attributes.message
8
+ @data = attributes.data
9
+ @jsonrpc = attributes.jsonrpc
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,167 @@
1
+ # @author Daniel Alejandro Dominguez Diaz
2
+ module Lbry
3
+ class Client
4
+ attr_reader :client
5
+ def self.add_support_for(lbry_command, http_verb: :post)
6
+ define_method(lbry_command) do |*args, &block|
7
+ client.send(http_verb, lbry_command, *args)
8
+ end
9
+ end
10
+
11
+ def initialize(auth: {})
12
+ @client = Api.new(auth)
13
+ end
14
+
15
+ # Announce blobs to the DHT
16
+ # @overload blob_announce(query)
17
+ # @param [Hash] query
18
+ # @option query [String] :blob_hash announce a blob, specified by blob_hash
19
+ # @option query [String] :stream_hash announce all blobs associated with stream_hash
20
+ # @option query [String] :sd_hash announce all blobs associated with sd_hash and the sd_hash itself
21
+ add_support_for :blob_announce
22
+
23
+ # Get blob availability
24
+ # @overload blob_announce(query)
25
+ # @param [Hash] query
26
+ # @option query [String] :blob_hash check availability for this blob hash
27
+ # @option query [Number] :search_timeout how long to search for peers for the blob in the dht
28
+ # @option query [Number] :sd_hash how long to try downloading from a peer
29
+ add_support_for :blob_availability
30
+
31
+ # Delete a blob
32
+ # @overload blob_delete(query)
33
+ # @param [Hash] query
34
+ # @option query [String] :blob_hash blob hash of the blob to delete
35
+ add_support_for :blob_delete
36
+
37
+ # Download and return a blob
38
+ # @overload blob_get(query)
39
+ # @param [Hash] query
40
+ # @option query [String] :blob_hash :required, blob hash of the blob to get
41
+ # @option query [Number] :timeout timeout in number of seconds
42
+ # @option query [String] :encoding by default no attempt at decoding is made, can be set to one of the following decoders: 'json'
43
+ # @option query [String] :payment_rate_manager if not given the default payment rate manager will be used. supported alternative rate managers: 'only-free'
44
+ add_support_for :blob_get
45
+
46
+ # Returns blob hashes. If not given filters, returns all blobs known by the blob manager
47
+ # @overload blob_list(query)
48
+ # @param [Hash] query
49
+ # @option query [Boolean] :needed only return needed blobs
50
+ # @option query [Boolean] :finished only return finished blobs
51
+ # @option query [String] :uri filter blobs by stream in a uri
52
+ # @option query [String] :stream_hash filter blobs by stream hash
53
+ # @option query [String] :sd_hash filter blobs by sd hash
54
+ # @option query [Number] :page_size results page size
55
+ # @option query [Number] :page page of results to return
56
+ add_support_for :blob_list
57
+
58
+ # Returns blob hashes. If not given filters, returns all blobs known by the blob manager
59
+ # @overload blob_reflect(query)
60
+ # @param [Hash] query
61
+ # @option query [String] :reflector_server reflector address
62
+ add_support_for :blob_reflect
63
+
64
+ # Reflects all saved blobs
65
+ # No args
66
+ add_support_for :blob_reflect_all
67
+
68
+ # Returns blob hashes. If not given filters, returns all blobs known by the blob manager
69
+ # @overload block_show(query)
70
+ # @param [Hash] query
71
+ # @option query [String] :blockhash :required, hash of the block to look up
72
+ # @option query [Number] :height :required, height of the block to look up
73
+ add_support_for :block_show
74
+
75
+ # Export serialized channel signing information for a given certificate claim id
76
+ # @overload channel_export(query)
77
+ # @param [Hash] query
78
+ # @option query [String] :claim_id :required, Claim ID to export information about
79
+ add_support_for :channel_export
80
+
81
+ # Import serialized channel signing information (to allow signing new claims to the channel)
82
+ # @overload channel_import(query)
83
+ # @param [Hash] query
84
+ # @option query [String] :serialized_certificate_info :required, certificate info
85
+ add_support_for :channel_import
86
+
87
+ # Get certificate claim infos for channels that can be published to
88
+ # No args
89
+ add_support_for :channel_list
90
+
91
+ # Generate a publisher key and create a new '@' prefixed certificate claim
92
+ # @overload channel_new(query)
93
+ # @param [Hash] query
94
+ # @option query [String] :channel_name :required, name of the channel prefixed with '@'
95
+ # @option query [Float] :amount :required, bid amount on the channel
96
+ add_support_for :channel_new
97
+
98
+ # Abandon a name and reclaim credits from the claim
99
+ # @overload claim_abandon(query)
100
+ # @param [Hash] query
101
+ # @option query [String] :claim_id claim_id of the claim to abandon
102
+ # @option query [String] :txid txid of the claim to abandon
103
+ # @option query [Number] :nout nout of the claim to abandon
104
+ add_support_for :claim_abandon
105
+
106
+ # List current claims and information about them for a given name
107
+ # @overload claim_list(query)
108
+ # @param [Hash] query
109
+ # @option query [String] :name name of the claim to list info about
110
+ add_support_for :claim_list
111
+
112
+ # List current claims and information about them for a given name
113
+ # @overload claim_list_by_channel(query)
114
+ # @param [Hash] query
115
+ # @option query [String] :uri required, uri of the channel
116
+ # @option query [String] :uris uris of the channel
117
+ # @option query [Number] :page which page of results to return where page 1 is the first page, defaults to no pages
118
+ # @option query [Number] :page_size number of results in a page, default of 10
119
+ add_support_for :claim_list_by_channel
120
+
121
+ add_support_for :help
122
+
123
+ SUPPORTED_METHODS = %w{
124
+ claim_list_mine
125
+ claim_new_support
126
+ claim_renew
127
+ claim_send_to_address
128
+ claim_show
129
+ cli_test_command
130
+ commands
131
+ daemon_stop
132
+ file_delete
133
+ file_list
134
+ file_reflect
135
+ file_set_status
136
+ get
137
+ help
138
+ peer_list
139
+ peer_ping
140
+ publish
141
+ resolve
142
+ resolve_name
143
+ routing_table_get
144
+ settings_get
145
+ settings_set
146
+ status
147
+ stream_availability
148
+ stream_cost_estimate
149
+ transaction_list
150
+ transaction_show
151
+ utxo_list
152
+ version
153
+ wallet_balance
154
+ wallet_decrypt
155
+ wallet_encrypt
156
+ wallet_is_address_mine
157
+ wallet_list
158
+ wallet_new_address
159
+ wallet_prefill_addresses
160
+ wallet_public_key
161
+ wallet_send
162
+ wallet_unlock
163
+ wallet_unused_address
164
+ }.each {|q| self.add_support_for q.to_sym }
165
+
166
+ end
167
+ end
@@ -0,0 +1,3 @@
1
+ module Lbry
2
+ VERSION = "0.1.0"
3
+ end
metadata ADDED
@@ -0,0 +1,156 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: lbry
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Daniel Dominguez
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2018-06-03 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.14'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.14'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: minitest
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '5.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '5.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: vcr
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: webmock
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: httparty
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: pry
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ description: Ruby wrapper for LBRY and LBRYcrd APIs
112
+ email:
113
+ - danielfromarg@gmail.com
114
+ executables: []
115
+ extensions: []
116
+ extra_rdoc_files: []
117
+ files:
118
+ - ".gitignore"
119
+ - ".travis.yml"
120
+ - Gemfile
121
+ - LICENSE.txt
122
+ - README.md
123
+ - Rakefile
124
+ - bin/console
125
+ - bin/setup
126
+ - lbry.gemspec
127
+ - lib/lbry.rb
128
+ - lib/lbry/api.rb
129
+ - lib/lbry/api_error.rb
130
+ - lib/lbry/client.rb
131
+ - lib/lbry/version.rb
132
+ homepage: https://github.com/dan1d/lbry-api-ruby
133
+ licenses:
134
+ - MIT
135
+ metadata: {}
136
+ post_install_message:
137
+ rdoc_options: []
138
+ require_paths:
139
+ - lib
140
+ required_ruby_version: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - ">="
143
+ - !ruby/object:Gem::Version
144
+ version: '0'
145
+ required_rubygems_version: !ruby/object:Gem::Requirement
146
+ requirements:
147
+ - - ">="
148
+ - !ruby/object:Gem::Version
149
+ version: '0'
150
+ requirements: []
151
+ rubyforge_project:
152
+ rubygems_version: 2.6.11
153
+ signing_key:
154
+ specification_version: 4
155
+ summary: Ruby wrapper for LBRY and LBRYcrd APIs
156
+ test_files: []