twilip 0.0.5

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.
@@ -0,0 +1,4 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in twilip.gemspec
4
+ gemspec
@@ -0,0 +1,2 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
File without changes
@@ -0,0 +1,51 @@
1
+ require 'net/http'
2
+ require 'uri'
3
+
4
+ class BaseAdapter
5
+ attr_writer :headers
6
+ def headers
7
+ @headers ||= default_headers_map
8
+ end
9
+
10
+ def default_headers_map
11
+ headers = []
12
+ headers << ["User-Agent", Twilip::Client::USER_AGENT]
13
+ headers << ["Accept", "application/json"]
14
+ headers << ["Pragma", "no-cache"]
15
+ headers
16
+ end
17
+
18
+ def add_headers(request)
19
+
20
+ headers.each do |header|
21
+ request.add_field(header[0], headers[1])
22
+ end
23
+ request
24
+ end
25
+
26
+ def initialize(config = {})
27
+ @login = config["login"]
28
+ @password = config["password"]
29
+ end
30
+
31
+ def add_tags(message, tags)
32
+ @message = message.strip
33
+
34
+ unless tags.empty?
35
+ tags.each do |tag|
36
+ @message << " ##{tag.strip}"
37
+ end
38
+ end
39
+ @message
40
+ end
41
+
42
+ def process_deliver(api_url, *form_data)
43
+ url = URI.parse(api_url)
44
+ request = Net::HTTP::Post.new(url.path)
45
+ request.basic_auth @login, @password
46
+ request.set_form_data(*form_data)
47
+ response = Net::HTTP.new(url.host, url.port).start {|http| http.request(add_headers(request)) }
48
+ JSON.parse(response.body)
49
+ end
50
+
51
+ end
@@ -0,0 +1,10 @@
1
+ class BlipAdapter < BaseAdapter
2
+
3
+ URL = "http://api.blip.pl/updates"
4
+
5
+ def deliver(message, tags = [])
6
+ message = add_tags(message, tags)
7
+ process_deliver(URL, {'body' => message[0,160]}, ';')
8
+ end
9
+
10
+ end
@@ -0,0 +1,12 @@
1
+ class FlakerAdapter < BaseAdapter
2
+ URL = "http://api.flaker.pl/api/type:submit"
3
+
4
+ def deliver(message, tags = [])
5
+
6
+ message = add_tags(message, tags)
7
+
8
+ process_deliver(URL, {"text" => message}, "&" )
9
+
10
+ end
11
+
12
+ end
@@ -0,0 +1,12 @@
1
+ require File.join(File.dirname(__FILE__),'base_adapter' )
2
+
3
+ class PingerAdapter < BaseAdapter
4
+ URL = "http://a.pinger.pl/auth_add_message.json"
5
+
6
+ def deliver(message, tags = [])
7
+ message = add_tags(message, tags)
8
+ process_deliver(URL, {"text" => message}, "&")
9
+ end
10
+
11
+ end
12
+
@@ -0,0 +1,24 @@
1
+ require "rubygems"
2
+ require "twitter"
3
+
4
+ class TwitterAdapter < BaseAdapter
5
+
6
+ def initialize(conf = {})
7
+
8
+ Twitter.configure do |config|
9
+ config.consumer_key = conf["consumer_key"]
10
+ config.consumer_secret = conf["consumer_secret"]
11
+ config.oauth_token = conf["oauth_token"]
12
+ config.oauth_token_secret = conf["oauth_token_secret"]
13
+ end
14
+
15
+ end
16
+
17
+ def deliver(message, tags = [])
18
+ message = add_tags(message, tags)
19
+
20
+ Twitter.update(message[0,140])
21
+
22
+ end
23
+
24
+ end
File without changes
@@ -0,0 +1,57 @@
1
+ require 'yaml'
2
+ require 'rubygems'
3
+ require 'googl'
4
+ require 'twilip/version'
5
+
6
+ module Twilip
7
+ class Client
8
+
9
+ DEFAULT_CONFIG_FILE = "twilip.yml"
10
+ USER_AGENT = "Twilip - ruby api wrapper for microblogs - #{Twilip::VERSION}"
11
+
12
+ def initialize(config_file_url = nil)
13
+ @config_file = config_file_url ? config_file_url : DEFAULT_CONFIG_FILE
14
+
15
+ load_adapters
16
+ end
17
+
18
+ def load_adapters
19
+ lib_dir = File.dirname(__FILE__)
20
+ full_pattern = File.join(lib_dir, 'adapters', '*.rb')
21
+ Dir.glob(full_pattern).each { |file| require file }
22
+ end
23
+
24
+ def config
25
+ YAML.load_file @config_file
26
+ end
27
+
28
+ def deliver(message, tags=nil)
29
+
30
+ if tags
31
+ @tags = tags.split(",").map {|m| m.strip }
32
+ else
33
+ @tags = []
34
+ end
35
+
36
+ preprocessed_message = preprocess_message(message)
37
+
38
+ config["adapters"].each do |adapter|
39
+ adapter_class = "#{adapter.capitalize}Adapter"
40
+ adapter_class = Twilip.const_get(adapter_class)
41
+ a_class = adapter_class.new config[adapter.to_s]
42
+ a_class.deliver(preprocessed_message, @tags)
43
+ end
44
+
45
+ end
46
+
47
+ def preprocess_message(message)
48
+ # find urls :)
49
+ url_regexp = /http[s]?:\/\/\w/
50
+ url = message.split.grep(url_regexp).to_s
51
+
52
+ short = Googl.shorten url
53
+ message.gsub!(url, short.short_url)
54
+ end
55
+
56
+ end
57
+ end
@@ -0,0 +1,23 @@
1
+ adapters:
2
+ - blip
3
+
4
+ blip:
5
+ login: blip_user
6
+ password: blip_password
7
+
8
+ twitter:
9
+ consumer_key: 6adjf;lkas;d
10
+ consumer_secret: 4lajdhfuwefj
11
+ oauth_token: 256645873-asldjfhauwehf
12
+ oauth_token_secret: uQasdljfhoauw
13
+
14
+ flaker:
15
+ login: username_flaker
16
+ password: pass_flaker
17
+
18
+ pinger:
19
+ login: pinger-login
20
+ password: pinger_password
21
+
22
+
23
+
@@ -0,0 +1,4 @@
1
+ module Twilip
2
+ VERSION = "0.0.5"
3
+ end
4
+
@@ -0,0 +1,24 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "twilip/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "twilip"
7
+ s.version = Twilip::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ["Mariusz Nosinski"]
10
+ s.email = ["marioosh@5dots.pl"]
11
+ s.homepage = "http://marioosh.5dots.pl"
12
+ s.summary = %q{Twilip is ruby wrapper for popular microblogs, like Twitter, Blip, Flaker and Pinger}
13
+ s.description = %q{With twilip you can deliver one message to how many microblogs you want. All you need is another adapter and credentials in config file.}
14
+
15
+ s.add_dependency('googl')
16
+ s.add_dependency('twitter')
17
+
18
+ # s.rubyforge_project = "twilip"
19
+
20
+ s.files = `git ls-files`.split("\n")
21
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
22
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
23
+ s.require_paths = ["lib"]
24
+ end
metadata ADDED
@@ -0,0 +1,108 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: twilip
3
+ version: !ruby/object:Gem::Version
4
+ hash: 21
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 5
10
+ version: 0.0.5
11
+ platform: ruby
12
+ authors:
13
+ - Mariusz Nosinski
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2011-02-24 00:00:00 +01:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: googl
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: 3
30
+ segments:
31
+ - 0
32
+ version: "0"
33
+ type: :runtime
34
+ version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
36
+ name: twitter
37
+ prerelease: false
38
+ requirement: &id002 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ hash: 3
44
+ segments:
45
+ - 0
46
+ version: "0"
47
+ type: :runtime
48
+ version_requirements: *id002
49
+ description: With twilip you can deliver one message to how many microblogs you want. All you need is another adapter and credentials in config file.
50
+ email:
51
+ - marioosh@5dots.pl
52
+ executables: []
53
+
54
+ extensions: []
55
+
56
+ extra_rdoc_files: []
57
+
58
+ files:
59
+ - .gitignore
60
+ - Gemfile
61
+ - Rakefile
62
+ - lib/adapters/.gitkeep
63
+ - lib/adapters/base_adapter.rb
64
+ - lib/adapters/blip.rb
65
+ - lib/adapters/flaker.rb
66
+ - lib/adapters/pinger.rb
67
+ - lib/adapters/twitter.rb
68
+ - lib/test/.gitkeep
69
+ - lib/twilip.rb
70
+ - lib/twilip.yml.example
71
+ - lib/twilip/version.rb
72
+ - twilip.gemspec
73
+ has_rdoc: true
74
+ homepage: http://marioosh.5dots.pl
75
+ licenses: []
76
+
77
+ post_install_message:
78
+ rdoc_options: []
79
+
80
+ require_paths:
81
+ - lib
82
+ required_ruby_version: !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ">="
86
+ - !ruby/object:Gem::Version
87
+ hash: 3
88
+ segments:
89
+ - 0
90
+ version: "0"
91
+ required_rubygems_version: !ruby/object:Gem::Requirement
92
+ none: false
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ hash: 3
97
+ segments:
98
+ - 0
99
+ version: "0"
100
+ requirements: []
101
+
102
+ rubyforge_project:
103
+ rubygems_version: 1.5.0
104
+ signing_key:
105
+ specification_version: 3
106
+ summary: Twilip is ruby wrapper for popular microblogs, like Twitter, Blip, Flaker and Pinger
107
+ test_files: []
108
+