microsoft_computer_vision 0.1.0 → 0.2.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: 067e72acf9cf7d4c5fb3f98c92bbf2ae79033509
4
- data.tar.gz: e5e9f064142d80e9990c665b52317986e2e194a6
3
+ metadata.gz: f36b1cff970f4eafa24a19dea852152a2636fac2
4
+ data.tar.gz: 022932f1b58a209d7803355a919afb3de408b450
5
5
  SHA512:
6
- metadata.gz: 7c9f9811427d7d5137b243636dd15286bf0ff8eeeb6b4f847acb9e6dc9718a6e083173b8276f1ca380919188b758034a25281eb105af287a0e957a305f368036
7
- data.tar.gz: 11de3dd934a44ea1286b444b5a35d1e29ae5d36954bdfdb665bafa8c817ce1c9d2c06f03d6994a4d56c2675ed1165e3004a81af0b99e264f807e9cca4934b787
6
+ metadata.gz: 5163041e33d342db5d9801ea61678e5b2fafd73375912e46a60c138463fe61af30c79296cc7439f0d3d3269380a0b35c1abda1dfee4c685c6bda20990ceb9432
7
+ data.tar.gz: d1acbc502f9529945fa413fe683252f4c6de334f35fcf7570f23328d764caab9725c8f89425dd7757de1a11e1f6e60bc29d231548044ea8617345cb67b26191c
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --require spec_helper
data/README.md CHANGED
@@ -1,5 +1,8 @@
1
1
  # Microsoft Computer Vision API
2
2
 
