mpex 0.4.5 → 0.4.6

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 72e8bc083ff85a07ca6c3196ce6a4f07061e1b3f
4
- data.tar.gz: 1f1e0bcd7ff4bbe9be52d98848008d9ed31ce9ae
3
+ metadata.gz: 75ca9aee6159266cfd7cc27d8fe3612f96a569cb
4
+ data.tar.gz: ffadf1b2a0830efc46e6977fbded6ef9759379d9
5
5
  SHA512:
6
- metadata.gz: 3dfd156f30219fdb74f0464790b0b75854ba65c89c92b52644cb8b8ce776da3eda5d30c453ecb174650d80d92e02f45d0d63a4f6287ecb2f2cc711712430b54e
7
- data.tar.gz: b10ee61363289b05e13153ce040a8650432e8d3e31a66eff0367113ff62c0a2d7f87c32bf2fc6baba05cba8e989706c0f8cced2fd5a3d0cfe1fec60542ca82cd
6
+ metadata.gz: e7eb0911853927001842f53116f37c87c069d1f5054a02f0f4816934b3eca87d849f98fb5a8ccae06c609b36876fd31b5214d367a78aac2f5f10e1998cd337ea
7
+ data.tar.gz: 207037af4b69b56ad8cd536d1ebe06bd0cdd26e392062ce036d7ae2152a5e590ddaccd8832beba7ec4326486068b1e7a68980f6580da83cb8f561f1c5af38492
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- mpex (0.4.2)
4
+ mpex (0.4.6)
5
5
  cri (~> 2.2)
6
6
  gpgme
7
7
  highline
@@ -27,6 +27,7 @@ GEM
27
27
  highline (1.6.15)
28
28
  json (1.7.6)
29
29
  net-yail (1.6.1)
30
+ rake (10.0.3)
30
31
  rspec-expectations (2.12.1)
31
32
  diff-lcs (~> 1.1.3)
32
33
 
@@ -36,4 +37,5 @@ PLATFORMS
36
37
  DEPENDENCIES
37
38
  cucumber
38
39
  mpex!
40
+ rake
39
41
  rspec-expectations
data/README.md CHANGED
@@ -1,8 +1,8 @@
1
- # Commandline Client for MPEx
1
+ # MPEx.rb: a commandline client for MPEx
2
2
 
3
3
  ## About
4
4
 
