lbry 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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: []