3
+ [![Gem Version](https://badge.fury.io/rb/microsoft_computer_vision.svg)](https://badge.fury.io/rb/microsoft_computer_vision)
4
+ [![Build Status](https://travis-ci.org/henteko/microsoft_computer_vision.svg?branch=master)](https://travis-ci.org/henteko/microsoft_computer_vision)
5
+
3
6
  This is a very basic wrapper for the [Microsoft Computer Vision API](https://www.microsoft.com/cognitive-services/en-us/computer-vision-api).
4
7
 
5
8
  ## Installation
@@ -33,7 +36,7 @@ options = {
33
36
  details: 'Celebrities'
34
37
  }
35
38
 
36
- res = client.analyze_image_url('http://example.com/images/test.jpg', options)
39
+ res = client.analyze('http://example.com/images/test.jpg', options)
37
40
  puts res.body
38
41
  ```
39
42
 
data/Rakefile CHANGED
@@ -1 +1,5 @@
1
1
  require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+ task default: :spec
data/bin/mscv ADDED
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'microsoft_computer_vision'
4
+
5
+ MicrosoftComputerVision::CommandBuilder.new().run
data/example/all.rb CHANGED
@@ -4,12 +4,7 @@ require 'json'
4
4
  subscription_key = ENV['SUBSCRIPTION_KEY']
5
5
  @client = MicrosoftComputerVision::Client.new(subscription_key)
6
6
  IMAGE_URL = 'https://www.pakutaso.com/shared/img/thumb/PAK105215431_TP_V.jpg'
7
-
8
- def file_open
9
- File.open(File.expand_path('../test.jpg', __FILE__)) do |image_file|
10
- yield(image_file)
11
- end
12
- end
7
+ IMAGE_FILE_PATH = File.expand_path('../test.jpg', __FILE__)
13
8
 
14
9
  # See: https://dev.projectoxford.ai/docs/services/56f91f2d778daf23d8ec6739/operations/56f91f2e778daf14a499e1fa
15
10
  def analyze
@@ -21,14 +16,12 @@ def analyze
21
16
  }
22
17
 
23
18
  # image url
24
- res = @client.analyze_image_url(IMAGE_URL, options)
19
+ res = @client.analyze(IMAGE_URL, options)
25
20
  puts res.body
26
21
 
27
22
  # image file
28
- file_open do |image_file|
29
- res = @client.analyze_image_file(image_file.read, options)
30
- puts res.body
31
- end
23
+ res = @client.analyze(IMAGE_FILE_PATH, options)
24
+ puts res.body
32
25
  end
33
26
 
34
27
  # See: https://dev.projectoxford.ai/docs/services/56f91f2d778daf23d8ec6739/operations/56f91f2e778daf14a499e1fe
@@ -40,14 +33,12 @@ def describe
40
33
  }
41
34
 
42
35
  # image url
43
- res = @client.describe_image_url(IMAGE_URL, options)
36
+ res = @client.describe(IMAGE_URL, options)
44
37
  puts res.body
45
38
 
46
39
  # image file
47
- file_open do |image_file|
48
- res = @client.describe_image_file(image_file.read, options)
49
- puts res.body
50
- end
40
+ res = @client.describe(IMAGE_FILE_PATH, options)
41
+ puts res.body
51
42
  end
52
43
 
53
44
  # See: https://dev.projectoxford.ai/docs/services/56f91f2d778daf23d8ec6739/operations/56f91f2e778daf14a499e1fb
@@ -61,19 +52,17 @@ def thumbnail
61
52
  }
62
53
 
63
54
  # image url
64
- res = @client.thumbnail_image_url(IMAGE_URL, options)
55
+ res = @client.thumbnail(IMAGE_URL, options)
65
56
  out = File.expand_path('../thumbnail_from_image_url.jpg', __FILE__)
66
57
  File.write out, res.body
67
58
  puts "Created #{out}"
68
59
 
69
60
  # image file
70
- file_open do |image_file|
71
- out = File.expand_path('../thumbnail_from_image_file.jpg', __FILE__)
61
+ out = File.expand_path('../thumbnail_from_image_file.jpg', __FILE__)
72
62
 
73
- res = @client.thumbnail_image_file(image_file.read, options)
74
- File.write out, res.body
75
- puts "Created #{out}"
76
- end
63
+ res = @client.thumbnail(IMAGE_FILE_PATH, options)
64
+ File.write out, res.body
65
+ puts "Created #{out}"
77
66
  end
78
67
 
79
68
  # See: https://dev.projectoxford.ai/docs/services/56f91f2d778daf23d8ec6739/operations/56f91f2e778daf14a499e1fd
@@ -94,14 +83,12 @@ def ocr
94
83
  }
95
84
 
96
85
  # image url
97
- res = @client.ocr_image_url(IMAGE_URL, options)
86
+ res = @client.ocr(IMAGE_URL, options)
98
87
  puts res.body
99
88
 
100
89
  # image file
101
- file_open do |image_file|
102
- res = @client.ocr_image_file(image_file.read, options)
103
- puts res.body
104
- end
90
+ res = @client.ocr(IMAGE_FILE_PATH, options)
91
+ puts res.body
105
92
  end
106
93
 
107
94
  # See: https://dev.projectoxford.ai/docs/services/56f91f2d778daf23d8ec6739/operations/56f91f2e778daf14a499e200
@@ -118,14 +105,12 @@ def domain_model
118
105
  }
119
106
 
120
107
  # image url
121
- res = @client.domain_model_image_url(IMAGE_URL, options)
108
+ res = @client.domain_model(IMAGE_URL, options)
122
109
  puts res.body
123
110
 
124
111
  # image file
125
- file_open do |image_file|
126
- res = @client.domain_model_image_file(image_file.read, options)
127
- puts res.body
128
- end
112
+ res = @client.domain_model(IMAGE_FILE_PATH, options)
113
+ puts res.body
129
114
  end
130
115
 
131
116
  # See: https://dev.projectoxford.ai/docs/services/56f91f2d778daf23d8ec6739/operations/56f91f2e778daf14a499e1ff
@@ -133,14 +118,12 @@ def tag
133
118
  puts 'Tag'
134
119
 
135
120
  # image url
136
- res = @client.tag_image_url(IMAGE_URL)
121
+ res = @client.tag(IMAGE_URL)
137
122
  puts res.body
138
123
 
139
124
  # image file
140
- file_open do |image_file|
141
- res = @client.tag_image_file(image_file.read)
142
- puts res.body
143
- end
125
+ res = @client.tag(IMAGE_FILE_PATH)
126
+ puts res.body
144
127
  end
145
128
 
146
129
  analyze
@@ -1,3 +1,5 @@
1
+ # Docs: https://dev.projectoxford.ai/docs/services/56f91f2d778daf23d8ec6739/operations/56f91f2e778daf14a499e1fa
2
+
1
3
  module MicrosoftComputerVision::Api
2
4
  class Analyze
3
5
 
@@ -17,8 +19,8 @@ module MicrosoftComputerVision::Api
17
19
 
18
20
  def params
19
21
  data = {}
20
- data[:visualFeatures] = @visual_features if @visual_features
21
- data[:details] = @details if @details
22
+ data[:visualFeatures] = @visual_features unless @visual_features.nil?
23
+ data[:details] = @details unless @details.nil?
22
24
 
23
25
  data
24
26
  end
@@ -1,3 +1,5 @@
1
+ # Docs: https://dev.projectoxford.ai/docs/services/56f91f2d778daf23d8ec6739/operations/56f91f2e778daf14a499e1fe
2
+
1
3
  module MicrosoftComputerVision::Api
2
4
  class Describe
3
5
 
@@ -16,7 +18,7 @@ module MicrosoftComputerVision::Api
16
18
 
17
19
  def params
18
20
  data = {}
19
- data[:maxCandidates] = @max_candidates if @max_candidates
21
+ data[:maxCandidates] = @max_candidates unless @max_candidates.nil?
20
22
 
21
23
  data
22
24
  end
@@ -1,3 +1,5 @@
1
+ # Docs: https://dev.projectoxford.ai/docs/services/56f91f2d778daf23d8ec6739/operations/56f91f2e778daf14a499e200
2
+
1
3
  module MicrosoftComputerVision::Api
2
4
  class DomainModel
3
5
 
@@ -1,3 +1,5 @@
1
+ # Docs: https://dev.projectoxford.ai/docs/services/56f91f2d778daf23d8ec6739/operations/56f91f2e778daf14a499e1fd
2
+
1
3
  module MicrosoftComputerVision::Api
2
4
  class DomainModels
3
5
 
@@ -1,3 +1,5 @@
1
+ # Docs: https://dev.projectoxford.ai/docs/services/56f91f2d778daf23d8ec6739/operations/56f91f2e778daf14a499e1fc
2
+
1
3
  module MicrosoftComputerVision::Api
2
4
  class OCR
3
5
 
@@ -17,8 +19,8 @@ module MicrosoftComputerVision::Api
17
19
 
18
20
  def params
19
21
  data = {}
20
- data[:language] = @language if @language
21
- data[:detectOrientation] = @detect_orientation if @detect_orientation
22
+ data[:language] = @language unless @language.nil?
23
+ data[:detectOrientation] = @detect_orientation unless @detect_orientation.nil?
22
24
 
23
25
  data
24
26
  end
@@ -1,3 +1,5 @@
1
+ # Docs: https://dev.projectoxford.ai/docs/services/56f91f2d778daf23d8ec6739/operations/56f91f2e778daf14a499e1ff
2
+
1
3
  module MicrosoftComputerVision::Api
2
4
  class Tag
3
5
 
@@ -1,3 +1,5 @@
1
+ # Docs: https://dev.projectoxford.ai/docs/services/56f91f2d778daf23d8ec6739/operations/56f91f2e778daf14a499e1fb
2
+
1
3
  module MicrosoftComputerVision::Api
2
4
  class Thumbnail
3
5
 
@@ -18,9 +20,9 @@ module MicrosoftComputerVision::Api
18
20
 
19
21
  def params
20
22
  data = {}
21
- data[:width] = @width if @width
22
- data[:height] = @height if @height
23
- data[:smartCropping] = @smart_cropping if @smart_cropping
23
+ data[:width] = @width unless @width.nil?
24
+ data[:height] = @height unless @height.nil?
25
+ data[:smartCropping] = @smart_cropping unless @smart_cropping.nil?
24
26
 
25
27
  data
26
28
  end
@@ -7,116 +7,58 @@ module MicrosoftComputerVision
7
7
  @subscription_key = subscription_key
8
8
  end
9
9
 
10
- ###############################################################################################################
11
- # Analyze
12
- # Docs: https://dev.projectoxford.ai/docs/services/56f91f2d778daf23d8ec6739/operations/56f91f2e778daf14a499e1fa
13
- ###############################################################################################################
14
-
15
- def analyze_image_url(image_url, options)
10
+ def analyze(image_path, options)
16
11
  analyze = Api::Analyze.new(options[:visual_features], options[:details])
17
- post_image_url(analyze.uri, image_url)
12
+ post_image_path(analyze.uri, image_path)
18
13
  end
19
14
 
20
- def analyze_image_file(image_file, options)
21
- analyze = Api::Analyze.new(options[:visual_features], options[:details])
22
- post_image_file(analyze.uri, image_file)
23
- end
24
-
25
- ###############################################################################################################
26
- # Describe
27
- # Docs: https://dev.projectoxford.ai/docs/services/56f91f2d778daf23d8ec6739/operations/56f91f2e778daf14a499e1fe
28
- ###############################################################################################################
29
-
30
- def describe_image_url(image_url, options)
15
+ def describe(image_path, options)
31
16
  describe = Api::Describe.new(options[:max_candidates])
32
- post_image_url(describe.uri, image_url)
33
- end
34
-
35
- def describe_image_file(image_file, options)
36
- describe = Api::Describe.new(options[:max_candidates])
37
- post_image_file(describe.uri, image_file)
38
- end
39
-
40
- ###############################################################################################################
41
- # Thumbnail
42
- # Docs: https://dev.projectoxford.ai/docs/services/56f91f2d778daf23d8ec6739/operations/56f91f2e778daf14a499e1fb
43
- ###############################################################################################################
44
-
45
- def thumbnail_image_url(image_url, options)
46
- thumbnail = Api::Thumbnail.new(options[:width], options[:height], options[:smart_cropping])
47
- post_image_url(thumbnail.uri, image_url)
17
+ post_image_path(describe.uri, image_path)
48
18
  end
49
19
 
50
- def thumbnail_image_file(image_file, options)
20
+ def thumbnail(image_path, options)
51
21
  thumbnail = Api::Thumbnail.new(options[:width], options[:height], options[:smart_cropping])
52
- post_image_file(thumbnail.uri, image_file)
22
+ post_image_path(thumbnail.uri, image_path)
53
23
  end
54
24
 
55
- ###############################################################################################################
56
- # Domain Models
57
- # Docs: https://dev.projectoxford.ai/docs/services/56f91f2d778daf23d8ec6739/operations/56f91f2e778daf14a499e1fd
58
- ###############################################################################################################
59
-
60
25
  def domain_models
61
26
  domain_models = Api::DomainModels.new()
62
27
  get(domain_models.uri, {}.to_json)
63
28
  end
64
29
 
65
- ###############################################################################################################
66
- # Domain Model
67
- # Docs: https://dev.projectoxford.ai/docs/services/56f91f2d778daf23d8ec6739/operations/56f91f2e778daf14a499e200
68
- ###############################################################################################################
69
-
70
- def domain_model_image_url(image_url, options)
30
+ def domain_model(image_path, options)
71
31
  domain_model = Api::DomainModel.new(options[:model])
72
- post_image_url(domain_model.uri, image_url)
32
+ post_image_path(domain_model.uri, image_path)
73
33
  end
74
34
 
75
- def domain_model_image_file(image_file, options)
76
- domain_model = Api::DomainModel.new(options[:model])
77
- post_image_file(domain_model.uri, image_file)
78
- end
79
-
80
- ###############################################################################################################
81
- # OCR
82
- # Docs: https://dev.projectoxford.ai/docs/services/56f91f2d778daf23d8ec6739/operations/56f91f2e778daf14a499e1fc
83
- ###############################################################################################################
84
-
85
- def ocr_image_url(image_url, options)
35
+ def ocr(image_path, options)
86
36
  ocr = Api::OCR.new(options[:language], options[:detect_orientation])
87
- post_image_url(ocr.uri, image_url)
37
+ post_image_path(ocr.uri, image_path)
88
38
  end
89
39
 
90
- def ocr_image_file(image_file, options)
91
- ocr = Api::OCR.new(options[:language], options[:detect_orientation])
92
- post_image_file(ocr.uri, image_file)
93
- end
94
-
95
- ###############################################################################################################
96
- # Tag
97
- # Docs: https://dev.projectoxford.ai/docs/services/56f91f2d778daf23d8ec6739/operations/56f91f2e778daf14a499e1ff
98
- ###############################################################################################################
99
-
100
- def tag_image_url(image_url)
40
+ def tag(image_path)
101
41
  tag = Api::Tag.new()
102
- post_image_url(tag.uri, image_url)
103
- end
104
-
105
- def tag_image_file(image_file)
106
- tag = Api::Tag.new()
107
- post_image_file(tag.uri, image_file)
42
+ post_image_path(tag.uri, image_path)
108
43
  end
109
44
 
110
45
  private
111
46
 
112
- def get(uri, body)
113
- request = Net::HTTP::Get.new(uri.request_uri)
47
+ def post_image_path(uri, image_path)
48
+ image_uri = URI.parse(image_path)
114
49
 
115
- start(uri, body, request)
50
+ case image_uri
51
+ when URI::HTTPS, URI::HTTP
52
+ post_image_url(uri, image_path)
53
+ else
54
+ File.open(image_path) do |image_file|
55
+ post_image_data(uri, image_file.read)
56
+ end
57
+ end
116
58
  end
117
59
 
118
- def post_image_file(uri, image_file)
119
- post(uri, 'application/octet-stream', image_file)
60
+ def post_image_data(uri, image_data)
61
+ post(uri, 'application/octet-stream', image_data)
120
62
  end
121
63
 
122
64
  def post_image_url(uri, image_url)
@@ -130,6 +72,12 @@ module MicrosoftComputerVision
130
72
  start(uri, body, request)
131
73
  end
132
74
 
75
+ def get(uri, body)
76
+ request = Net::HTTP::Get.new(uri.request_uri)
77
+
78
+ start(uri, body, request)
79
+ end
80
+
133
81
  def start(uri, body, request)
134
82
  request['Ocp-Apim-Subscription-Key'] = @subscription_key
135
83
  request.body = body
@@ -0,0 +1,133 @@
1
+ module MicrosoftComputerVision
2
+ class CommandBuilder
3
+ include Commander::Methods
4
+
5
+ def get_subscription_key(options)
6
+ key = options.subscription_key || ENV['SUBSCRIPTION_KEY']
7
+ if key.nil?
8
+ puts 'Please input your Subscription Key (--subscription_key or SUBSCRIPTION_KEY env)'
9
+ exit
10
+ end
11
+
12
+ key
13
+ end
14
+
15
+ def run
16
+ program :name, 'mscv'
17
+ program :version, MicrosoftComputerVision::VERSION
18
+ program :description, 'Microsoft Computer Vision API for cli'
19
+
20
+ command 'analyze' do |c|
21
+ c.syntax = 'mscv analyze /path/to/image'
22
+ c.description = 'Microsoft Computer Vision API Analyze'
23
+ c.option '--subscription_key STRING', String, 'Microsoft Computer Vision API Subscription Key'
24
+ c.option '--visual_features STRING', String, 'visualFeatures param'
25
+ c.option '--details STRING', String, 'details param'
26
+ c.action do |args, options|
27
+ result = MicrosoftComputerVision::Client.new(get_subscription_key(options)).analyze(args.first, {
28
+ visual_features: options.visual_features,
29
+ details: options.details
30
+ })
31
+
32
+ puts result.body
33
+ end
34
+ end
35
+
36
+ command 'describe' do |c|
37
+ c.syntax = 'mscv describe /path/to/image'
38
+ c.description = 'Microsoft Computer Vision API Describe'
39
+ c.option '--subscription_key STRING', String, 'Microsoft Computer Vision API Subscription Key'
40
+ c.option '--max_candidates STRING', String, 'maxCandidates param'
41
+ c.action do |args, options|
42
+ result = MicrosoftComputerVision::Client.new(get_subscription_key(options)).describe(args.first, {
43
+ max_candidates: options.max_candidates
44
+ })
45
+
46
+ puts result.body
47
+ end
48
+ end
49
+
50
+ command 'thumbnail' do |c|
51
+ c.syntax = 'mscv thumbnail /path/to/image'
52
+ c.description = 'Microsoft Computer Vision API Get Thumbnail'
53
+ c.option '--subscription_key STRING', String, 'Microsoft Computer Vision API Subscription Key'
54
+ c.option '--output STRING', String, 'Output thumbnail path'
55
+ c.option '--width INTEGER', Integer, 'width param'
56
+ c.option '--height INTEGER', Integer, 'height param'
57
+ c.option '--smart_cropping BOOLEAN', 'smartCropping param'
58
+ c.action do |args, options|
59
+ options.default smart_cropping: true, output: './out.jpg'
60
+
61
+ if options.width.nil? || options.height.nil?
62
+ puts 'Please input width and height(--width, --height)'
63
+ exit
64
+ end
65
+
66
+ result = MicrosoftComputerVision::Client.new(get_subscription_key(options)).thumbnail(args.first, {
67
+ width: options.width,
68
+ height: options.height,
69
+ smart_cropping: options.smart_cropping
70
+ })
71
+
72
+ File.write options.output, result.body
73
+ puts "Created #{options.output}"
74
+ end
75
+ end
76
+
77
+ command 'ocr' do |c|
78
+ c.syntax = 'mscv ocr /path/to/image'
79
+ c.description = 'Microsoft Computer Vision API OCR'
80
+ c.option '--subscription_key STRING', String, 'Microsoft Computer Vision API Subscription Key'
81
+ c.option '--language STRING', String, 'language param'
82
+ c.option '--detect_orientation', 'detectOrientation param'
83
+ c.action do |args, options|
84
+ options.default detect_orientation: true
85
+ result = MicrosoftComputerVision::Client.new(get_subscription_key(options)).ocr(args.first, {
86
+ language: options.language,
87
+ detect_orientation: options.detect_orientation
88
+ })
89
+
90
+ puts result.body
91
+ end
92
+ end
93
+
94
+ command 'model' do |c|
95
+ c.syntax = 'mscv model /path/to/image'
96
+ c.description = 'Microsoft Computer Vision API Domain Model'
97
+ c.option '--subscription_key STRING', String, 'Microsoft Computer Vision API Subscription Key'
98
+ c.option '--model STRING', String, 'model param'
99
+ c.action do |args, options|
100
+ result = MicrosoftComputerVision::Client.new(get_subscription_key(options)).domain_model(args.first, {
101
+ model: options.model
102
+ })
103
+
104
+ puts result.body
105
+ end
106
+ end
107
+
108
+ command 'tag' do |c|
109
+ c.syntax = 'mscv tag /path/to/image'
110
+ c.description = 'Microsoft Computer Vision API Tag'
111
+ c.option '--subscription_key STRING', String, 'Microsoft Computer Vision API Subscription Key'
112
+ c.action do |args, options|
113
+ result = MicrosoftComputerVision::Client.new(get_subscription_key(options)).tag(args.first)
114
+
115
+ puts result.body
116
+ end
117
+ end
118
+
119
+ command 'models' do |c|
120
+ c.syntax = 'mscv models'
121
+ c.description = 'Microsoft Computer Vision API Domain Models'
122
+ c.option '--subscription_key STRING', String, 'Microsoft Computer Vision API Subscription Key'
123
+ c.action do |args, options|
124
+ result = MicrosoftComputerVision::Client.new(get_subscription_key(options)).domain_models
125
+
126
+ puts result.body
127
+ end
128
+ end
129
+
130
+ run!
131
+ end
132
+ end
133
+ end
@@ -1,3 +1,3 @@
1
1
  module MicrosoftComputerVision
2
- VERSION = '0.1.0'
2
+ VERSION = '0.2.0'
3
3
  end
@@ -1,6 +1,7 @@
1
1
  require 'uri'
2
2
  require 'net/http'
3
3
  require 'json'
4
+ require 'commander'
4
5
 
5
6
  module MicrosoftComputerVision
6
7
  end
@@ -14,3 +15,4 @@ require 'microsoft_computer_vision/api/domain_model'
14
15
  require 'microsoft_computer_vision/api/domain_models'
15
16
  require 'microsoft_computer_vision/api/ocr'
16
17
  require 'microsoft_computer_vision/api/tag'
18
+ require 'microsoft_computer_vision/command_builder'
@@ -12,12 +12,17 @@ Gem::Specification.new do |spec|
12
12
  spec.summary = 'This is a very basic wrapper for the Microsoft Computer Vision API.'
13
13
  spec.description = 'This is a very basic wrapper for the Microsoft Computer Vision API.'
14
14
  spec.homepage = 'https://github.com/henteko/microsoft_computer_vision'
15
+ spec.license = 'MIT'
15
16
 
16
17
  spec.files = `git ls-files`.split($/).reject { |f| f.match(%r{^(test|spec|features)/}) }
17
- spec.bindir = 'exe'
18
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
18
+ spec.bindir = 'bin'
19
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
19
20
  spec.require_paths = ['lib']
20
21
 
22
+ spec.add_dependency 'commander', '~> 4.4.0'
23
+
21
24
  spec.add_development_dependency 'bundler', '~> 1.10'
22
25
  spec.add_development_dependency 'rake', '~> 10.0'
26
+ spec.add_development_dependency 'rspec', '~> 3.4.0'
27
+ spec.add_development_dependency 'webmock', '~> 2.1.0'
23
28
  end
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: microsoft_computer_vision
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - henteko
8
8
  autorequire:
9
- bindir: exe
9
+ bindir: bin
10
10
  cert_chain: []
11
- date: 2016-08-03 00:00:00.000000000 Z
11
+ date: 2016-08-04 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: commander
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 4.4.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 4.4.0
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: bundler
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -38,20 +52,49 @@ dependencies:
38
52
  - - "~>"
39
53
  - !ruby/object:Gem::Version
40
54
  version: '10.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 3.4.0
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 3.4.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: 2.1.0
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 2.1.0
41
83
  description: This is a very basic wrapper for the Microsoft Computer Vision API.
42
84
  email:
43
85
  - henteko07@gmail.com
44
- executables: []
86
+ executables:
87
+ - mscv
45
88
  extensions: []
46
89
  extra_rdoc_files: []
47
90
  files:
48
91
  - ".gitignore"
92
+ - ".rspec"
49
93
  - ".travis.yml"
50
94
  - Gemfile
51
95
  - README.md
52
96
  - Rakefile
53
- - bin/console
54
- - bin/setup
97
+ - bin/mscv
55
98
  - example/all.rb
56
99
  - example/test.jpg
57
100
  - lib/microsoft_computer_vision.rb
@@ -63,10 +106,12 @@ files:
63
106
  - lib/microsoft_computer_vision/api/tag.rb
64
107
  - lib/microsoft_computer_vision/api/thumbnail.rb
65
108
  - lib/microsoft_computer_vision/client.rb
109
+ - lib/microsoft_computer_vision/command_builder.rb
66
110
  - lib/microsoft_computer_vision/version.rb
67
111
  - microsoft_computer_vision.gemspec
68
112
  homepage: https://github.com/henteko/microsoft_computer_vision
69
- licenses: []
113
+ licenses:
114
+ - MIT
70
115
  metadata: {}
71
116
  post_install_message:
72
117
  rdoc_options: []
data/bin/console DELETED
@@ -1,14 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require 'bundler/setup'
4
- require 'microsoft_computer_vision'
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
data/bin/setup DELETED
@@ -1,7 +0,0 @@
1
- #!/bin/bash
2
- set -euo pipefail
3
- IFS=$'\n\t'
4
-
5
- bundle install
6
-
7
- # Do any other automated setup that you need to do here