to_net_me_api 0.1.beta → 0.2
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/CHANGELOG.md +7 -0
- data/README.md +69 -4
- data/lib/to_net_me_api.rb +32 -0
- data/lib/to_net_me_api/api.rb +18 -0
- data/lib/to_net_me_api/client.rb +81 -0
- data/lib/to_net_me_api/configuration.rb +29 -0
- data/lib/to_net_me_api/error.rb +54 -0
- data/lib/to_net_me_api/method.rb +45 -0
- data/lib/to_net_me_api/namespace.rb +43 -0
- data/lib/to_net_me_api/namespaces.yml +7 -0
- data/lib/to_net_me_api/resolvable.rb +20 -0
- data/lib/to_net_me_api/resolver.rb +34 -0
- data/lib/to_net_me_api/result.rb +49 -0
- data/lib/to_net_me_api/version.rb +4 -0
- data/to_net_me_api.gemspec +25 -0
- metadata +19 -5
data/CHANGELOG.md
ADDED
data/README.md
CHANGED
@@ -1,4 +1,69 @@
|
|
1
|
-
to_net_me_api
|
2
|
-
|
3
|
-
|
4
|
-
|
1
|
+
## to_net_me_api [](http://badge.fury.io/rb/to_net_me_api)
|
2
|
+
|
3
|
+
|
4
|
+
|
5
|
+
|
6
|
+
|
7
|
+
`to_net_me_api` - ruby-адаптер для api.2net.me. Он позволяет вызывать методы API.
|
8
|
+
|
9
|
+
|
10
|
+
|
11
|
+
## Установка
|
12
|
+
|
13
|
+
|
14
|
+
|
15
|
+
``` ruby
|
16
|
+
|
17
|
+
# Gemfile
|
18
|
+
|
19
|
+
gem 'to_net_me_api'
|
20
|
+
|
21
|
+
```
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
или просто
|
26
|
+
|
27
|
+
|
28
|
+
|
29
|
+
``` sh
|
30
|
+
|
31
|
+
$ gem install to_net_me_api
|
32
|
+
|
33
|
+
```
|
34
|
+
|
35
|
+
|
36
|
+
|
37
|
+
## Использование
|
38
|
+
|
39
|
+
|
40
|
+
|
41
|
+
### Вызов методов
|
42
|
+
|
43
|
+
|
44
|
+
|
45
|
+
``` ruby
|
46
|
+
require 'to_net_me_api' #=> true
|
47
|
+
|
48
|
+
# создаем клиент
|
49
|
+
@to_net_me = ToNetMeApi::Client.new('auth_key')
|
50
|
+
# и вызываем методы API
|
51
|
+
groups = @to_net_me.search.groups(:name=>'велосипеды',:vk=>'true')
|
52
|
+
|
53
|
+
# методы возвращают объект HTTParty
|
54
|
+
# в котором находится ответ от сервека api.2net.me
|
55
|
+
groups.parsed_response #=> {"message"=>{"vk"=>[7389, {"gid"=>52734067, "name"=>"Велосипеды"....
|
56
|
+
|
57
|
+
# в ruby принято использовать snake_case в названиях методов,
|
58
|
+
# поэтому search.groupsById становится search.groups_by_id
|
59
|
+
@to_net_me.search.groups_by_id(:gids=>'37856556',:soc=>'vk')
|
60
|
+
|
61
|
+
# если API 2net.me ожидает получить параметр в виде списка,
|
62
|
+
# разделенного запятыми, то его можно передать массивом
|
63
|
+
@to_net_me.search.groups_by_id(:gids=>'2net_me,37856556,38019449',:soc=>'vk')
|
64
|
+
```
|
65
|
+
### Документация
|
66
|
+
|
67
|
+
Документация к методам api находится [по адресу](http://api.2net.me/index/info).
|
68
|
+
Так же можно попробовать api через web-интерфейс [тут](http://api.2net.me/index).
|
69
|
+
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'httparty'
|
2
|
+
require 'yaml'
|
3
|
+
require 'hashie'
|
4
|
+
|
5
|
+
require 'to_net_me_api/version'
|
6
|
+
require 'to_net_me_api/configuration'
|
7
|
+
require 'to_net_me_api/api'
|
8
|
+
require 'to_net_me_api/resolver'
|
9
|
+
require 'to_net_me_api/resolvable'
|
10
|
+
require 'to_net_me_api/client'
|
11
|
+
require 'to_net_me_api/namespace'
|
12
|
+
require 'to_net_me_api/method'
|
13
|
+
|
14
|
+
|
15
|
+
# Main module.
|
16
|
+
module ToNetMeApi
|
17
|
+
extend ToNetMeApi::Configuration
|
18
|
+
#extend VkontakteApi::Authorization
|
19
|
+
#extend VkontakteApi::Uploading
|
20
|
+
|
21
|
+
class << self
|
22
|
+
# Creates a short alias `TNM` for `ToNetMeApi` module.
|
23
|
+
def register_alias
|
24
|
+
Object.const_set(:TNM, ToNetMeApi)
|
25
|
+
end
|
26
|
+
|
27
|
+
# Removes the `TNM` alias.
|
28
|
+
def unregister_alias
|
29
|
+
Object.send(:remove_const, :TNM) if defined?(TNM)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# require 'httparty'
|
2
|
+
module ToNetMeApi
|
3
|
+
# Модуль обрабатывает запросы к API 2et.me и возвращает HTTParty объект .
|
4
|
+
module API
|
5
|
+
|
6
|
+
class << self
|
7
|
+
|
8
|
+
def call(attrs,options={},auth_key = nil)
|
9
|
+
@auth = {:auth_key => auth_key}
|
10
|
+
options.merge!(@auth)
|
11
|
+
HTTParty.get('http://api.2net.me/'+attrs,:query => options)
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
|
@@ -0,0 +1,81 @@
|
|
1
|
+
# require '~/rubystack/projects/users_part/lib/to_net_me_api/namespace'
|
2
|
+
# require '~/rubystack/projects/users_part/lib/to_net_me_api/resolvable'
|
3
|
+
# require '~/rubystack/projects/users_part/lib/to_net_me_api/resolver'
|
4
|
+
# require '~/rubystack/projects/users_part/lib/to_net_me_api/method'
|
5
|
+
module ToNetMeApi
|
6
|
+
# Класс, представляющий соединение с api.2net.me.
|
7
|
+
class Client
|
8
|
+
include Resolver
|
9
|
+
|
10
|
+
# Права доступа и их числовые значения.
|
11
|
+
SCOPE = {
|
12
|
+
root: 0,
|
13
|
+
admin: 1,
|
14
|
+
partner: 2,
|
15
|
+
user: 3,
|
16
|
+
unknown_auth_key: 4,
|
17
|
+
|
18
|
+
}
|
19
|
+
|
20
|
+
# ключ доступа к методам api
|
21
|
+
# @return [String]
|
22
|
+
attr_reader :auth_key
|
23
|
+
# Current user id.
|
24
|
+
# @return [Integer]
|
25
|
+
attr_reader :user_id
|
26
|
+
# время жизни auth_key
|
27
|
+
# @return [Time]
|
28
|
+
attr_reader :expires_at
|
29
|
+
|
30
|
+
# API client.
|
31
|
+
# определяем переменные
|
32
|
+
def initialize(auth_key = nil)
|
33
|
+
if auth_key.respond_to?(:auth_key) && auth_key.respond_to?(:params)
|
34
|
+
# auth_key is an OAuth2::Accessauth_key
|
35
|
+
@auth_key = auth_key.auth_key
|
36
|
+
@user_id = auth_key.params['user_id']
|
37
|
+
@expires_at = Time.at(auth_key.expires_at) unless auth_key.expires_at.nil?
|
38
|
+
else
|
39
|
+
# если auth_key нет или пришла строка (string)
|
40
|
+
@auth_key = auth_key
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
# Авторизирован пользователь.
|
45
|
+
def authorized?
|
46
|
+
!@auth_key.nil?
|
47
|
+
end
|
48
|
+
|
49
|
+
# Просрочет ключь или нет.
|
50
|
+
def expired?
|
51
|
+
@expires_at && @expires_at < Time.now
|
52
|
+
end
|
53
|
+
|
54
|
+
|
55
|
+
# Права доступа для auth_key.
|
56
|
+
# @return Symbol
|
57
|
+
def scope
|
58
|
+
|
59
|
+
SCOPE.reject do |access_scope, mask|
|
60
|
+
return SCOPE.invert[settings]
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
64
|
+
|
65
|
+
# Если вызываемы метод содержется в namespace, создается новый `VkontakteApi::Namespace` инстанс.
|
66
|
+
# `VkontakteApi::Namespace` так же выхывает method_missing для метода объекта Namespace
|
67
|
+
# если нет namspace `VkontakteApi::Method` создаеся объект API в который передаются параметры.
|
68
|
+
def method_missing(*args, &block)
|
69
|
+
if Namespace.exists?(args.first)
|
70
|
+
create_namespace(args.first)
|
71
|
+
else
|
72
|
+
call_method(args, &block)
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
private
|
77
|
+
def settings
|
78
|
+
@settings ||= @auth_key[0].gsub(/[^0-9]/,'4').to_i
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module ToNetMeApi
|
2
|
+
# Генерация модуля конфигураци
|
3
|
+
#
|
4
|
+
# ToNetMeApi::Configuration
|
5
|
+
module Configuration
|
6
|
+
#доступные опции для конфигурации
|
7
|
+
OPTION_NAMES = [
|
8
|
+
:api_core,
|
9
|
+
]
|
10
|
+
|
11
|
+
attr_accessor *OPTION_NAMES
|
12
|
+
|
13
|
+
# адрес api по умолчанию
|
14
|
+
DAFAULT_API_ADDRESS = 'http://api.2net.me/'
|
15
|
+
|
16
|
+
# Можно задавать конфигурацию для гема так:
|
17
|
+
# ToNetMeApi.configure {|config| config.api_core='http://sandbox.api.2net.me/'}
|
18
|
+
|
19
|
+
def configure
|
20
|
+
yield self if block_given?
|
21
|
+
self
|
22
|
+
end
|
23
|
+
|
24
|
+
#установка всех конфигураций в дефолтное значение
|
25
|
+
def reset
|
26
|
+
@api_core = DAFAULT_API_ADDRESS
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
module ToNetMeApi
|
2
|
+
# An exception raised by `ToNetMeApi::Result` when given a response with an error.
|
3
|
+
class Error < StandardError
|
4
|
+
# An error code.
|
5
|
+
# @return [Fixnum]
|
6
|
+
attr_reader :error_code
|
7
|
+
# Captcha identifier (only for "Captcha needed" errors).
|
8
|
+
# @return [String]
|
9
|
+
attr_reader :captcha_sid
|
10
|
+
# Captcha image URL (only for "Captcha needed" errors).
|
11
|
+
# @return [String]
|
12
|
+
attr_reader :captcha_img
|
13
|
+
|
14
|
+
# An exception is initialized by the data from response mash.
|
15
|
+
# @param [Hash] data Error data.
|
16
|
+
def initialize(data)
|
17
|
+
@error_code = data.error_code
|
18
|
+
@error_msg = data.error_msg
|
19
|
+
|
20
|
+
request_params = parse_params(data.request_params)
|
21
|
+
|
22
|
+
@method_name = request_params.delete('method')
|
23
|
+
@access_token = request_params.delete('access_token')
|
24
|
+
@oauth = request_params.delete('oauth')
|
25
|
+
@params = request_params
|
26
|
+
|
27
|
+
@captcha_sid = data.captcha_sid
|
28
|
+
@captcha_img = data.captcha_img
|
29
|
+
end
|
30
|
+
|
31
|
+
# A full description of the error.
|
32
|
+
# @return [String]
|
33
|
+
def message
|
34
|
+
message = "VKontakte returned an error #{@error_code}: '#{@error_msg}'"
|
35
|
+
message << " after calling method '#{@method_name}'"
|
36
|
+
|
37
|
+
if @params.empty?
|
38
|
+
message << " without parameters."
|
39
|
+
else
|
40
|
+
message << " with parameters #{@params.inspect}."
|
41
|
+
end
|
42
|
+
|
43
|
+
message
|
44
|
+
end
|
45
|
+
|
46
|
+
private
|
47
|
+
def parse_params(params)
|
48
|
+
params.inject({}) do |memo, pair|
|
49
|
+
memo[pair[:key]] = pair[:value]
|
50
|
+
memo
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# require '~/rubystack/projects/users_part/lib/to_net_me_api/api'
|
2
|
+
# require '~/rubystack/projects/users_part/lib/to_net_me_api/result'
|
3
|
+
module ToNetMeApi
|
4
|
+
# An API method. It is responsible for generating it's full name and determining it's type.
|
5
|
+
class Method
|
6
|
+
include Resolvable
|
7
|
+
|
8
|
+
# A pattern for names of methods with a boolean result.
|
9
|
+
PREDICATE_NAMES = /^is.*\?$/
|
10
|
+
|
11
|
+
# Calling the API method.
|
12
|
+
# It delegates the network request to `API.call` and result processing to `Result.process`.
|
13
|
+
# @param [Hash] args Arguments for the API method.
|
14
|
+
def call(args = {}, &block)
|
15
|
+
# raise full_name.inspect
|
16
|
+
response = API.call(full_name, args, auth_key)
|
17
|
+
# raise type.inspect
|
18
|
+
# когда ответ бует стандартизирован тогда нужно будет делать вывод результата иобработку ошибок
|
19
|
+
# Result.process(response, type, block)
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
def full_name
|
24
|
+
parts = [@previous_resolver.name, @name].compact.map { |part| camelize(part) }
|
25
|
+
parts.join(' ').gsub(/[^A-Za-z.]/, '/')
|
26
|
+
end
|
27
|
+
|
28
|
+
def type
|
29
|
+
@name =~ PREDICATE_NAMES ? :boolean : :anything
|
30
|
+
end
|
31
|
+
|
32
|
+
# camelize('get_profiles')
|
33
|
+
# => 'getProfiles'
|
34
|
+
def camelize(name)
|
35
|
+
words = name.split('_')
|
36
|
+
first_word = words.shift
|
37
|
+
|
38
|
+
words.each do |word|
|
39
|
+
word.sub!(/^[a-z]/, &:upcase)
|
40
|
+
end
|
41
|
+
|
42
|
+
words.unshift(first_word).join
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require '~/rubystack/projects/users_part/lib/to_net_me_api/resolvable'
|
2
|
+
require '~/rubystack/projects/users_part/lib/to_net_me_api/resolver'
|
3
|
+
require 'yaml'
|
4
|
+
|
5
|
+
module ToNetMeApi
|
6
|
+
# API метод namespace (такие как `users` или `search`).
|
7
|
+
#
|
8
|
+
# Включает в себя два модуля `Resolvable` и `Resolver`
|
9
|
+
# которые вызывают методы api с помощью `Resolver#call_method`.
|
10
|
+
# также класс содержит список всех объектов api.2net.me.
|
11
|
+
class Namespace
|
12
|
+
include Resolvable
|
13
|
+
include Resolver
|
14
|
+
|
15
|
+
# создает и вызывает `ToNetMeApi::Method` используя `ToNetMeApi::Resolver#call_method`.
|
16
|
+
def method_missing(*args, &block)
|
17
|
+
|
18
|
+
call_method(args, &block)
|
19
|
+
|
20
|
+
end
|
21
|
+
|
22
|
+
class << self
|
23
|
+
# Массив всех объектов api.2net.me.
|
24
|
+
#
|
25
|
+
# Загрузка файла `namespaces.yml` .
|
26
|
+
# @return [Array] An array of strings
|
27
|
+
def names
|
28
|
+
if @names.nil?
|
29
|
+
filename = File.expand_path('../namespaces.yml', __FILE__)
|
30
|
+
@names = YAML.load_file(filename)
|
31
|
+
end
|
32
|
+
|
33
|
+
@names
|
34
|
+
end
|
35
|
+
|
36
|
+
# Проверяет есть ли такой объект у api.2net.me?
|
37
|
+
# @param [String, Symbol] name
|
38
|
+
def exists?(name)
|
39
|
+
names.include?(name.to_s)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module ToNetMeApi
|
2
|
+
|
3
|
+
module Resolvable
|
4
|
+
attr_reader :name
|
5
|
+
|
6
|
+
# инициализация объекта и метода api.2net.me
|
7
|
+
# @param [String] name The name of this resolvable.
|
8
|
+
# @option options [Hashie::Mash] :resolver A mash holding information about the previous resolver.
|
9
|
+
def initialize(name, options = {})
|
10
|
+
@name = name.to_s
|
11
|
+
@previous_resolver = options.delete(:resolver)
|
12
|
+
end
|
13
|
+
|
14
|
+
# Returns the auth_key from the previous resolver.
|
15
|
+
# @return [String] A auth_key.
|
16
|
+
def auth_key
|
17
|
+
@previous_resolver.auth_key
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# require 'hashie'
|
2
|
+
module ToNetMeApi
|
3
|
+
# A mixin for classes that will resolve other classes' objects via `#method_missing`.
|
4
|
+
module Resolver
|
5
|
+
# A `Hashie::Mash` structure holding the name and auth_key of current instance.
|
6
|
+
# @return [Hashie::Mash]
|
7
|
+
def resolver
|
8
|
+
@resolver ||= Hashie::Mash.new(name: @name, auth_key: auth_key)
|
9
|
+
end
|
10
|
+
|
11
|
+
private
|
12
|
+
def create_namespace(name)
|
13
|
+
Namespace.new(name, resolver: resolver)
|
14
|
+
end
|
15
|
+
|
16
|
+
def create_method(name)
|
17
|
+
Method.new(name, resolver: resolver)
|
18
|
+
end
|
19
|
+
|
20
|
+
def call_method(args, &block)
|
21
|
+
create_method(args.shift).call(args.first || {}, &block)
|
22
|
+
end
|
23
|
+
|
24
|
+
# class << self
|
25
|
+
# # When this module is included, it undefines the `:send` instance method in the `base_class`
|
26
|
+
# # so it can be resolved via `method_missing`.
|
27
|
+
# def included(base_class)
|
28
|
+
# base_class.class_eval do
|
29
|
+
# undef_method :send
|
30
|
+
# end
|
31
|
+
# end
|
32
|
+
# end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
module ToNetMeApi
|
2
|
+
# A module that handles method result processing.
|
3
|
+
#
|
4
|
+
# It implements method blocks support, result typecasting and raises `ToNetMeApi::Error` in case of an error response.
|
5
|
+
module Result
|
6
|
+
class << self
|
7
|
+
# The main method result processing.
|
8
|
+
# @param [Hashie::Mash] response The server response in mash format.
|
9
|
+
# @param [Symbol] type The expected result type (`:boolean` or `:anything`).
|
10
|
+
# @param [Proc] block A block passed to the API method.
|
11
|
+
# @return [Array, Hashie::Mash] The processed result.
|
12
|
+
# @raise [ToNetMeApi::Error] raised when VKontakte returns an error response.
|
13
|
+
def process(response, type, block)
|
14
|
+
raise response['error_code'].inspect
|
15
|
+
result = extract_result(response)
|
16
|
+
|
17
|
+
if result.respond_to?(:each)
|
18
|
+
# enumerable result receives :map with a block when called with a block
|
19
|
+
# or is returned untouched otherwise
|
20
|
+
block.nil? ? result : result.map(&block)
|
21
|
+
else
|
22
|
+
# non-enumerable result is typecasted
|
23
|
+
# (and yielded if block_given?)
|
24
|
+
result = typecast(result, type)
|
25
|
+
block.nil? ? result : block.call(result)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
private
|
30
|
+
def extract_result(response)
|
31
|
+
if response.error?
|
32
|
+
raise ToNetMeApi::Error.new(response.error)
|
33
|
+
else
|
34
|
+
response.response
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def typecast(parameter, type)
|
39
|
+
case type
|
40
|
+
when :boolean
|
41
|
+
# '1' becomes true, '0' becomes false
|
42
|
+
!parameter.to_i.zero?
|
43
|
+
else
|
44
|
+
parameter
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
$: << File.expand_path('../lib', __FILE__)
|
3
|
+
require 'to_net_me_api/version'
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = 'to_net_me_api'
|
7
|
+
s.version = ToNetMeApi::VERSION
|
8
|
+
s.authors = ['Sergey Chechaev']
|
9
|
+
s.email = ['sergey@2net.me']
|
10
|
+
s.homepage = 'https://github.com/sergey-chechaev/to_net_me_api'
|
11
|
+
s.summary = %q{Ruby wrapper for api.2net.me}
|
12
|
+
s.description = %q{A transparent wrapper for 2net.me API. Supports ruby-way naming of API methods (without method lists inside) with api request by HTTParty.}
|
13
|
+
s.license = ''
|
14
|
+
|
15
|
+
s.files = `git ls-files`.split("\n")
|
16
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
17
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
|
18
|
+
s.require_paths = ['lib']
|
19
|
+
|
20
|
+
s.required_ruby_version = '>= 1.9.3'
|
21
|
+
|
22
|
+
s.add_runtime_dependency 'httparty', '~> 0.11'
|
23
|
+
s.add_runtime_dependency 'hashie', '~> 2.0'
|
24
|
+
|
25
|
+
end
|
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: to_net_me_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: '0.2'
|
5
|
+
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Sergey Chechaev
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-09-
|
12
|
+
date: 2013-09-26 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: httparty
|
@@ -52,7 +52,21 @@ extensions: []
|
|
52
52
|
extra_rdoc_files: []
|
53
53
|
files:
|
54
54
|
- .gitignore
|
55
|
+
- CHANGELOG.md
|
55
56
|
- README.md
|
57
|
+
- lib/to_net_me_api.rb
|
58
|
+
- lib/to_net_me_api/api.rb
|
59
|
+
- lib/to_net_me_api/client.rb
|
60
|
+
- lib/to_net_me_api/configuration.rb
|
61
|
+
- lib/to_net_me_api/error.rb
|
62
|
+
- lib/to_net_me_api/method.rb
|
63
|
+
- lib/to_net_me_api/namespace.rb
|
64
|
+
- lib/to_net_me_api/namespaces.yml
|
65
|
+
- lib/to_net_me_api/resolvable.rb
|
66
|
+
- lib/to_net_me_api/resolver.rb
|
67
|
+
- lib/to_net_me_api/result.rb
|
68
|
+
- lib/to_net_me_api/version.rb
|
69
|
+
- to_net_me_api.gemspec
|
56
70
|
homepage: https://github.com/sergey-chechaev/to_net_me_api
|
57
71
|
licenses:
|
58
72
|
- ''
|
@@ -69,9 +83,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
69
83
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
70
84
|
none: false
|
71
85
|
requirements:
|
72
|
-
- - ! '
|
86
|
+
- - ! '>='
|
73
87
|
- !ruby/object:Gem::Version
|
74
|
-
version:
|
88
|
+
version: '0'
|
75
89
|
requirements: []
|
76
90
|
rubyforge_project:
|
77
91
|
rubygems_version: 1.8.24
|