github_markdown_api 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d914dac7a1db4e9a8d926e7786f7b555ca81613a
4
- data.tar.gz: 2f8a4a7e1333fcc78f27890875dc80f1853d44fd
3
+ metadata.gz: b0f51deadfe6eb8a74ec96e94c26032aa15e4732
4
+ data.tar.gz: 9de0644d7834a2a2543e54ebc34c8386bc8e5704
5
5
  SHA512:
6
- metadata.gz: d30dd29cc4fb70bbff25dfb8de2f96cffefb30b983cdc0b3234cf9b0360627f3f7cd4f9fd5200bc42ebd9b5418e63d63fa19cfe172c396206d16bb94523034ea
7
- data.tar.gz: 559747ada9b2946fa967a1cdb26e26e6a93ac05f97c569812423d64a9182448d4c21cf89fd6b0c8245b92d56409bf5616eb9b98675a08f9a9b96979109e6c4b0
6
+ metadata.gz: 397ef2cdb9b4a14cc48aefc52c97399cfd8182b9fbbf481139b8cfa6f645fe4e2e9bb23b59a6e85f92aaa7776bbbb483fa82bafcd484fc716818c56d3f245bd6
7
+ data.tar.gz: f0e18d25d97014f59a7967d3145c13f39b2eb78190e12a6c7c3e19be52b21d17af58db8f11cb9eda0ff88a8d63863bf459298179e2cc9e224b79c8a7393db9c0
data/.yardopts ADDED
@@ -0,0 +1 @@
1
+ --markup markdown
data/README.md CHANGED
@@ -21,6 +21,8 @@ Or install it yourself as:
21
21
  Usage
22
22
  -----
23
23
 
24
+ ### Raw API
25
+
24
26
  In ruby script:
25
27
 
26
28
  ```ruby
@@ -30,7 +32,7 @@ md = <<EOM
30
32
  AWESOME SCRIPT
31
33
  ==============
32
34
 
33
- It's a wonderful markup languages!
35
+ It's a wonderful markup language!
34
36
 
35
37
  * Markdown
36
38
  * reStructuredText
@@ -44,7 +46,7 @@ puts html
44
46
  # <h1>
45
47
  # <a name="awesome-script" class="anchor" href="#awesome-script"><span class="octicon octicon-link"></span></a>AWESOME SCRIPT</h1>
46
48
  #
47
- # <p>It's a wonderful markup languages!</p>
49
+ # <p>It's a wonderful markup language!</p>
48
50
  #
49
51
  # <ul>
50
52
  # <li>Markdown</li>
@@ -59,7 +61,7 @@ In command-line:
59
61
  AWESOME SCRIPT
60
62
  ==============
61
63
 
62
- It's a wonderful markup languages!
64
+ It's a wonderful markup language!
63
65
 
64
66
  * Markdown
65
67
  * reStructuredText
@@ -69,7 +71,7 @@ It's a wonderful markup languages!
69
71
  <h1>
70
72
  <a name="awesome-script" class="anchor" href="#awesome-script"><span class="octicon octicon-link"></span></a>AWESOME SCRIPT</h1>
71
73
 
72
- <p>It's a wonderful markup languages!</p>
74
+ <p>It's a wonderful markup language!</p>
73
75
 
74
76
  <ul>
75
77
  <li>Markdown</li>
@@ -77,6 +79,10 @@ It's a wonderful markup languages!
77
79
  </ul>
78
80
  ```
79
81
 
82
+ ### Attr API
83
+
84
+
85
+
80
86
  ### Advansed
81
87
 
