yam 0.0.1 → 0.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/.gitignore +18 -0
- data/.travis.yml +6 -0
- data/CONTRIBUTING.md +90 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +16 -0
- data/README.md +144 -0
- data/Rakefile +23 -0
- data/lib/yam.rb +43 -0
- data/lib/yam/api.rb +56 -0
- data/lib/yam/client.rb +23 -0
- data/lib/yam/configuration.rb +59 -0
- data/lib/yam/connection.rb +62 -0
- data/lib/yam/constants.rb +28 -0
- data/lib/yam/request.rb +38 -0
- data/lib/yam/version.rb +18 -2
- data/spec/spec_helper.rb +59 -0
- data/spec/yam/client_spec.rb +42 -0
- data/spec/yam_spec.rb +100 -0
- data/yam.gemspec +26 -16
- metadata +211 -39
data/.gitignore
ADDED
data/.travis.yml
ADDED
data/CONTRIBUTING.md
ADDED
@@ -0,0 +1,90 @@
|
|
1
|
+
Contributing
|
2
|
+
============
|
3
|
+
|
4
|
+
|
5
|
+
Quick Overview
|
6
|
+
--------------
|
7
|
+
|
8
|
+
We love pull requests. Here's a quick overview of the process (detail below):
|
9
|
+
|
10
|
+
1. Fork the repo.
|
11
|
+
|
12
|
+
2. Run the tests. We only take pull requests with passing tests, so start with a clean slate.
|
13
|
+
|
14
|
+
3. Add a test for your new code. Only refactoring and documentation changes require no new tests. If you are adding functionality or fixing a bug, we need a test!
|
15
|
+
|
16
|
+
4. Make the test pass.
|
17
|
+
|
18
|
+
5. Push to your fork and submit a pull request.
|
19
|
+
|
20
|
+
At this point you're waiting on us. We may suggest some changes or improvements or alternatives. Once we approve, we will merge your branch in.
|
21
|
+
|
22
|
+
Some things that will increase the chance that your pull request is accepted, taken straight from the Ruby on Rails guide:
|
23
|
+
|
24
|
+
* Use Rails idioms and helpers
|
25
|
+
* Include tests which fail without your code and pass with it
|
26
|
+
* Update the documentation, the surrounding code, examples elsewhere, guides, whatever is affected by your contribution
|
27
|
+
|
28
|
+
|
29
|
+
Requirements
|
30
|
+
--------------
|
31
|
+
|
32
|
+
Please remember this is open-source, so don't commit any passwords or API keys.
|
33
|
+
Those should go in config variables like `ENV['API_KEY']`.
|
34
|
+
|
35
|
+
|
36
|
+
Laptop setup
|
37
|
+
------------
|
38
|
+
|
39
|
+
Fork the repo and clone the app:
|
40
|
+
|
41
|
+
git clone git@github.com:[GIT_USERNAME]/yam.git
|
42
|
+
|
43
|
+
|
44
|
+
Install Bundler 1.2.0.pre or higher:
|
45
|
+
|
46
|
+
gem install bundler --pre
|
47
|
+
|
48
|
+
Set up the app:
|
49
|
+
|
50
|
+
cd yam
|
51
|
+
bundle --binstubs
|
52
|
+
|
53
|
+
|
54
|
+
Running tests
|
55
|
+
-------------
|
56
|
+
|
57
|
+
Run the whole test suite with:
|
58
|
+
|
59
|
+
rake
|
60
|
+
|
61
|
+
Run individual specs like:
|
62
|
+
|
63
|
+
rspec spec/yam_spec.rb
|
64
|
+
|
65
|
+
Tab complete to make it even faster!
|
66
|
+
|
67
|
+
When a spec file has many specs, you sometimes want to run just what you're
|
68
|
+
working on. In that case, specify a line number:
|
69
|
+
|
70
|
+
rspec spec/yam_spec.rb:9
|
71
|
+
|
72
|
+
|
73
|
+
Syntax
|
74
|
+
------
|
75
|
+
|
76
|
+
* Two spaces, no tabs.
|
77
|
+
* No trailing whitespace. Blank lines should not have any spaces.
|
78
|
+
* Prefer `&&/||` over `and/or`.
|
79
|
+
* `MyClass.my_method(my_arg)` not `my_method( my_arg )` or `my_method my_arg`.
|
80
|
+
* `a = b` and not `a=b`.
|
81
|
+
* Follow the conventions you see used in the source already.
|
82
|
+
|
83
|
+
And in case we didn't emphasize it enough: we love tests!
|
84
|
+
|
85
|
+
|
86
|
+
Development process
|
87
|
+
-------------------
|
88
|
+
|
89
|
+
For details and screenshots of the feature branch code review process,
|
90
|
+
read [this blog post](http://robots.thoughtbot.com/post/2831837714/feature-branch-code-reviews).
|
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
Copyright (c) Microsoft Corporation
|
2
|
+
All rights reserved.
|
3
|
+
|
4
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
you may not use this file except in compliance with the License.
|
6
|
+
You may obtain a copy of the License at
|
7
|
+
|
8
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
|
10
|
+
THIS CODE IS PROVIDED *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
11
|
+
ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY
|
12
|
+
IMPLIED WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR
|
13
|
+
PURPOSE, MERCHANTABLITY OR NON-INFRINGEMENT.
|
14
|
+
|
15
|
+
See the Apache Version 2.0 License for specific language governing
|
16
|
+
permissions and limitations under the License.
|
data/README.md
ADDED
@@ -0,0 +1,144 @@
|
|
1
|
+
Yam
|
2
|
+
===
|
3
|
+
|
4
|
+
The official Yammer Ruby gem.
|
5
|
+
|
6
|
+
NOTE: Currently in alpha - use at your own risk
|
7
|
+
|
8
|
+
Installation
|
9
|
+
------------
|
10
|
+
|
11
|
+
Add this line to your application's Gemfile:
|
12
|
+
|
13
|
+
```ruby
|
14
|
+
gem 'yam'
|
15
|
+
```
|
16
|
+
|
17
|
+
And then execute:
|
18
|
+
|
19
|
+
```sh
|
20
|
+
$ bundle
|
21
|
+
```
|
22
|
+
|
23
|
+
Or install it yourself as:
|
24
|
+
|
25
|
+
```sh
|
26
|
+
$ gem install yam
|
27
|
+
```
|
28
|
+
|
29
|
+
General Configuration
|
30
|
+
---------------------
|
31
|
+
|
32
|
+
The Yammer API requires you to authenticate via OAuth, so you'll need to register your Yammer application. To register a new application, sign in to Yammer and then fill out the form at https://www.yammer.com/client_applications.
|
33
|
+
|
34
|
+
If you already have your access token, you can skip this section.
|
35
|
+
|
36
|
+
To retrieve your access token, follow these steps.
|
37
|
+
|
38
|
+
1. Construct the following URL using the client_id you received after registering your app with Yammer: <https://www.yammer.com/dialog/oauth?client_id=[:client_id]>
|
39
|
+
|
40
|
+
2. Follow the URL you constructed above. It will take you to a Yammer OAuth dialog. Click the "Allow" button.
|
41
|
+
|
42
|
+
3. You will be redirected to a URL that looks something like this: <http://[:redirect_uri]?code=[:code]>
|
43
|
+
|
44
|
+
4. Use the code from step 3 along with your client_id and client_secret (obtained when registering your app) to construct the following URL:
|
45
|
+
<https://www.yammer.com/oauth2/access_token.json?client_id=[:client_id]&client_secret=[:client_secret]&code=[:code]>
|
46
|
+
|
47
|
+
5. The authorization server will return an access token object as part of a broader response that includes user profile information.
|
48
|
+
|
49
|
+
Sample access token (token is 'abcdefghijklmn' in this example) as part of response:
|
50
|
+
|
51
|
+
```
|
52
|
+
“access_token”: {
|
53
|
+
“view_subscriptions”: true,
|
54
|
+
“expires_at”: null,
|
55
|
+
authorized_at”: “2011/04/06 16:25:46 +0000”,
|
56
|
+
“modify_subscriptions”: true,
|
57
|
+
“modify_messages”: true,
|
58
|
+
“network_permalink”: “yammer-inc.com”,
|
59
|
+
“view_members”: true,
|
60
|
+
“view_tags”: true,
|
61
|
+
“network_id”: 155465488,
|
62
|
+
“user_id”: 1014216,
|
63
|
+
“view_groups”: true,
|
64
|
+
“token”: “abcdefghijklmn”,
|
65
|
+
“network_name”: “Yammer”,
|
66
|
+
“view_messages”: true,
|
67
|
+
“created_at”: “2011/04/06 16:25:46 +0000”
|
68
|
+
}
|
69
|
+
```
|
70
|
+
|
71
|
+
Set the OAuth token on your app. Example:
|
72
|
+
|
73
|
+
```ruby
|
74
|
+
Yam.configure do |config|
|
75
|
+
config.oauth_token = your_oauth_token
|
76
|
+
end
|
77
|
+
```
|
78
|
+
|
79
|
+
Rails Configuration
|
80
|
+
-------------------
|
81
|
+
|
82
|
+
Retrieve your access token using the steps outlined in the <a href="#general-configuration">general configuration</a> section above.
|
83
|
+
|
84
|
+
Add the following to a `yammer.rb` file in your `config/initializers` directory:
|
85
|
+
|
86
|
+
```ruby
|
87
|
+
Yam.configure do |config|
|
88
|
+
config.oauth_token = oauth_token
|
89
|
+
end
|
90
|
+
```
|
91
|
+
|
92
|
+
Set up Yammer OAuth 2.0
|
93
|
+
-----------------------
|
94
|
+
|
95
|
+
See Yammer's Developer Guide for step-by-step instructions on setting up OAuth 2.0: <http://developer.yammer.com/files/2012/10/PlatformDeveloperGuide.pdf>
|
96
|
+
|
97
|
+
Usage Examples
|
98
|
+
--------------
|
99
|
+
|
100
|
+
All examples require an authenticated Yammer client. See the <a
|
101
|
+
href="#general-configuration">general configuration</a> section for instructions for finding and setting your access token.
|
102
|
+
|
103
|
+
For a list of all Yammer API endpoints, see the <a href="http://developer.yammer.com/restapi/">REST API documentation</a>.
|
104
|
+
|
105
|
+
**Find a Yammer user by email**
|
106
|
+
|
107
|
+
```ruby
|
108
|
+
Yam.get('/users/by_email', email: 'user@example.com')
|
109
|
+
```
|
110
|
+
|
111
|
+
**Find a Yammer user by the Yammer user id**
|
112
|
+
|
113
|
+
```ruby
|
114
|
+
Yam.get('/users/123456')
|
115
|
+
```
|
116
|
+
|
117
|
+
**Post a status update from the current user**
|
118
|
+
|
119
|
+
```ruby
|
120
|
+
Yam.post('/messages', body: 'status update')
|
121
|
+
```
|
122
|
+
|
123
|
+
**Send a private message to another Yammer user**
|
124
|
+
|
125
|
+
```ruby
|
126
|
+
Yam.post('/messages', body: 'this is a private message', direct_to_id: 123456)
|
127
|
+
```
|
128
|
+
|
129
|
+
**Send a private message to a Yammer group**
|
130
|
+
|
131
|
+
```ruby
|
132
|
+
Yam.post('/messages', body: 'this is a group message', group_id: 987654)
|
133
|
+
```
|
134
|
+
|
135
|
+
**Send a message with an Open Graph Object as an attachment**
|
136
|
+
|
137
|
+
```ruby
|
138
|
+
Yam.post('/messages', :body: 'here is my open graph object', og_url: "https://www.yammer.com/example/graph/123456789")
|
139
|
+
```
|
140
|
+
|
141
|
+
Contributing
|
142
|
+
------------
|
143
|
+
|
144
|
+
To contribute to this project, see the [CONTRIBUTING.md](https://github.com/yammer/yam/blob/master/CONTRIBUTING.md) file.
|
data/Rakefile
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
# Copyright (c) Microsoft Corporation
|
2
|
+
# All rights reserved.
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# THIS CODE IS PROVIDED *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
11
|
+
# ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY
|
12
|
+
# IMPLIED WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR
|
13
|
+
# PURPOSE, MERCHANTABLITY OR NON-INFRINGEMENT.
|
14
|
+
#
|
15
|
+
# See the Apache Version 2.0 License for specific language governing
|
16
|
+
# permissions and limitations under the License.
|
17
|
+
#
|
18
|
+
require 'bundler/gem_tasks'
|
19
|
+
require 'rspec/core/rake_task'
|
20
|
+
|
21
|
+
RSpec::Core::RakeTask.new(:spec)
|
22
|
+
|
23
|
+
task :default => :spec
|
data/lib/yam.rb
CHANGED
@@ -1 +1,44 @@
|
|
1
|
+
# Copyright (c) Microsoft Corporation
|
2
|
+
# All rights reserved.
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# THIS CODE IS PROVIDED *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
11
|
+
# ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY
|
12
|
+
# IMPLIED WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR
|
13
|
+
# PURPOSE, MERCHANTABLITY OR NON-INFRINGEMENT.
|
14
|
+
#
|
15
|
+
# See the Apache Version 2.0 License for specific language governing
|
16
|
+
# permissions and limitations under the License.
|
17
|
+
|
1
18
|
require 'yam/version'
|
19
|
+
require 'yam/configuration'
|
20
|
+
require 'yam/client'
|
21
|
+
|
22
|
+
module Yam
|
23
|
+
extend Configuration
|
24
|
+
|
25
|
+
class << self
|
26
|
+
# Handler for the client instance
|
27
|
+
attr_accessor :api_client
|
28
|
+
|
29
|
+
# Alias for Yam::Client.new
|
30
|
+
def new(options = {}, &block)
|
31
|
+
@api_client = Yam::Client.new(options, &block)
|
32
|
+
end
|
33
|
+
|
34
|
+
# Delegate to Yam::Client
|
35
|
+
def method_missing(method, *args, &block)
|
36
|
+
return super unless new.respond_to?(method)
|
37
|
+
new.send(method, *args, &block)
|
38
|
+
end
|
39
|
+
|
40
|
+
def respond_to?(method, include_private = false)
|
41
|
+
new.respond_to?(method, include_private) || super(method, include_private)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
data/lib/yam/api.rb
ADDED
@@ -0,0 +1,56 @@
|
|
1
|
+
# Copyright (c) Microsoft Corporation
|
2
|
+
# All rights reserved.
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# THIS CODE IS PROVIDED *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
11
|
+
# ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY
|
12
|
+
# IMPLIED WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR
|
13
|
+
# PURPOSE, MERCHANTABLITY OR NON-INFRINGEMENT.
|
14
|
+
#
|
15
|
+
# See the Apache Version 2.0 License for specific language governing
|
16
|
+
# permissions and limitations under the License.
|
17
|
+
#
|
18
|
+
|
19
|
+
# API setup and configuration
|
20
|
+
require 'yam/request'
|
21
|
+
require 'yam/connection'
|
22
|
+
require 'yam/configuration'
|
23
|
+
|
24
|
+
module Yam
|
25
|
+
class API
|
26
|
+
include Connection
|
27
|
+
include Request
|
28
|
+
attr_reader *Configuration::VALID_OPTIONS_KEYS
|
29
|
+
|
30
|
+
class_eval do
|
31
|
+
Configuration::VALID_OPTIONS_KEYS.each do |key|
|
32
|
+
define_method "#{key}=" do |arg|
|
33
|
+
self.instance_variable_set("@#{key}", arg)
|
34
|
+
Yam.send("#{key}=", arg)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def initialize(options={}, &block)
|
40
|
+
setup(options)
|
41
|
+
end
|
42
|
+
|
43
|
+
def setup(options={})
|
44
|
+
options = Yam.options.merge(options)
|
45
|
+
Configuration::VALID_OPTIONS_KEYS.each do |key|
|
46
|
+
send("#{key}=", options[key])
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def method_missing(method, *args, &block)
|
51
|
+
if method.to_s.match /^(.*)\?$/
|
52
|
+
return !self.send($1.to_s).nil?
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
data/lib/yam/client.rb
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
# Copyright (c) Microsoft Corporation
|
2
|
+
# All rights reserved.
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# THIS CODE IS PROVIDED *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
11
|
+
# ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY
|
12
|
+
# IMPLIED WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR
|
13
|
+
# PURPOSE, MERCHANTABLITY OR NON-INFRINGEMENT.
|
14
|
+
#
|
15
|
+
# See the Apache Version 2.0 License for specific language governing
|
16
|
+
# permissions and limitations under the License.
|
17
|
+
#
|
18
|
+
require 'yam/api'
|
19
|
+
|
20
|
+
module Yam
|
21
|
+
class Client < API
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
# Copyright (c) Microsoft Corporation
|
2
|
+
# All rights reserved.
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# THIS CODE IS PROVIDED *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
11
|
+
# ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY
|
12
|
+
# IMPLIED WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR
|
13
|
+
# PURPOSE, MERCHANTABLITY OR NON-INFRINGEMENT.
|
14
|
+
#
|
15
|
+
# See the Apache Version 2.0 License for specific language governing
|
16
|
+
# permissions and limitations under the License.
|
17
|
+
|
18
|
+
module Yam
|
19
|
+
module Configuration
|
20
|
+
VALID_OPTIONS_KEYS = [
|
21
|
+
:adapter,
|
22
|
+
:endpoint,
|
23
|
+
:oauth_token,
|
24
|
+
:user_agent,
|
25
|
+
].freeze
|
26
|
+
|
27
|
+
DEFAULT_ADAPTER = :net_http
|
28
|
+
|
29
|
+
DEFAULT_ENDPOINT = 'https://www.yammer.com/api/v1'.freeze
|
30
|
+
|
31
|
+
DEFAULT_OAUTH_TOKEN = nil
|
32
|
+
|
33
|
+
DEFAULT_USER_AGENT = "Yam Ruby Gem #{Yam::VERSION}".freeze
|
34
|
+
|
35
|
+
attr_accessor *VALID_OPTIONS_KEYS
|
36
|
+
|
37
|
+
def configure
|
38
|
+
yield self
|
39
|
+
end
|
40
|
+
|
41
|
+
def self.extended(base)
|
42
|
+
base.set_defaults
|
43
|
+
end
|
44
|
+
|
45
|
+
def options
|
46
|
+
options = {}
|
47
|
+
VALID_OPTIONS_KEYS.each { |k| options[k] = send(k) }
|
48
|
+
options
|
49
|
+
end
|
50
|
+
|
51
|
+
def set_defaults
|
52
|
+
self.adapter = DEFAULT_ADAPTER
|
53
|
+
self.endpoint = DEFAULT_ENDPOINT
|
54
|
+
self.oauth_token = DEFAULT_OAUTH_TOKEN
|
55
|
+
self.user_agent = DEFAULT_USER_AGENT
|
56
|
+
self
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
# Copyright (c) Microsoft Corporation
|
2
|
+
# All rights reserved.
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# THIS CODE IS PROVIDED *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
11
|
+
# ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY
|
12
|
+
# IMPLIED WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR
|
13
|
+
# PURPOSE, MERCHANTABLITY OR NON-INFRINGEMENT.
|
14
|
+
#
|
15
|
+
# See the Apache Version 2.0 License for specific language governing
|
16
|
+
# permissions and limitations under the License.
|
17
|
+
#
|
18
|
+
require 'faraday'
|
19
|
+
require 'yam/constants'
|
20
|
+
require 'faraday_middleware/response/mashify'
|
21
|
+
require 'faraday_middleware/response/parse_json'
|
22
|
+
require 'faraday_middleware/request/oauth2'
|
23
|
+
|
24
|
+
module Yam
|
25
|
+
module Connection
|
26
|
+
extend self
|
27
|
+
include Yam::Constants
|
28
|
+
|
29
|
+
def default_options(options={})
|
30
|
+
{
|
31
|
+
:headers => {
|
32
|
+
ACCEPT => 'application/json',
|
33
|
+
ACCEPT_CHARSET => 'utf-8',
|
34
|
+
USER_AGENT => user_agent
|
35
|
+
},
|
36
|
+
:ssl => { :verify => true },
|
37
|
+
:url => options.fetch(:endpoint) { Yam.endpoint }
|
38
|
+
}.merge(options)
|
39
|
+
end
|
40
|
+
|
41
|
+
# Returns a Faraday::Connection object
|
42
|
+
#
|
43
|
+
def connection(options = {})
|
44
|
+
conn_options = default_options(options)
|
45
|
+
clear_cache unless options.empty?
|
46
|
+
puts "OPTIONS:#{conn_options.inspect}" if ENV['DEBUG']
|
47
|
+
|
48
|
+
@connection ||= Faraday.new(conn_options) do |conn|
|
49
|
+
conn.use Faraday::Response::Mashify
|
50
|
+
conn.use FaradayMiddleware::ParseJson
|
51
|
+
conn.response :raise_error
|
52
|
+
|
53
|
+
if oauth_token?
|
54
|
+
conn.use FaradayMiddleware::OAuth2, oauth_token
|
55
|
+
end
|
56
|
+
|
57
|
+
conn.request :url_encoded
|
58
|
+
conn.adapter adapter
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# Copyright (c) Microsoft Corporation
|
2
|
+
# All rights reserved.
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# THIS CODE IS PROVIDED *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
11
|
+
# ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY
|
12
|
+
# IMPLIED WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR
|
13
|
+
# PURPOSE, MERCHANTABLITY OR NON-INFRINGEMENT.
|
14
|
+
#
|
15
|
+
# See the Apache Version 2.0 License for specific language governing
|
16
|
+
# permissions and limitations under the License.
|
17
|
+
#
|
18
|
+
module Yam
|
19
|
+
module Constants
|
20
|
+
extend self
|
21
|
+
|
22
|
+
USER_AGENT = 'User-Agent'.freeze
|
23
|
+
|
24
|
+
ACCEPT = 'Accept'.freeze
|
25
|
+
|
26
|
+
ACCEPT_CHARSET = 'Accept-Charset'.freeze
|
27
|
+
end
|
28
|
+
end
|
data/lib/yam/request.rb
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
# Copyright (c) Microsoft Corporation
|
2
|
+
# All rights reserved.
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# THIS CODE IS PROVIDED *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
11
|
+
# ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY
|
12
|
+
# IMPLIED WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR
|
13
|
+
# PURPOSE, MERCHANTABLITY OR NON-INFRINGEMENT.
|
14
|
+
#
|
15
|
+
# See the Apache Version 2.0 License for specific language governing
|
16
|
+
# permissions and limitations under the License.
|
17
|
+
#
|
18
|
+
|
19
|
+
# Defines HTTP verbs
|
20
|
+
module Yam
|
21
|
+
module Request
|
22
|
+
def get(path, params={}, options={})
|
23
|
+
request(:get, path, params, options)
|
24
|
+
end
|
25
|
+
|
26
|
+
def post(path, params={}, options={})
|
27
|
+
request(:post, path, params, options)
|
28
|
+
end
|
29
|
+
|
30
|
+
def request(method, path, params, options)
|
31
|
+
conn = connection(options)
|
32
|
+
path = (conn.path_prefix + path).gsub(/\/\//,'/') if conn.path_prefix != '/'
|
33
|
+
|
34
|
+
response = conn.send(method,path,params)
|
35
|
+
response.body
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
data/lib/yam/version.rb
CHANGED
@@ -1,4 +1,20 @@
|
|
1
|
+
# Copyright (c) Microsoft Corporation
|
2
|
+
# All rights reserved.
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# THIS CODE IS PROVIDED *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
11
|
+
# ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY
|
12
|
+
# IMPLIED WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR
|
13
|
+
# PURPOSE, MERCHANTABLITY OR NON-INFRINGEMENT.
|
14
|
+
#
|
15
|
+
# See the Apache Version 2.0 License for specific language governing
|
16
|
+
# permissions and limitations under the License.
|
17
|
+
|
1
18
|
module Yam
|
2
|
-
VERSION
|
3
|
-
LOCATION = File.dirname __FILE__ # :nodoc:
|
19
|
+
VERSION = '0.0.2'
|
4
20
|
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,59 @@
|
|
1
|
+
# Copyright (c) Microsoft Corporation
|
2
|
+
# All rights reserved.
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# THIS CODE IS PROVIDED *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
11
|
+
# ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY
|
12
|
+
# IMPLIED WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR
|
13
|
+
# PURPOSE, MERCHANTABLITY OR NON-INFRINGEMENT.
|
14
|
+
#
|
15
|
+
# See the Apache Version 2.0 License for specific language governing
|
16
|
+
# permissions and limitations under the License.
|
17
|
+
#
|
18
|
+
require 'simplecov'
|
19
|
+
SimpleCov.start do
|
20
|
+
add_filter 'spec'
|
21
|
+
end
|
22
|
+
require 'rspec'
|
23
|
+
require 'yam'
|
24
|
+
require 'webmock/rspec'
|
25
|
+
require 'bourne'
|
26
|
+
|
27
|
+
RSpec.configure do |config|
|
28
|
+
config.mock_with :mocha
|
29
|
+
config.include WebMock::API
|
30
|
+
config.order = :rand
|
31
|
+
config.color_enabled = true
|
32
|
+
config.before(:each) do
|
33
|
+
Yam.set_defaults
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def stub_post(path, endpoint = Yam.endpoint.to_s)
|
38
|
+
stub_request(:post, endpoint + path)
|
39
|
+
end
|
40
|
+
|
41
|
+
def stub_get(path, endpoint = Yam.endpoint.to_s)
|
42
|
+
stub_request(:get, endpoint + path)
|
43
|
+
end
|
44
|
+
|
45
|
+
def a_post(path, endpoint = Yam.endpoint.to_s)
|
46
|
+
a_request(:post, endpoint + path)
|
47
|
+
end
|
48
|
+
|
49
|
+
def a_get(path, endpoint = Yam.endpoint.to_s)
|
50
|
+
a_request(:get, endpoint + path)
|
51
|
+
end
|
52
|
+
|
53
|
+
def fixture_path
|
54
|
+
File.expand_path("../fixtures", __FILE__)
|
55
|
+
end
|
56
|
+
|
57
|
+
def fixture(file)
|
58
|
+
File.new(File.join(fixture_path, '/', file))
|
59
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
# Copyright (c) Microsoft Corporation
|
2
|
+
# All rights reserved.
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# THIS CODE IS PROVIDED *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
11
|
+
# ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY
|
12
|
+
# IMPLIED WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR
|
13
|
+
# PURPOSE, MERCHANTABLITY OR NON-INFRINGEMENT.
|
14
|
+
#
|
15
|
+
# See the Apache Version 2.0 License for specific language governing
|
16
|
+
# permissions and limitations under the License.
|
17
|
+
#
|
18
|
+
require 'spec_helper'
|
19
|
+
|
20
|
+
describe Yam::Client, '#get' do
|
21
|
+
it 'makes requests' do
|
22
|
+
stub_get('/custom/get')
|
23
|
+
subject.get('/custom/get')
|
24
|
+
expect(a_get('/custom/get')).to have_been_made
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
describe Yam::Client, '#post' do
|
29
|
+
it 'makes requests' do
|
30
|
+
stub_post('/custom/post')
|
31
|
+
subject.post('/custom/post')
|
32
|
+
expect(a_post('/custom/post')).to have_been_made
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'makes authorized requests' do
|
36
|
+
access_token = '123'
|
37
|
+
Yam.oauth_token = access_token
|
38
|
+
stub_post("/custom/post?access_token=#{access_token}")
|
39
|
+
subject.post('/custom/post')
|
40
|
+
expect(a_post("/custom/post?access_token=#{access_token}")).to have_been_made
|
41
|
+
end
|
42
|
+
end
|
data/spec/yam_spec.rb
ADDED
@@ -0,0 +1,100 @@
|
|
1
|
+
# Copyright (c) Microsoft Corporation
|
2
|
+
# All rights reserved.
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# THIS CODE IS PROVIDED *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
11
|
+
# ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY
|
12
|
+
# IMPLIED WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR
|
13
|
+
# PURPOSE, MERCHANTABLITY OR NON-INFRINGEMENT.
|
14
|
+
#
|
15
|
+
# See the Apache Version 2.0 License for specific language governing
|
16
|
+
# permissions and limitations under the License.
|
17
|
+
#
|
18
|
+
require 'spec_helper'
|
19
|
+
class TestClass
|
20
|
+
end
|
21
|
+
describe Yam do
|
22
|
+
|
23
|
+
after do
|
24
|
+
subject.set_defaults
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'responds to \'new\' message' do
|
28
|
+
subject.should respond_to :new
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'receives \'new\' and initialize subject::Client instance' do
|
32
|
+
subject.new.should be_a Yam::Client
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'delegates to a Yam::Client instance' do
|
36
|
+
Yam::Client.any_instance.stubs(:stubbed_method)
|
37
|
+
|
38
|
+
Yam.stubbed_method
|
39
|
+
|
40
|
+
Yam::Client.any_instance.should have_received(:stubbed_method)
|
41
|
+
end
|
42
|
+
|
43
|
+
it 'responds to \'configure\' message' do
|
44
|
+
subject.should respond_to :configure
|
45
|
+
end
|
46
|
+
|
47
|
+
describe 'setting configuration options' do
|
48
|
+
it 'returns the default adapter' do
|
49
|
+
subject.adapter.should == Yam::Configuration::DEFAULT_ADAPTER
|
50
|
+
end
|
51
|
+
|
52
|
+
it 'allows setting the adapter' do
|
53
|
+
subject.adapter = :typhoeus
|
54
|
+
subject.adapter.should == :typhoeus
|
55
|
+
end
|
56
|
+
|
57
|
+
it 'returns the default end point' do
|
58
|
+
subject.endpoint.should == Yam::Configuration::DEFAULT_ENDPOINT
|
59
|
+
end
|
60
|
+
|
61
|
+
it 'allows setting the endpoint' do
|
62
|
+
subject.endpoint = 'http://www.example.com'
|
63
|
+
subject.endpoint.should == 'http://www.example.com'
|
64
|
+
end
|
65
|
+
|
66
|
+
it 'returns the default user agent' do
|
67
|
+
subject.user_agent.should == Yam::Configuration::DEFAULT_USER_AGENT
|
68
|
+
end
|
69
|
+
|
70
|
+
it 'allows setting the user agent' do
|
71
|
+
subject.user_agent = 'New User Agent'
|
72
|
+
subject.user_agent.should == 'New User Agent'
|
73
|
+
end
|
74
|
+
|
75
|
+
it 'does not set oauth token' do
|
76
|
+
subject.oauth_token.should be_nil
|
77
|
+
end
|
78
|
+
|
79
|
+
it 'does not allow setting the oauth token' do
|
80
|
+
subject.oauth_token = 'OT'
|
81
|
+
subject.oauth_token.should == 'OT'
|
82
|
+
end
|
83
|
+
|
84
|
+
it 'allows setting the current api client' do
|
85
|
+
subject.should respond_to :api_client=
|
86
|
+
subject.should respond_to :api_client
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
describe '.configure' do
|
91
|
+
Yam::Configuration::VALID_OPTIONS_KEYS.each do |key|
|
92
|
+
it "should set the #{key}" do
|
93
|
+
Yam.configure do |config|
|
94
|
+
config.send("#{key}=", key)
|
95
|
+
Yam.send(key).should == key
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
data/yam.gemspec
CHANGED
@@ -1,22 +1,32 @@
|
|
1
|
-
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
2
4
|
|
3
|
-
|
4
|
-
gem.name = 'yam'
|
5
|
-
gem.version = Yam::VERSION
|
5
|
+
require 'yam/version'
|
6
6
|
|
7
|
-
|
7
|
+
Gem::Specification.new do |gem|
|
8
|
+
gem.name = 'yam'
|
9
|
+
gem.version = Yam::VERSION
|
10
|
+
gem.authors = ['Mason Fischer', 'Jessie A. Young']
|
11
|
+
gem.email = ['mason@thoughtbot.com', 'jessie@apprentice.io']
|
12
|
+
gem.description = %q{The official Yammer Ruby gem.}
|
13
|
+
gem.summary = %q{A Ruby wrapper for the Yammer REST API}
|
14
|
+
gem.homepage = %q{https://github.com/yammer/yam}
|
8
15
|
|
9
|
-
gem.
|
10
|
-
gem.
|
11
|
-
gem.
|
16
|
+
gem.files = `git ls-files`.split($/)
|
17
|
+
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
18
|
+
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
19
|
+
gem.require_paths = ['lib']
|
12
20
|
|
13
|
-
gem.
|
21
|
+
gem.add_dependency 'hashie', '~> 1.2.0'
|
22
|
+
gem.add_dependency 'faraday', '~> 0.8.1'
|
23
|
+
gem.add_dependency 'faraday_middleware', '~> 0.9.0'
|
24
|
+
gem.add_dependency 'multi_json', '~> 1.3'
|
25
|
+
gem.add_dependency 'oauth2', '~> 0.8.0'
|
14
26
|
|
15
|
-
gem.
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
yam.gemspec
|
21
|
-
]
|
27
|
+
gem.add_development_dependency 'rspec'
|
28
|
+
gem.add_development_dependency 'simplecov', '~> 0.7.1'
|
29
|
+
gem.add_development_dependency 'mocha', '~> 0.9.8'
|
30
|
+
gem.add_development_dependency 'bourne', '~> 1.0'
|
31
|
+
gem.add_development_dependency 'webmock', '~> 1.9.0'
|
22
32
|
end
|
metadata
CHANGED
@@ -1,57 +1,229 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: yam
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.2
|
5
|
+
prerelease:
|
5
6
|
platform: ruby
|
6
|
-
authors:
|
7
|
-
-
|
7
|
+
authors:
|
8
|
+
- Mason Fischer
|
9
|
+
- Jessie A. Young
|
8
10
|
autorequire:
|
9
11
|
bindir: bin
|
10
12
|
cert_chain: []
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
13
|
+
date: 2012-12-12 00:00:00.000000000 Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: hashie
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
18
|
+
none: false
|
19
|
+
requirements:
|
20
|
+
- - ~>
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 1.2.0
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
none: false
|
27
|
+
requirements:
|
28
|
+
- - ~>
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
version: 1.2.0
|
31
|
+
- !ruby/object:Gem::Dependency
|
32
|
+
name: faraday
|
33
|
+
requirement: !ruby/object:Gem::Requirement
|
34
|
+
none: false
|
35
|
+
requirements:
|
36
|
+
- - ~>
|
37
|
+
- !ruby/object:Gem::Version
|
38
|
+
version: 0.8.1
|
39
|
+
type: :runtime
|
40
|
+
prerelease: false
|
41
|
+
version_requirements: !ruby/object:Gem::Requirement
|
42
|
+
none: false
|
43
|
+
requirements:
|
44
|
+
- - ~>
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: 0.8.1
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: faraday_middleware
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 0.9.0
|
55
|
+
type: :runtime
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: !ruby/object:Gem::Requirement
|
58
|
+
none: false
|
59
|
+
requirements:
|
60
|
+
- - ~>
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: 0.9.0
|
63
|
+
- !ruby/object:Gem::Dependency
|
64
|
+
name: multi_json
|
65
|
+
requirement: !ruby/object:Gem::Requirement
|
66
|
+
none: false
|
67
|
+
requirements:
|
68
|
+
- - ~>
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: '1.3'
|
71
|
+
type: :runtime
|
72
|
+
prerelease: false
|
73
|
+
version_requirements: !ruby/object:Gem::Requirement
|
74
|
+
none: false
|
75
|
+
requirements:
|
76
|
+
- - ~>
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: '1.3'
|
79
|
+
- !ruby/object:Gem::Dependency
|
80
|
+
name: oauth2
|
81
|
+
requirement: !ruby/object:Gem::Requirement
|
82
|
+
none: false
|
83
|
+
requirements:
|
84
|
+
- - ~>
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
version: 0.8.0
|
87
|
+
type: :runtime
|
88
|
+
prerelease: false
|
89
|
+
version_requirements: !ruby/object:Gem::Requirement
|
90
|
+
none: false
|
91
|
+
requirements:
|
92
|
+
- - ~>
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: 0.8.0
|
95
|
+
- !ruby/object:Gem::Dependency
|
96
|
+
name: rspec
|
97
|
+
requirement: !ruby/object:Gem::Requirement
|
98
|
+
none: false
|
99
|
+
requirements:
|
100
|
+
- - ! '>='
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: '0'
|
103
|
+
type: :development
|
104
|
+
prerelease: false
|
105
|
+
version_requirements: !ruby/object:Gem::Requirement
|
106
|
+
none: false
|
107
|
+
requirements:
|
108
|
+
- - ! '>='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: simplecov
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
none: false
|
115
|
+
requirements:
|
116
|
+
- - ~>
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
version: 0.7.1
|
119
|
+
type: :development
|
120
|
+
prerelease: false
|
121
|
+
version_requirements: !ruby/object:Gem::Requirement
|
122
|
+
none: false
|
123
|
+
requirements:
|
124
|
+
- - ~>
|
125
|
+
- !ruby/object:Gem::Version
|
126
|
+
version: 0.7.1
|
127
|
+
- !ruby/object:Gem::Dependency
|
128
|
+
name: mocha
|
129
|
+
requirement: !ruby/object:Gem::Requirement
|
130
|
+
none: false
|
131
|
+
requirements:
|
132
|
+
- - ~>
|
133
|
+
- !ruby/object:Gem::Version
|
134
|
+
version: 0.9.8
|
135
|
+
type: :development
|
136
|
+
prerelease: false
|
137
|
+
version_requirements: !ruby/object:Gem::Requirement
|
138
|
+
none: false
|
139
|
+
requirements:
|
140
|
+
- - ~>
|
141
|
+
- !ruby/object:Gem::Version
|
142
|
+
version: 0.9.8
|
143
|
+
- !ruby/object:Gem::Dependency
|
144
|
+
name: bourne
|
145
|
+
requirement: !ruby/object:Gem::Requirement
|
146
|
+
none: false
|
147
|
+
requirements:
|
148
|
+
- - ~>
|
149
|
+
- !ruby/object:Gem::Version
|
150
|
+
version: '1.0'
|
151
|
+
type: :development
|
152
|
+
prerelease: false
|
153
|
+
version_requirements: !ruby/object:Gem::Requirement
|
154
|
+
none: false
|
155
|
+
requirements:
|
156
|
+
- - ~>
|
157
|
+
- !ruby/object:Gem::Version
|
158
|
+
version: '1.0'
|
159
|
+
- !ruby/object:Gem::Dependency
|
160
|
+
name: webmock
|
161
|
+
requirement: !ruby/object:Gem::Requirement
|
162
|
+
none: false
|
163
|
+
requirements:
|
164
|
+
- - ~>
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: 1.9.0
|
167
|
+
type: :development
|
168
|
+
prerelease: false
|
169
|
+
version_requirements: !ruby/object:Gem::Requirement
|
170
|
+
none: false
|
171
|
+
requirements:
|
172
|
+
- - ~>
|
173
|
+
- !ruby/object:Gem::Version
|
174
|
+
version: 1.9.0
|
175
|
+
description: The official Yammer Ruby gem.
|
176
|
+
email:
|
177
|
+
- mason@thoughtbot.com
|
178
|
+
- jessie@apprentice.io
|
18
179
|
executables: []
|
19
|
-
|
20
180
|
extensions: []
|
21
|
-
|
22
181
|
extra_rdoc_files: []
|
23
|
-
|
24
|
-
|
25
|
-
-
|
182
|
+
files:
|
183
|
+
- .gitignore
|
184
|
+
- .travis.yml
|
185
|
+
- CONTRIBUTING.md
|
186
|
+
- Gemfile
|
187
|
+
- LICENSE.txt
|
188
|
+
- README.md
|
189
|
+
- Rakefile
|
26
190
|
- lib/yam.rb
|
191
|
+
- lib/yam/api.rb
|
192
|
+
- lib/yam/client.rb
|
193
|
+
- lib/yam/configuration.rb
|
194
|
+
- lib/yam/connection.rb
|
195
|
+
- lib/yam/constants.rb
|
196
|
+
- lib/yam/request.rb
|
197
|
+
- lib/yam/version.rb
|
198
|
+
- spec/spec_helper.rb
|
199
|
+
- spec/yam/client_spec.rb
|
200
|
+
- spec/yam_spec.rb
|
27
201
|
- yam.gemspec
|
28
|
-
|
29
|
-
homepage:
|
202
|
+
homepage: https://github.com/yammer/yam
|
30
203
|
licenses: []
|
31
|
-
|
32
204
|
post_install_message:
|
33
205
|
rdoc_options: []
|
34
|
-
|
35
|
-
require_paths:
|
206
|
+
require_paths:
|
36
207
|
- lib
|
37
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
208
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
209
|
+
none: false
|
210
|
+
requirements:
|
211
|
+
- - ! '>='
|
212
|
+
- !ruby/object:Gem::Version
|
213
|
+
version: '0'
|
214
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
215
|
+
none: false
|
216
|
+
requirements:
|
217
|
+
- - ! '>='
|
218
|
+
- !ruby/object:Gem::Version
|
219
|
+
version: '0'
|
49
220
|
requirements: []
|
50
|
-
|
51
221
|
rubyforge_project:
|
52
|
-
rubygems_version: 1.
|
222
|
+
rubygems_version: 1.8.24
|
53
223
|
signing_key:
|
54
224
|
specification_version: 3
|
55
|
-
summary:
|
56
|
-
test_files:
|
57
|
-
|
225
|
+
summary: A Ruby wrapper for the Yammer REST API
|
226
|
+
test_files:
|
227
|
+
- spec/spec_helper.rb
|
228
|
+
- spec/yam/client_spec.rb
|
229
|
+
- spec/yam_spec.rb
|