5
- Commandline client for [MPEx](http://mpex.co), a Bitcoin security exchange. Make sure to carefully read its [FAQ](http://mpex.co/faq.html) before using it.
5
+ MPEx.rb is a commandline client for [MPEx](http://mpex.co), a Bitcoin security exchange. Make sure to carefully read its [FAQ](http://mpex.co/faq.html) before using it.
6
6
 
7
7
  ## Install
8
8
 
data/Rakefile CHANGED
@@ -2,6 +2,9 @@ require "bundler/gem_tasks"
2
2
  require 'cucumber'
3
3
  require 'cucumber/rake/task'
4
4
 
5
+ desc "Build and Test"
6
+ task :default => [:build, :test]
7
+
5
8
  Cucumber::Rake::Task.new(:test) do |t|
6
9
  t.cucumber_opts = "features --format pretty"
7
10
  end
data/lib/mpex.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require "mpex/version"
2
+ require "mpex/http"
2
3
  require "mpex/mpex"
3
4
  require "mpex/converter"
4
5
 
data/lib/mpex/cli.rb CHANGED
@@ -185,6 +185,20 @@ end
185
185
  end
186
186
  end
187
187
 
188
+ @cmd.define_command do
189
+ name 'proxies'
190
+ usage 'proxies [options]'
191
+ summary 'list active MPEx proxies; only works when connected to IRC'
192
+
193
+ run do |opts, args|
194
+ mpex = Mpex::Mpex.new
195
+ mpex.list_proxies do |proxies|
196
+ puts proxies
197
+ puts "To use a proxy, edit ~/.mpex/config.yaml and restart mpex cli"
198
+ end
199
+ end
200
+ end
201
+
188
202
  def self.run(args)
189
203
  @cmd.run(ARGV)
190
204
  end
data/lib/mpex/http.rb ADDED
@@ -0,0 +1,41 @@
1
+ require 'open-uri'
2
+ require 'net/http'
3
+
4
+ module Mpex
5
+ class Http
6
+
7
+ def self.post_form(url, params)
8
+ begin
9
+ res = Net::HTTP.post_form(mpex_uri(url), params)
10
+ return res.body.to_s
11
+ rescue Exception => ex
12
+ suggest_proxies
13
+ raise ex
14
+ end
15
+ end
16
+
17
+ def self.get(url, url_extension="")
18
+ begin
19
+ uri = mpex_uri(url).merge(url_extension)
20
+ return Net::HTTP.get(uri)
21
+ rescue Exception => ex
22
+ suggest_proxies
23
+ raise ex
24
+ end
25
+ end
26
+
27
+ private
28
+ def self.suggest_proxies
29
+ puts "----------"
30
+ say("<%= color('MPEx proxy maybe not reachable.', :red) %>")
31
+ puts "Try a different one or IRC bots.\nType 'irc' to connect to IRC."
32
+ puts "When you're connected you can use mpex via irc bots or find out about alternative proxies via 'proxies'"
33
+ puts "----------"
34
+ end
35
+
36
+ def self.mpex_uri(url)
37
+ URI.parse(url).merge("/")
38
+ end
39
+
40
+ end
41
+ end
data/lib/mpex/irc.rb CHANGED
@@ -90,6 +90,26 @@ module Mpex
90
90
  }
91
91
  end
92
92
 
93
+ def list_proxies(&block)
94
+ @irc.msg MPEXBOT, '$proxies'
95
+
96
+ status = Timeout::timeout(TIMEOUT) {
97
+ yield wait_for_mpexbot_plain_message
98
+ }
99
+ end
100
+
101
+ def wait_for_mpexbot_plain_message
102
+ while true
103
+ if @last_message
104
+ answer = @last_message[:message]
105
+ if answer
106
+ @last_message = nil
107
+ return answer
108
+ end
109
+ end
110
+ end
111
+ end
112
+
93
113
  def wait_for_mpexbot_message
94
114
  while true
95
115
  if @last_message
data/lib/mpex/mpex.rb CHANGED
@@ -1,6 +1,4 @@
1
1
  require 'fileutils'
2
- require 'open-uri'
3
- require 'net/http'
4
2
  require 'json'
5
3
  require 'yaml'
6
4
  require 'highline/import'
@@ -68,8 +66,8 @@ module Mpex
68
66
  end
69
67
  end
70
68
  else
71
- res = Net::HTTP.post_form(mpex_uri(opts[:url]), { 'msg' => "#{encrypted_msg}" })
72
- yield handle_answer(res.body, opts)
69
+ res = Http.post_form(opts[:url], { 'msg' => "#{encrypted_msg}" })
70
+ yield handle_answer(res, opts)
73
71
  end
74
72
  end
75
73
 
@@ -82,10 +80,6 @@ module Mpex
82
80
  verified_response.to_s
83
81
  end
84
82
 
85
- def mpex_uri(url)
86
- URI.parse(url).merge("/")
87
- end
88
-
89
83
  def validate_mpsic(mpsic)
90
84
  if mpsic.match(/^\w\./)
91
85
  return mpsic
@@ -126,8 +120,8 @@ module Mpex
126
120
  vwaps = JSON.parse(resp)
127
121
  end
128
122
  else
129
- vwap_url = mpex_uri(url).merge("/mpex-vwap.php")
130
- vwaps = JSON.parse(Net::HTTP.get(vwap_url))
123
+ vwaps_raw = Http.get(url, "/mpex-vwap.php")
124
+ vwaps = JSON.parse(vwaps_raw)
131
125
  end
132
126
  yield vwaps
133
127
  end
@@ -140,8 +134,7 @@ module Mpex
140
134
  end
141
135
  else
142
136
  opts = verify_opts_present(opts, [ :url ])
143
- orderbook_url = mpex_uri(opts[:url]).merge("/mpex-mktdepth.php")
144
- orderbook_res = Net::HTTP.get(orderbook_url)
137
+ orderbook_res = Http.get(opts[:url], "/mpex-mktdepth.php")
145
138
  orderbook_res = orderbook_res.start_with?("JurovP") ? orderbook_res.match(/JurovP\((.+)\)/)[1] : orderbook_res
146
139
  orderbook = JSON.parse(orderbook_res)
147
140
  end
@@ -156,6 +149,16 @@ module Mpex
156
149
  end
157
150
  end
158
151
 
152
+ def list_proxies(&block)
153
+ if $IRC_LEAK && $IRC_LEAK.connected?
154
+ $IRC_LEAK.list_proxies do |proxies|
155
+ yield proxies
156
+ end
157
+ else
158
+ puts "This command only works when connected to irc. Type 'irc' to connect."
159
+ end
160
+ end
161
+
159
162
  def portfolio(opts, stat, &block)
160
163
 
161
164
  return unless stat
data/lib/mpex/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Mpex
2
- VERSION = "0.4.5"
2
+ VERSION = "0.4.6"
3
3
  end
data/mpex.gemspec CHANGED
@@ -8,8 +8,8 @@ Gem::Specification.new do |s|
8
8
  s.authors = ["Fa Wuxi"]
9
9
  s.email = [""]
10
10
  s.homepage = "https://github.com/fawuxi/mpex"
11
- s.summary = %q{Commandline Client for MPEx}
12
- s.description = %q{Commandline client for "MPEx":http://mpex.co a Bitcoin security exchange. Make sure to carefully read its "FAQ":http://mpex.co/faq.html before using it.}
11
+ s.summary = %q{MPEx.rb: a commandline client for MPEx}
12
+ s.description = %q{MPEx.rb is a commandline client for "MPEx":http://mpex.co a Bitcoin security exchange. Make sure to carefully read its "FAQ":http://mpex.co/faq.html before using it.}
13
13
 
14
14
  s.files = Dir['[A-Z]*'] + Dir['{bin,lib,tasks,test}/**/*'] + [ 'mpex.gemspec' ]
15
15
  s.extra_rdoc_files = ['README.md']
@@ -23,11 +23,12 @@ Gem::Specification.new do |s|
23
23
  s.add_runtime_dependency "gpgme"
24
24
  s.add_runtime_dependency "net-yail"
25
25
 
26
+ s.add_development_dependency "rake"
26
27
  s.add_development_dependency "cucumber"
27
28
  s.add_development_dependency "rspec-expectations"
28
29
 
29
30
  s.post_install_message = %q{------------------------------------------------------------------------------
30
- run "mpex help" for usage information
31
+ run "mpex help" for usage information; or "mpex -i" to start interactive
31
32
  ------------------------------------------------------------------------------
32
33
  }
33
34
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mpex
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.5
4
+ version: 0.4.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Fa Wuxi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-03-10 00:00:00.000000000 Z
11
+ date: 2013-03-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cri
@@ -80,6 +80,20 @@ dependencies:
80
80
  - - '>='
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rake
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'
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: cucumber
85
99
  requirement: !ruby/object:Gem::Requirement
@@ -108,8 +122,9 @@ dependencies:
108
122
  - - '>='
109
123
  - !ruby/object:Gem::Version
110
124
  version: '0'
111
- description: Commandline client for "MPEx":http://mpex.co a Bitcoin security exchange.
112
- Make sure to carefully read its "FAQ":http://mpex.co/faq.html before using it.
125
+ description: MPEx.rb is a commandline client for "MPEx":http://mpex.co a Bitcoin security
126
+ exchange. Make sure to carefully read its "FAQ":http://mpex.co/faq.html before using
127
+ it.
113
128
  email:
114
129
  - ''
115
130
  executables:
@@ -126,6 +141,7 @@ files:
126
141
  - bin/mpex
127
142
  - lib/mpex/cli.rb
128
143
  - lib/mpex/converter.rb
144
+ - lib/mpex/http.rb
129
145
  - lib/mpex/interactive.rb
130
146
  - lib/mpex/irc.rb
131
147
  - lib/mpex/mpex.rb
@@ -137,7 +153,7 @@ licenses: []
137
153
  metadata: {}
138
154
  post_install_message: |
139
155
  ------------------------------------------------------------------------------
140
- run "mpex help" for usage information
156
+ run "mpex help" for usage information; or "mpex -i" to start interactive
141
157
  ------------------------------------------------------------------------------
142
158
  rdoc_options:
143
159
  - --main
@@ -159,5 +175,5 @@ rubyforge_project:
159
175
  rubygems_version: 2.0.0
160
176
  signing_key:
161
177
  specification_version: 4
162
- summary: Commandline Client for MPEx
178
+ summary: 'MPEx.rb: a commandline client for MPEx'
163
179
  test_files: []