webclient 0.0.1 → 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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7eb2ccdb7293580bdd84f47296a6aeeea732c059
4
- data.tar.gz: 3f1a98beed96051f2b5c2e9425be0606e4d5db27
3
+ metadata.gz: 341993a1bad956dda14de5a33dfa94355e7df6a3
4
+ data.tar.gz: 3063bac3858324ac7cbcd650e88cf332ce46f5e9
5
5
  SHA512:
6
- metadata.gz: 5719ef6944bc547b68ad245bbe54e42b456d873f03bf036b25d03b1cb63d00153e063274229938d32be2bdbc549ebd8b26a5c29ef601fcecde2efaf767cd6358
7
- data.tar.gz: a3c8bb313bb5d2fc56e99e6e8c7a039872ac6e8fdc53464e9b155680773ad0a603095037242d82f6ca2bf302659f33b437a293d763e078ff2e86b17ff62b46e0
6
+ metadata.gz: 4819baa4904dba19cbdc898fb6244806db8fccaffcdc396027f7fe6e0be08b366b40e171f71b972e5c5ccd739e46461074acfc6b7d4edc9d6787d95dcb5244f3
7
+ data.tar.gz: 042b1cd3a09e94ca0c791dfe19d9ccecd48a440435a131fdbad4e779c1d68d1d450d82b2eaa7e744fb61b832ce7cf1ba65815901ffa25c6067b1f225b339a171
@@ -4,3 +4,4 @@ README.md
4
4
  Rakefile
5
5
  lib/webclient.rb
6
6
  lib/webclient/version.rb
7
+ lib/webclient/webclient.rb
data/README.md CHANGED
@@ -1,11 +1,13 @@
1
1
  # webclient
2
2
 
