cage 0.1.0 → 0.1.1

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.
data/bin/cage CHANGED
@@ -1,5 +1,11 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  require "cage"
4
- Cage::Console.start!
4
+ require "trollop"
5
+
6
+ options = Trollop.options do
7
+ opt :config, "Specify alternate config file", :default => "./.cagerc.rb"
8
+ end
9
+
10
+ Cage::Console.start! options[:config]
5
11
 
@@ -1,5 +1,4 @@
1
1
  require "pry"
2
- require "awesome_print"
3
2
  require "multi_xml"
4
3
  require "json"
5
4
  require "faraday"
@@ -1,16 +1,14 @@
1
1
  module Cage
2
2
  class Console
3
3
  CONNECTION_VARIABLES = [:scheme, :domain, :prefix, :headers]
4
- HTTP_METHOD_REGEX = /^(?:get|post|put|delete)$/i
4
+ HTTP_METHOD_REGEX = /^(?:get|post|put|delete|head|options|patch)$/i
5
5
 
6
6
  attr_reader :connection, :last_response, *CONNECTION_VARIABLES
7
7
 
8
-
9
- def initialize
10
- @scheme = "http"
11
- @domain = "rubygems.org"
12
- @prefix = "api/v1/gems/"
13
- @headers = {}
8
+ def initialize config_file_name = nil
9
+ configure_pry
10
+ read_config_file File.expand_path config_file_name if config_file_name
11
+ default_to_rubygems
14
12
  reinitialize_connection
15
13
  end
16
14
 
@@ -19,14 +17,17 @@ module Cage
19
17
  :headers => @headers do |conn|
20
18
  conn.use FaradayMiddleware::ParseXml, :content_type => /\bxml$/
21
19
  conn.use FaradayMiddleware::ParseJson, :content_type => /\bjson$/
22
-
23
20
  conn.adapter Faraday.default_adapter
21
+ @middleware_builder.call conn unless @middleware_builder.nil?
24
22
  end
25
23
  end
26
24
 
27
25
  def method_missing sym, *args, &block
28
- if sym =~ HTTP_METHOD_REGEX
26
+ case sym
27
+ when HTTP_METHOD_REGEX
29
28
  http sym, *args, &block
29
+ when /^(?:basic|token)_auth/
30
+ connection.send sym, *args, &block
30
31
  else
31
32
  super
32
33
  end
@@ -40,6 +41,11 @@ module Cage
40
41
  end
41
42
  end
42
43
 
44
+ def add_middleware &block
45
+ @middleware_builder = block
46
+ reinitialize_connection
47
+ end
48
+
43
49
  def http method, *args, &block
44
50
  @last_response = Cage::Response.new connection.send method.downcase,
45
51
  *args, &block
@@ -53,8 +59,31 @@ module Cage
53
59
  value
54
60
  end
55
61
 
56
- def self.start!
57
- new.pry
62
+ private
63
+
64
+ def default_to_rubygems
65
+ @scheme ||= "http"
66
+ unless @domain or @prefix
67
+ @domain = "rubygems.org"
68
+ @prefix = "api/v1/gems/"
69
+ end
70
+ @headers ||= {}
71
+ end
72
+
73
+ def read_config_file config_file_name
74
+ if File.exists? config_file_name
75
+ instance_eval File.read(config_file_name), config_file_name
76
+ end
77
+ end
78
+
79
+ def configure_pry
80
+ Pry.config.prompt = [
81
+ proc { "[#{domain}:#{last_response && last_response.status}]-> " },
82
+ proc { "[#{domain}]*> " } ]
83
+ end
84
+
85
+ def self.start! *args
86
+ new(*args).pry
58
87
  end
59
88
  end
60
89
  end
@@ -1,3 +1,3 @@
1
1
  module Cage
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
@@ -1,4 +1,6 @@
1
+ require "pry"
1
2
  require "faraday"
3
+ require "faraday_middleware"
2
4
  require "minitest/autorun"
3
5
  require "minitest/pride"
4
6
  require "cage/console"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cage
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2012-01-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
16
- requirement: &22188940 !ruby/object:Gem::Requirement
16
+ requirement: &17769580 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *22188940
24
+ version_requirements: *17769580
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: minitest
27
- requirement: &22188500 !ruby/object:Gem::Requirement
27
+ requirement: &17769140 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *22188500
35
+ version_requirements: *17769140
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: mustache
38
- requirement: &22188080 !ruby/object:Gem::Requirement
38
+ requirement: &17768720 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *22188080
46
+ version_requirements: *17768720
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: faraday
49
- requirement: &22187660 !ruby/object:Gem::Requirement
49
+ requirement: &17768300 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *22187660
57
+ version_requirements: *17768300
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: faraday_middleware
60
- requirement: &22187240 !ruby/object:Gem::Requirement
60
+ requirement: &17767880 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0'
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *22187240
68
+ version_requirements: *17767880
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: multi_xml
71
- requirement: &22186820 !ruby/object:Gem::Requirement
71
+ requirement: &17767460 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '0'
77
77
  type: :runtime
78
78
  prerelease: false
79
- version_requirements: *22186820
79
+ version_requirements: *17767460
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: json
82
- requirement: &22186400 !ruby/object:Gem::Requirement
82
+ requirement: &17767040 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: '0'
88
88
  type: :runtime
89
89
  prerelease: false
90
- version_requirements: *22186400
90
+ version_requirements: *17767040
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: nokogiri
93
- requirement: &22185980 !ruby/object:Gem::Requirement
93
+ requirement: &17766620 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ! '>='
@@ -98,10 +98,10 @@ dependencies:
98
98
  version: '0'
99
99
  type: :runtime
100
100
  prerelease: false
101
- version_requirements: *22185980
101
+ version_requirements: *17766620
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: pry
104
- requirement: &22185560 !ruby/object:Gem::Requirement
104
+ requirement: &17135020 !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements:
107
107
  - - ! '>='
@@ -109,10 +109,10 @@ dependencies:
109
109
  version: '0'
110
110
  type: :runtime
111
111
  prerelease: false
112
- version_requirements: *22185560
112
+ version_requirements: *17135020
113
113
  - !ruby/object:Gem::Dependency
114
- name: awesome_print
115
- requirement: &22185140 !ruby/object:Gem::Requirement
114
+ name: trollop
115
+ requirement: &17134000 !ruby/object:Gem::Requirement
116
116
  none: false
117
117
  requirements:
118
118
  - - ! '>='
@@ -120,7 +120,7 @@ dependencies:
120
120
  version: '0'
121
121
  type: :runtime
122
122
  prerelease: false
123
- version_requirements: *22185140
123
+ version_requirements: *17134000
124
124
  description: ! 'Curl can be a bit unfriendly, especially to developers just starting
125
125
  out. Cage
126
126