82
88
  ```
@@ -2,4 +2,4 @@
2
2
 
3
3
  require 'github_markdown_api'
4
4
 
5
- puts GitHubMarkdownAPI::Client.new.raw(ARGF.read)
5
+ puts GitHubMarkdownAPI::Raw::render(ARGF.read) rescue abort $!.inspect
@@ -11,13 +11,14 @@ Gem::Specification.new do |spec|
11
11
  spec.description = %q{GitHub Markdown API client and command-line tool}
12
12
  spec.summary = %q{}
13
13
  spec.homepage = "http://dt.zonu.me/"
14
- spec.licenses = %w[GPLv3 NYSL]
14
+ spec.licenses = %w[LGPLv3 NYSL]
15
15
 
16
16
  spec.files = `git ls-files`.split($/)
17
17
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
+ spec.add_dependency 'hashize'
21
22
  spec.add_development_dependency "bundler", "~> 1.3"
22
23
  spec.add_development_dependency "rake"
23
24
  end
@@ -0,0 +1,111 @@
1
+ require 'uri'
2
+ require 'net/https'
3
+ require 'github_markdown_api/version'
4
+
5
+ # Abstract class of API Clients
6
+ # @abstract
7
+ class GitHubMarkdownAPI::APIClient
8
+ # @param [Hash,String] args
9
+ def initialize (args = {}, sub_args = {})
10
+ case args
11
+ when Hash
12
+ set_option args
13
+ when String
14
+ # pending
15
+ end
16
+ end
17
+
18
+ attr_reader :last_response
19
+
20
+ # @return [Symbol] Scheme of API
21
+ # @note `:http` of `:https`
22
+ attr_accessor :scheme
23
+
24
+ # @return [String] Hostname
25
+ attr_accessor :host
26
+
27
+ # @return [Fixnum] Port number
28
+ attr_accessor :port
29
+
30
+ # @return [Hash] Endpoint (Server path of API)
31
+ attr_accessor :endpoints
32
+
33
+ # @return [String] HTTP ContentType
34
+ attr_accessor :content_type
35
+
36
+ # @param [Hash] args
37
+ # @return [self]
38
+ def set_option (args)
39
+ option = default_options.merge(args)
40
+ @scheme = option[:scheme].intern
41
+ @host = option[:host].to_s
42
+ @port = option[:port]
43
+ @endpoints = option[:endpoints].to_hash
44
+ @content_type = option[:content_type].to_s
45
+ return self
46
+ end
47
+
48
+ # Returns hash of default options
49
+ # @return [Hash]
50
+ def default_options
51
+ return {
52
+ scheme: GitHubMarkdownAPI::DEFAULT_SCHEME,
53
+ host: GitHubMarkdownAPI::DEFAULT_HOST,
54
+ port: GitHubMarkdownAPI::DEFAULT_PORT,
55
+ endpoints: GitHubMarkdownAPI::DEFAULT_ENDPOINTS,
56
+ auth: GitHubMarkdownAPI::DEFAULT_AUTH,
57
+ content_type: GitHubMarkdownAPI::DEFAULT_CONTENT_TYPE,
58
+ }
59
+ end
60
+
61
+ # Requests API
62
+ # @param [URI] raw_uri
63
+ # @param [Hash] request
64
+ # @return [String]
65
+ def request (raw_uri, post)
66
+ http = Net::HTTP.new(raw_uri.host, raw_uri.port)
67
+ if @scheme == :https
68
+ http.use_ssl = true
69
+ http.verify_mode = OpenSSL::SSL::VERIFY_PEER
70
+ end
71
+
72
+ response = http.start{ http.request post }
73
+ @last_response = response
74
+
75
+ case response
76
+ when Net::HTTPSuccess
77
+ return response.body
78
+ else
79
+ raise RuntimeError, response
80
+ end
81
+ end
82
+
83
+ # Renders HTML from Markdown
84
+ # @param [String] markdown
85
+ # @abstract
86
+ def render (markdown)
87
+ raise NotImplementedError, "#{__method__} is a abstract method."
88
+ end
89
+
90
+ # Returns endpoint of API type
91
+ # @param [Symbol,#to_sym] type
92
+ # @return [URI]
93
+ def endpoint (type)
94
+ path = @endpoints[type.to_sym]
95
+ klass = case @scheme
96
+ when :http; URI::HTTP
97
+ when :https; URI::HTTPS
98
+ end
99
+ param = {
100
+ host: @host,
101
+ path: path,
102
+ }
103
+ param[:port] = @port || 443
104
+
105
+ return klass.build(param)
106
+ end
107
+
108
+ def self.render (markdown)
109
+ return self.new.render markdown
110
+ end
111
+ end
@@ -0,0 +1,20 @@
1
+ require 'uri'
2
+ require 'net/https'
3
+ require 'github_markdown_api/version'
4
+ require 'github_markdown_api/api_client'
5
+
6
+ # Client implementation of Markdown Raw API
7
+ class GitHubMarkdownAPI::Raw < GitHubMarkdownAPI::APIClient
8
+ # @param [String] markdown
9
+ # @return [String]
10
+ def render (markdown)
11
+ raw_uri = endpoint(:raw)
12
+ header = {
13
+ 'Content-Type' => @content_type
14
+ }
15
+ post = Net::HTTP::Post.new(raw_uri, header)
16
+ post.body = markdown
17
+
18
+ return request(raw_uri, post)
19
+ end
20
+ end
@@ -1,3 +1,5 @@
1
+ # Namespace of github_markdown_api gem
1
2
  module GitHubMarkdownAPI
2
- VERSION = '0.0.1'
3
+ # Version number of github_markdown_api gem
4
+ VERSION = '0.0.2'
3
5
  end
@@ -1,5 +1,5 @@
1
1
  require 'github_markdown_api/version'
2
- require 'github_markdown_api/client'
2
+ require 'github_markdown_api/raw'
3
3
 
4
4
  module GitHubMarkdownAPI
5
5
  DEFAULT_SCHEME = :https
metadata CHANGED
@@ -1,41 +1,55 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: github_markdown_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - USAMI Kenta
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-10-27 00:00:00.000000000 Z
11
+ date: 2014-01-25 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: hashize
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: bundler
15
29
  requirement: !ruby/object:Gem::Requirement
16
30
  requirements:
17
- - - ~>
31
+ - - "~>"
18
32
  - !ruby/object:Gem::Version
19
33
  version: '1.3'
20
34
  type: :development
21
35
  prerelease: false
22
36
  version_requirements: !ruby/object:Gem::Requirement
23
37
  requirements:
24
- - - ~>
38
+ - - "~>"
25
39
  - !ruby/object:Gem::Version
26
40
  version: '1.3'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: rake
29
43
  requirement: !ruby/object:Gem::Requirement
30
44
  requirements:
31
- - - '>='
45
+ - - ">="
32
46
  - !ruby/object:Gem::Version
33
47
  version: '0'
34
48
  type: :development
35
49
  prerelease: false
36
50
  version_requirements: !ruby/object:Gem::Requirement
37
51
  requirements:
38
- - - '>='
52
+ - - ">="
39
53
  - !ruby/object:Gem::Version
40
54
  version: '0'
41
55
  description: GitHub Markdown API client and command-line tool
@@ -46,7 +60,8 @@ executables:
46
60
  extensions: []
47
61
  extra_rdoc_files: []
48
62
  files:
49
- - .gitignore
63
+ - ".gitignore"
64
+ - ".yardopts"
50
65
  - Gemfile
51
66
  - LICENSE.md
52
67
  - README.md
@@ -54,11 +69,12 @@ files:
54
69
  - bin/github_markdown_api
55
70
  - github_markdown_api.gemspec
56
71
  - lib/github_markdown_api.rb
57
- - lib/github_markdown_api/client.rb
72
+ - lib/github_markdown_api/api_client.rb
73
+ - lib/github_markdown_api/raw.rb
58
74
  - lib/github_markdown_api/version.rb
59
75
  homepage: http://dt.zonu.me/
60
76
  licenses:
61
- - GPLv3
77
+ - LGPLv3
62
78
  - NYSL
63
79
  metadata: {}
64
80
  post_install_message:
@@ -67,17 +83,17 @@ require_paths:
67
83
  - lib
68
84
  required_ruby_version: !ruby/object:Gem::Requirement
69
85
  requirements:
70
- - - '>='
86
+ - - ">="
71
87
  - !ruby/object:Gem::Version
72
88
  version: '0'
73
89
  required_rubygems_version: !ruby/object:Gem::Requirement
74
90
  requirements:
75
- - - '>='
91
+ - - ">="
76
92
  - !ruby/object:Gem::Version
77
93
  version: '0'
78
94
  requirements: []
79
95
  rubyforge_project:
80
- rubygems_version: 2.0.6
96
+ rubygems_version: 2.2.1
81
97
  signing_key:
82
98
  specification_version: 4
83
99
  summary: ''
@@ -1,79 +0,0 @@
1
- require 'uri'
2
- require 'net/https'
3
- require 'github_markdown_api/version'
4
-
5
- class GitHubMarkdownAPI::Client
6
- # @param [Hash] args
7
- def initialize (args = {})
8
- set_option args
9
- end
10
-
11
- attr_reader :last_response
12
-
13
- def render
14
-
15
- end
16
-
17
- # @param [Hash] args
18
- # @return []
19
- def set_option (args)
20
- option = default_options.merge(args)
21
- @scheme = option[:scheme].intern
22
- @host = option[:host].to_s
23
- @port = option[:port].to_i
24
- @endpoints = option[:endpoints].to_hash
25
- @content_type = option[:content_type].to_s
26
- return self
27
- end
28
-
29
- # @return [Hash]
30
- def default_options
31
- return {
32
- scheme: GitHubMarkdownAPI::DEFAULT_SCHEME,
33
- host: GitHubMarkdownAPI::DEFAULT_HOST,
34
- port: GitHubMarkdownAPI::DEFAULT_PORT,
35
- endpoints: GitHubMarkdownAPI::DEFAULT_ENDPOINTS,
36
- auth: GitHubMarkdownAPI::DEFAULT_AUTH,
37
- content_type: GitHubMarkdownAPI::DEFAULT_CONTENT_TYPE,
38
- }
39
- end
40
-
41
- # @param [String] markdown
42
- # @return [String]
43
- def raw (markdown)
44
- raw_uri = endpoint(:raw)
45
- header = {
46
- 'Content-Type' => @content_type
47
- }
48
- post = Net::HTTP::Post.new(raw_uri, header)
49
- post.body = markdown
50
-
51
- request = Net::HTTP.new(raw_uri.host, raw_uri.port)
52
- if @scheme == :https
53
- request.use_ssl = true
54
- request.verify_mode = OpenSSL::SSL::VERIFY_PEER
55
- end
56
-
57
- response = request.start{|http| http.request(post) }
58
- @last_response = response
59
-
60
- case response
61
- when Net::HTTPSuccess
62
- return response.body
63
- else
64
- raise RuntimeError, response
65
- end
66
- end
67
-
68
- # @param [Symbol,#to_sym]
69
- # @return [URI]
70
- def endpoint(type)
71
- path = @endpoints[type.to_sym]
72
- klass = case @scheme
73
- when :http; URI::HTTP
74
- when :https; URI::HTTPS
75
- end
76
- uri = klass.build(host: @host, path: path, port: @port)
77
- return uri
78
- end
79
- end