3
- webclient gem - yet (another) network client for world wide web (www) requests via HTTP
3
+ webclient gem - yet (another) universal network client interface for world wide web (www) requests via HTTP
4
+
5
+
6
+ * home :: [github.com/rubycoco/webclient](https://github.com/rubycoco/webclient)
7
+ * bugs :: [github.com/rubycoco/webclient/issues](https://github.com/rubycoco/webclient/issues)
8
+ * gem :: [rubygems.org/gems/webclient](https://rubygems.org/gems/webclient)
9
+ * rdoc :: [rubydoc.info/gems/webclient](http://rubydoc.info/gems/webclient)
4
10
 
5
- * home :: [github.com/rubylibs/fotos](https://github.com/rubylibs/fotos)
6
- * bugs :: [github.com/rubylibs/fotos/issues](https://github.com/rubylibs/fotos/issues)
7
- * gem :: [rubygems.org/gems/fotos](https://rubygems.org/gems/fotos)
8
- * rdoc :: [rubydoc.info/gems/fotos](http://rubydoc.info/gems/fotos)
9
11
 
10
12
 
11
13
  ## Usage
data/Rakefile CHANGED
@@ -5,10 +5,10 @@ Hoe.spec 'webclient' do
5
5
 
6
6
  self.version = Webclient::VERSION
7
7
 
8
- self.summary = 'webclient gem - yet (another) network client for world wide web (www) requests '
8
+ self.summary = 'webclient gem - yet (another) universal network client interface for world wide web (www) requests via HTTP'
9
9
  self.description = summary
10
10
 
11
- self.urls = { home: 'https://github.com/rubylibs/fotos' }
11
+ self.urls = { home: 'https://github.com/rubycoco/webclient' }
12
12
 
13
13
  self.author = 'Gerald Bauer'
14
14
  self.email = 'ruby-talk@ruby-lang.org'
@@ -22,7 +22,7 @@ Hoe.spec 'webclient' do
22
22
  self.licenses = ['Public Domain']
23
23
 
24
24
  self.spec_extras = {
25
- required_ruby_version: '>= 1.9.2'
25
+ required_ruby_version: '>= 2.2.2'
26
26
  }
27
27
 
28
28
  end
@@ -1,6 +1,24 @@
1
+ require 'pp'
2
+ require 'time'
3
+ require 'date'
4
+ require 'fileutils'
5
+
6
+ require 'uri'
7
+ require 'net/http'
8
+ require 'net/https'
9
+
10
+ require 'json'
11
+ require 'yaml'
12
+
1
13
 
2
14
  # our own code
3
15
  require 'webclient/version' # note: let version always go first
16
+ require 'webclient/webclient'
17
+
18
+
19
+ ############
20
+ ## add convenience alias for camel case / alternate different spelling
21
+ WebClient = Webclient
4
22
 
5
23
 
6
24
  # say hello
@@ -1,8 +1,8 @@
1
1
 
2
2
  class Webclient
3
3
  MAJOR = 0 ## todo: namespace inside version or something - why? why not??
4
- MINOR = 0
5
- PATCH = 1
4
+ MINOR = 1
5
+ PATCH = 0
6
6
  VERSION = [MAJOR,MINOR,PATCH].join('.')
7
7
 
8
8
  def self.version
@@ -0,0 +1,85 @@
1
+
2
+ class Webclient
3
+
4
+ class Response # nested class - wrap Net::HTTP::Response
5
+ def initialize( response )
6
+ @response = response
7
+ end
8
+ def raw() @response; end
9
+
10
+
11
+ def text
12
+ # note: Net::HTTP will NOT set encoding UTF-8 etc.
13
+ # will be set to ASCII-8BIT == BINARY == Encoding Unknown; Raw Bytes Here
14
+ # thus, set/force encoding to utf-8
15
+ text = @response.body.to_s
16
+ text = text.force_encoding( Encoding::UTF_8 )
17
+ text
18
+ end
19
+
20
+ ## convenience helper; returns parsed json data
21
+ def json() JSON.parse( text ); end
22
+
23
+
24
+
25
+ class Headers # nested (nested) class
26
+ def initialize( response )
27
+ @response = response
28
+ end
29
+ def each( &blk )
30
+ @response.each_header do |key, value| # Iterate all response headers
31
+ blk.call( key, value )
32
+ end
33
+ end
34
+ end
35
+ def headers() @headers ||= Headers.new( @response ); end
36
+
37
+ class Status # nested (nested) class
38
+ def initialize( response )
39
+ @response = response
40
+ end
41
+ def code() @response.code.to_i; end
42
+ def ok?() code == 200; end
43
+ def nok?() code != 200; end
44
+ def message() @response.message; end
45
+ end
46
+ def status() @status ||= Status.new( @response ); end
47
+ end # (nested) class Response
48
+
49
+
50
+ def self.get( url, headers: {} )
51
+
52
+ uri = URI.parse( url )
53
+ http = Net::HTTP.new( uri.host, uri.port )
54
+
55
+ if uri.instance_of? URI::HTTPS
56
+ http.use_ssl = true
57
+ http.verify_mode = OpenSSL::SSL::VERIFY_NONE
58
+ end
59
+
60
+ request = Net::HTTP::Get.new( uri.request_uri )
61
+
62
+ ### add (custom) headers if any
63
+ ## check/todo: is there are more idiomatic way for Net::HTTP ???
64
+ ## use
65
+ ## request = Net::HTTP::Get.new( uri.request_uri, headers )
66
+ ## why? why not?
67
+ ## instead of e.g.
68
+ ## request['X-Auth-Token'] = 'xxxxxxx'
69
+ ## request['User-Agent'] = 'ruby'
70
+ ## request['Accept'] = '*/*'
71
+ if headers && headers.size > 0
72
+ headers.each do |key,value|
73
+ request[ key ] = value
74
+ end
75
+ end
76
+
77
+
78
+ response = http.request( request )
79
+
80
+ ## note: return "unified" wrapped response
81
+ Response.new( response )
82
+ end # method self.get
83
+
84
+ end # class Webclient
85
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: webclient
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gerald Bauer
@@ -44,8 +44,8 @@ dependencies:
44
44
  - - "~>"
45
45
  - !ruby/object:Gem::Version
46
46
  version: '3.22'
47
- description: 'webclient gem - yet (another) network client for world wide web (www)
48
- requests '
47
+ description: webclient gem - yet (another) universal network client interface for
48
+ world wide web (www) requests via HTTP
49
49
  email: ruby-talk@ruby-lang.org
50
50
  executables: []
51
51
  extensions: []
@@ -60,7 +60,8 @@ files:
60
60
  - Rakefile
61
61
  - lib/webclient.rb
62
62
  - lib/webclient/version.rb
63
- homepage: https://github.com/rubylibs/fotos
63
+ - lib/webclient/webclient.rb
64
+ homepage: https://github.com/rubycoco/webclient
64
65
  licenses:
65
66
  - Public Domain
66
67
  metadata: {}
@@ -74,7 +75,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
74
75
  requirements:
75
76
  - - ">="
76
77
  - !ruby/object:Gem::Version
77
- version: 1.9.2
78
+ version: 2.2.2
78
79
  required_rubygems_version: !ruby/object:Gem::Requirement
79
80
  requirements:
80
81
  - - ">="
@@ -85,5 +86,6 @@ rubyforge_project:
85
86
  rubygems_version: 2.5.2
86
87
  signing_key:
87
88
  specification_version: 4
88
- summary: webclient gem - yet (another) network client for world wide web (www) requests
89
+ summary: webclient gem - yet (another) universal network client interface for world
90
+ wide web (www) requests via HTTP
89
91
  test_files: []