cropio-ruby 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 +7 -0
- data/.gitignore +9 -0
- data/.rspec +2 -0
- data/.travis.yml +4 -0
- data/Gemfile +4 -0
- data/README.md +38 -0
- data/Rakefile +1 -0
- data/bin/console +7 -0
- data/bin/login +19 -0
- data/bin/setup +7 -0
- data/cropio-ruby.gemspec +28 -0
- data/lib/cropio/connection/authenticable.rb +61 -0
- data/lib/cropio/connection/configurable.rb +24 -0
- data/lib/cropio/connection/proxiable.rb +57 -0
- data/lib/cropio/connection/proxy.rb +11 -0
- data/lib/cropio/connection.rb +9 -0
- data/lib/cropio/misc/string_inflector.rb +23 -0
- data/lib/cropio/misc.rb +1 -0
- data/lib/cropio/resource/attributes.rb +74 -0
- data/lib/cropio/resource/base.rb +96 -0
- data/lib/cropio/resource.rb +7 -0
- data/lib/cropio/resources/additional_object.rb +6 -0
- data/lib/cropio/resources/agri_work_plan.rb +6 -0
- data/lib/cropio/resources/agri_work_plan_application_mix_item.rb +6 -0
- data/lib/cropio/resources/agro_operation.rb +6 -0
- data/lib/cropio/resources/application_mix_item.rb +6 -0
- data/lib/cropio/resources/avatar.rb +6 -0
- data/lib/cropio/resources/chemical.rb +6 -0
- data/lib/cropio/resources/crop.rb +6 -0
- data/lib/cropio/resources/fertilizer.rb +6 -0
- data/lib/cropio/resources/field.rb +6 -0
- data/lib/cropio/resources/field_group.rb +6 -0
- data/lib/cropio/resources/field_scout_report.rb +6 -0
- data/lib/cropio/resources/field_scout_report_threat_mapping_item.rb +6 -0
- data/lib/cropio/resources/field_shape.rb +6 -0
- data/lib/cropio/resources/group_folder.rb +6 -0
- data/lib/cropio/resources/harvest_weighing.rb +6 -0
- data/lib/cropio/resources/historical_value.rb +6 -0
- data/lib/cropio/resources/history_item.rb +6 -0
- data/lib/cropio/resources/implement.rb +6 -0
- data/lib/cropio/resources/machine.rb +6 -0
- data/lib/cropio/resources/machine_group.rb +6 -0
- data/lib/cropio/resources/machine_task.rb +6 -0
- data/lib/cropio/resources/machine_task_agro_operation_mapping_item.rb +6 -0
- data/lib/cropio/resources/note.rb +6 -0
- data/lib/cropio/resources/plant_threat.rb +6 -0
- data/lib/cropio/resources/satellite_image.rb +6 -0
- data/lib/cropio/resources/seed.rb +6 -0
- data/lib/cropio/resources/user.rb +6 -0
- data/lib/cropio/resources.rb +33 -0
- data/lib/cropio/version.rb +3 -0
- data/lib/cropio.rb +23 -0
- metadata +178 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 25080162e2321540d9afef974e98a51a4c47dc05
|
4
|
+
data.tar.gz: b855bcb0aa6ff3dc79d3f736d9da56646efc2ae1
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: f70244336a238b35fcbdb552edbcf5f962de80d91aafbdb64a673f8abc39f748b8212242f372e0d331a5633e24d4d2b0bb2a0db617d1b6bb703eb349c10abac1
|
7
|
+
data.tar.gz: 8bc77ab8e26b55f5a4bb222db8e475ddc7a6bd2424f44fa9c6d50087ded61f1cfce89cf9075c5700d7404bdaec072870edfe3e51d7e87b188b95a09214bffa91
|
data/.gitignore
ADDED
data/.rspec
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
# Cropio::Ruby
|
2
|
+
|
3
|
+
Cropio-Ruby provides simple ActiveRecord-like wrappings for Cropio API.
|
4
|
+
Currently it supports [Cropio APIv3](http://docs.cropioapiv3.apiary.io/).
|
5
|
+
|
6
|
+
## Installation
|
7
|
+
|
8
|
+
Add this line to your application's Gemfile:
|
9
|
+
|
10
|
+
```ruby
|
11
|
+
gem 'cropio-ruby'
|
12
|
+
```
|
13
|
+
|
14
|
+
And then execute:
|
15
|
+
|
16
|
+
$ bundle
|
17
|
+
|
18
|
+
Or install it yourself as:
|
19
|
+
|
20
|
+
$ gem install cropio-ruby
|
21
|
+
|
22
|
+
## Usage
|
23
|
+
|
24
|
+
You
|
25
|
+
|
26
|
+
## Development
|
27
|
+
|
28
|
+
After checking out the repo, run `bin/setup` to install dependencies. Then, run `bin/console` for an interactive prompt that will allow you to experiment.
|
29
|
+
|
30
|
+
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release` to create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
31
|
+
|
32
|
+
## Contributing
|
33
|
+
|
34
|
+
1. Fork it ( https://github.com/cropio/cropio-ruby/fork )
|
35
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
36
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
37
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
38
|
+
5. Create a new Pull Request
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
data/bin/console
ADDED
data/bin/login
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "bundler/setup"
|
4
|
+
require "byebug"
|
5
|
+
require "cropio"
|
6
|
+
|
7
|
+
require "pry"
|
8
|
+
|
9
|
+
Cropio.credentials = {}.tap do |c|
|
10
|
+
print "Enter your Cropio email: "
|
11
|
+
c[:email] = STDIN.gets.chomp
|
12
|
+
|
13
|
+
print "Entrer your Cropio password: "
|
14
|
+
c[:password] = STDIN.noecho(&:gets).chomp
|
15
|
+
|
16
|
+
puts
|
17
|
+
end
|
18
|
+
|
19
|
+
Pry.start
|
data/bin/setup
ADDED
data/cropio-ruby.gemspec
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'cropio/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "cropio-ruby"
|
8
|
+
spec.version = Cropio::VERSION
|
9
|
+
spec.authors = ["Sergey Vernidub"]
|
10
|
+
spec.email = ["info@cropio.com"]
|
11
|
+
|
12
|
+
spec.summary = %q{Cropio API bindings for Ruby}
|
13
|
+
spec.description = %q{Cropio-Ruby provides simple ActiveRecord-like wrappings for Cropio API}
|
14
|
+
spec.homepage = "https://cropio.com"
|
15
|
+
|
16
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
17
|
+
spec.bindir = "exe"
|
18
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
19
|
+
spec.require_paths = ["lib"]
|
20
|
+
|
21
|
+
spec.add_dependency 'json'
|
22
|
+
spec.add_dependency 'rest-client'
|
23
|
+
|
24
|
+
spec.add_development_dependency "bundler", "~> 1.9"
|
25
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
26
|
+
spec.add_development_dependency "pry"
|
27
|
+
spec.add_development_dependency "byebug"
|
28
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
module Cropio
|
2
|
+
module Connection
|
3
|
+
module Authenticable
|
4
|
+
def authenticate!
|
5
|
+
auth_request
|
6
|
+
end
|
7
|
+
|
8
|
+
protected
|
9
|
+
|
10
|
+
def authenticate_before(*methods)
|
11
|
+
methods.each do |method_name|
|
12
|
+
unauthentificated_method = method(method_name)
|
13
|
+
singleton_class.send(:define_method, method_name) do |*args|
|
14
|
+
authenticate! if !authenticated?
|
15
|
+
unauthentificated_method.call(*args)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def auth_request
|
21
|
+
process_result RestClient.post(url_for('sign_in'),
|
22
|
+
auth_request_params.to_json,
|
23
|
+
authentication_headers)
|
24
|
+
rescue RestClient::Unauthorized => e
|
25
|
+
process_result(e.http_body)
|
26
|
+
end
|
27
|
+
|
28
|
+
def process_result(result)
|
29
|
+
result = JSON.parse(result)
|
30
|
+
|
31
|
+
if result['success']
|
32
|
+
Cropio.credentials.api_token = result['user_api_token']
|
33
|
+
true
|
34
|
+
else
|
35
|
+
fail 'Access to Cropio denied.'
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def auth_request_params
|
40
|
+
{
|
41
|
+
user_login: {
|
42
|
+
email: Cropio.credentials.email,
|
43
|
+
password: Cropio.credentials.password
|
44
|
+
}
|
45
|
+
}
|
46
|
+
rescue NoMethodError => e
|
47
|
+
if %i(email password).include?(e.name)
|
48
|
+
fail "Cropio credentials is not specified: #{e.name}"
|
49
|
+
else
|
50
|
+
raise e
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def authenticated?
|
55
|
+
!Cropio.credentials.api_token.nil?
|
56
|
+
rescue NoMethodError => e
|
57
|
+
e.name == :api_token ? false : raise(e)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Cropio
|
2
|
+
module Connection
|
3
|
+
module Configurable
|
4
|
+
|
5
|
+
BASE_URL = 'https://cropio.com/api/v3'
|
6
|
+
|
7
|
+
protected
|
8
|
+
|
9
|
+
def headers
|
10
|
+
authenticated? ? authenticated_headers : authentication_headers
|
11
|
+
end
|
12
|
+
|
13
|
+
def authentication_headers
|
14
|
+
{ content_type: :json, accept: :json }
|
15
|
+
end
|
16
|
+
|
17
|
+
def authenticated_headers
|
18
|
+
authentication_headers.merge({
|
19
|
+
'X-User-Api-Token' => Cropio.credentials.api_token
|
20
|
+
})
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
require'rest-client'
|
2
|
+
|
3
|
+
module Cropio
|
4
|
+
module Connection
|
5
|
+
module Proxiable
|
6
|
+
def get(resource, query={})
|
7
|
+
proxy(method: :get, url: url_for(resource), headers: {params: query})
|
8
|
+
end
|
9
|
+
|
10
|
+
def post(resource, data)
|
11
|
+
proxy(method: :post, url: url_for(resource), data: data)
|
12
|
+
end
|
13
|
+
|
14
|
+
def patch(resource, data)
|
15
|
+
proxy(method: :patch, url: url_for(resource), data: data)
|
16
|
+
end
|
17
|
+
|
18
|
+
def delete(resource)
|
19
|
+
proxy(method: :delete, url: url_for(resource))
|
20
|
+
end
|
21
|
+
|
22
|
+
protected
|
23
|
+
|
24
|
+
def url_for(resource)
|
25
|
+
"#{Cropio::Connection::Configurable::BASE_URL}/#{resource}"
|
26
|
+
end
|
27
|
+
|
28
|
+
def proxy(options)
|
29
|
+
options[:headers] ||= {}
|
30
|
+
options[:headers].merge!(headers)
|
31
|
+
res = send("proxy_#{options[:method]}", options)
|
32
|
+
options[:method].eql?(:delete) ? res : JSON.parse(res)
|
33
|
+
rescue RestClient::UnprocessableEntity => e
|
34
|
+
puts JSON.parse(e.http_body)
|
35
|
+
raise e
|
36
|
+
end
|
37
|
+
|
38
|
+
def proxy_get(options)
|
39
|
+
RestClient::Request.execute(options)
|
40
|
+
end
|
41
|
+
|
42
|
+
def proxy_post(options)
|
43
|
+
RestClient.post(options[:url],
|
44
|
+
{data: options[:data]}, options[:headers])
|
45
|
+
end
|
46
|
+
|
47
|
+
def proxy_patch(options)
|
48
|
+
RestClient.patch(options[:url],
|
49
|
+
{data: options[:data]}, options[:headers])
|
50
|
+
end
|
51
|
+
|
52
|
+
def proxy_delete(options)
|
53
|
+
RestClient.delete(options[:url], options[:headers])
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Cropio
|
2
|
+
class StringInflector
|
3
|
+
class << self
|
4
|
+
def underscore(string)
|
5
|
+
string
|
6
|
+
.gsub(/::/, '/')
|
7
|
+
.gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2')
|
8
|
+
.gsub(/([a-z\d])([A-Z])/,'\1_\2')
|
9
|
+
.tr("-", "_")
|
10
|
+
.downcase
|
11
|
+
end
|
12
|
+
|
13
|
+
# simple implementation - for resources plural form only
|
14
|
+
def pluralize(string)
|
15
|
+
if string[-1] == 'y'
|
16
|
+
"#{ string[0..(string.length - 2)] }ies"
|
17
|
+
else
|
18
|
+
"#{ string }s"
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
data/lib/cropio/misc.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require_relative './misc/string_inflector'
|
@@ -0,0 +1,74 @@
|
|
1
|
+
module Cropio
|
2
|
+
module Resource
|
3
|
+
module Attributes
|
4
|
+
def self.included(base)
|
5
|
+
base.send(:attr_accessor, :attributes)
|
6
|
+
end
|
7
|
+
|
8
|
+
protected
|
9
|
+
|
10
|
+
def attributes
|
11
|
+
@attributes ||= {}
|
12
|
+
end
|
13
|
+
|
14
|
+
def attributes=(val)
|
15
|
+
@attributes = val
|
16
|
+
end
|
17
|
+
|
18
|
+
def define_attributes_accessors
|
19
|
+
attributes.each_key do |attribute_name|
|
20
|
+
next if attribute_defined?(attribute_name)
|
21
|
+
define_attribute_getter(attribute_name)
|
22
|
+
define_attribute_setter(attribute_name)
|
23
|
+
define_attribute_question(attribute_name)
|
24
|
+
defined!(attribute_name)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def attribute_defined?(attribute_name)
|
29
|
+
@defined_attr ||= {}
|
30
|
+
@defined_attr[attribute_name] ||= false
|
31
|
+
end
|
32
|
+
|
33
|
+
def defined!(attribute_name)
|
34
|
+
@defined_attr ||= {}
|
35
|
+
@defined_attr[attribute_name] = true
|
36
|
+
end
|
37
|
+
|
38
|
+
def define_attribute_getter(attribute_name)
|
39
|
+
eval "
|
40
|
+
def #{attribute_name}
|
41
|
+
attributes['#{attribute_name}']
|
42
|
+
end
|
43
|
+
"
|
44
|
+
end
|
45
|
+
|
46
|
+
def define_attribute_setter(attribute_name)
|
47
|
+
eval "
|
48
|
+
def #{attribute_name}=(val)
|
49
|
+
attributes['#{attribute_name}'] = val
|
50
|
+
end
|
51
|
+
"
|
52
|
+
end
|
53
|
+
|
54
|
+
def define_attribute_question(attribute_name)
|
55
|
+
eval "
|
56
|
+
def #{attribute_name}?
|
57
|
+
!attributes['#{attribute_name}'].nil?
|
58
|
+
end
|
59
|
+
"
|
60
|
+
end
|
61
|
+
|
62
|
+
def method_missing(name, *attrs, &block)
|
63
|
+
name = name.to_s
|
64
|
+
attr_name = name.gsub('=', '')
|
65
|
+
if attributes.has_key?(attr_name)
|
66
|
+
define_attributes_accessors
|
67
|
+
name == attr_name ? send(name) : send(name, attrs.first)
|
68
|
+
else
|
69
|
+
super
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
@@ -0,0 +1,96 @@
|
|
1
|
+
module Cropio
|
2
|
+
module Resource
|
3
|
+
class Base
|
4
|
+
include Attributes
|
5
|
+
|
6
|
+
Proxy = Cropio::Connection::Proxy
|
7
|
+
Limit = 1000
|
8
|
+
|
9
|
+
def initialize(attributes={})
|
10
|
+
self.attributes = attributes
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.resource_name
|
14
|
+
@resource_name ||= StringInflector.underscore(name.split('::').last)
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.resources_name
|
18
|
+
@resources_name ||= StringInflector.pluralize(resource_name)
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.all
|
22
|
+
to_instances(get_all_chunks)
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.count
|
26
|
+
all.count
|
27
|
+
end
|
28
|
+
|
29
|
+
def self.select(options={})
|
30
|
+
end
|
31
|
+
|
32
|
+
def persisted?
|
33
|
+
if @persisted.nil?
|
34
|
+
@persisted = false
|
35
|
+
end
|
36
|
+
|
37
|
+
@persisted
|
38
|
+
end
|
39
|
+
|
40
|
+
def save
|
41
|
+
self.attributes = if persisted?
|
42
|
+
Proxy.patch("#{resources_name}/#{id}", attributes)
|
43
|
+
else
|
44
|
+
@persisted = true
|
45
|
+
Proxy.post(resources_name, attributes)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
private
|
50
|
+
def resources_name
|
51
|
+
self.class.resources_name
|
52
|
+
end
|
53
|
+
|
54
|
+
def self.get_all_chunks(options={})
|
55
|
+
response = nil
|
56
|
+
buffer = []
|
57
|
+
limit = options[:limit] || (2 ** 32 - 1)
|
58
|
+
while is_data?(response) && limit > 0
|
59
|
+
chunk_size = limit < Limit ? limit : Limit
|
60
|
+
limit -= chunk_size
|
61
|
+
offset = buffer.any? ? buffer.last['id'] + 1 : 0
|
62
|
+
response = get_chunk(limit: chunk_size, from_id: offset)
|
63
|
+
buffer += response['data']
|
64
|
+
end
|
65
|
+
buffer
|
66
|
+
end
|
67
|
+
|
68
|
+
def self.is_data?(response=nil)
|
69
|
+
if response.nil?
|
70
|
+
true
|
71
|
+
else
|
72
|
+
response['meta']['response']['obtained_records'].nonzero?
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
def self.get_chunk(options)
|
77
|
+
Proxy.get(resources_name, limit: options[:limit],
|
78
|
+
from_id: options[:from_id])
|
79
|
+
end
|
80
|
+
|
81
|
+
def self.to_instances(attr_sets)
|
82
|
+
attr_sets.map do |attr_set|
|
83
|
+
to_instance(attr_set)
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
def self.to_instance(attr_set)
|
88
|
+
new(attr_set).tap do |resource|
|
89
|
+
resource.instance_eval do
|
90
|
+
@persisted = true
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require_relative './resources/additional_object'
|
2
|
+
require_relative './resources/agri_work_plan_application_mix_item'
|
3
|
+
require_relative './resources/agri_work_plan'
|
4
|
+
require_relative './resources/agro_operation'
|
5
|
+
require_relative './resources/application_mix_item'
|
6
|
+
require_relative './resources/avatar'
|
7
|
+
require_relative './resources/chemical'
|
8
|
+
require_relative './resources/crop'
|
9
|
+
require_relative './resources/fertilizer'
|
10
|
+
require_relative './resources/field_group'
|
11
|
+
require_relative './resources/field'
|
12
|
+
require_relative './resources/field_scout_report'
|
13
|
+
require_relative './resources/field_scout_report_threat_mapping_item'
|
14
|
+
require_relative './resources/field_shape'
|
15
|
+
require_relative './resources/group_folder'
|
16
|
+
require_relative './resources/harvest_weighing'
|
17
|
+
require_relative './resources/historical_value'
|
18
|
+
require_relative './resources/history_item'
|
19
|
+
require_relative './resources/implement'
|
20
|
+
require_relative './resources/machine_group'
|
21
|
+
require_relative './resources/machine'
|
22
|
+
require_relative './resources/machine_task_agro_operation_mapping_item'
|
23
|
+
require_relative './resources/machine_task'
|
24
|
+
require_relative './resources/note'
|
25
|
+
require_relative './resources/plant_threat'
|
26
|
+
require_relative './resources/satellite_image'
|
27
|
+
require_relative './resources/seed'
|
28
|
+
require_relative './resources/user'
|
29
|
+
|
30
|
+
module Cropio
|
31
|
+
module CropioResources
|
32
|
+
end
|
33
|
+
end
|
data/lib/cropio.rb
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'ostruct'
|
2
|
+
require 'cropio/misc'
|
3
|
+
require 'cropio/version'
|
4
|
+
require 'cropio/connection'
|
5
|
+
require 'cropio/resource'
|
6
|
+
require 'cropio/resources'
|
7
|
+
|
8
|
+
module Cropio
|
9
|
+
def self.credentials
|
10
|
+
@credentials
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.credentials=(credentials)
|
14
|
+
case credentials
|
15
|
+
when Hash
|
16
|
+
@credentials = OpenStruct.new(credentials)
|
17
|
+
when OpenStruct
|
18
|
+
@credentials = credentials
|
19
|
+
else
|
20
|
+
fail 'Cropio credentials should be a Hash or OpenStruct.'
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
metadata
ADDED
@@ -0,0 +1,178 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: cropio-ruby
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Sergey Vernidub
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-08-19 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: json
|
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'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rest-client
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: bundler
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.9'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.9'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rake
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '10.0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '10.0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: pry
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: byebug
|
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'
|
97
|
+
description: Cropio-Ruby provides simple ActiveRecord-like wrappings for Cropio API
|
98
|
+
email:
|
99
|
+
- info@cropio.com
|
100
|
+
executables: []
|
101
|
+
extensions: []
|
102
|
+
extra_rdoc_files: []
|
103
|
+
files:
|
104
|
+
- ".gitignore"
|
105
|
+
- ".rspec"
|
106
|
+
- ".travis.yml"
|
107
|
+
- Gemfile
|
108
|
+
- README.md
|
109
|
+
- Rakefile
|
110
|
+
- bin/console
|
111
|
+
- bin/login
|
112
|
+
- bin/setup
|
113
|
+
- cropio-ruby.gemspec
|
114
|
+
- lib/cropio.rb
|
115
|
+
- lib/cropio/connection.rb
|
116
|
+
- lib/cropio/connection/authenticable.rb
|
117
|
+
- lib/cropio/connection/configurable.rb
|
118
|
+
- lib/cropio/connection/proxiable.rb
|
119
|
+
- lib/cropio/connection/proxy.rb
|
120
|
+
- lib/cropio/misc.rb
|
121
|
+
- lib/cropio/misc/string_inflector.rb
|
122
|
+
- lib/cropio/resource.rb
|
123
|
+
- lib/cropio/resource/attributes.rb
|
124
|
+
- lib/cropio/resource/base.rb
|
125
|
+
- lib/cropio/resources.rb
|
126
|
+
- lib/cropio/resources/additional_object.rb
|
127
|
+
- lib/cropio/resources/agri_work_plan.rb
|
128
|
+
- lib/cropio/resources/agri_work_plan_application_mix_item.rb
|
129
|
+
- lib/cropio/resources/agro_operation.rb
|
130
|
+
- lib/cropio/resources/application_mix_item.rb
|
131
|
+
- lib/cropio/resources/avatar.rb
|
132
|
+
- lib/cropio/resources/chemical.rb
|
133
|
+
- lib/cropio/resources/crop.rb
|
134
|
+
- lib/cropio/resources/fertilizer.rb
|
135
|
+
- lib/cropio/resources/field.rb
|
136
|
+
- lib/cropio/resources/field_group.rb
|
137
|
+
- lib/cropio/resources/field_scout_report.rb
|
138
|
+
- lib/cropio/resources/field_scout_report_threat_mapping_item.rb
|
139
|
+
- lib/cropio/resources/field_shape.rb
|
140
|
+
- lib/cropio/resources/group_folder.rb
|
141
|
+
- lib/cropio/resources/harvest_weighing.rb
|
142
|
+
- lib/cropio/resources/historical_value.rb
|
143
|
+
- lib/cropio/resources/history_item.rb
|
144
|
+
- lib/cropio/resources/implement.rb
|
145
|
+
- lib/cropio/resources/machine.rb
|
146
|
+
- lib/cropio/resources/machine_group.rb
|
147
|
+
- lib/cropio/resources/machine_task.rb
|
148
|
+
- lib/cropio/resources/machine_task_agro_operation_mapping_item.rb
|
149
|
+
- lib/cropio/resources/note.rb
|
150
|
+
- lib/cropio/resources/plant_threat.rb
|
151
|
+
- lib/cropio/resources/satellite_image.rb
|
152
|
+
- lib/cropio/resources/seed.rb
|
153
|
+
- lib/cropio/resources/user.rb
|
154
|
+
- lib/cropio/version.rb
|
155
|
+
homepage: https://cropio.com
|
156
|
+
licenses: []
|
157
|
+
metadata: {}
|
158
|
+
post_install_message:
|
159
|
+
rdoc_options: []
|
160
|
+
require_paths:
|
161
|
+
- lib
|
162
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - ">="
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0'
|
167
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
168
|
+
requirements:
|
169
|
+
- - ">="
|
170
|
+
- !ruby/object:Gem::Version
|
171
|
+
version: '0'
|
172
|
+
requirements: []
|
173
|
+
rubyforge_project:
|
174
|
+
rubygems_version: 2.4.8
|
175
|
+
signing_key:
|
176
|
+
specification_version: 4
|
177
|
+
summary: Cropio API bindings for Ruby
|
178
|
+
test_files: []
|