forked from jimmoffitt/rbHistoricalPT
-
Notifications
You must be signed in to change notification settings - Fork 0
/
pt_restful.rb
154 lines (127 loc) · 4.44 KB
/
pt_restful.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
#=======================================================================================================================
# A simple RESTful HTTP class put together to be a "common" class.
# Knows a bunch about HTTP, and a little about the PowerTrack family of products.
#
# This code evolved as it toured several PowerTrack products:
# Historical
# Rehydration.
# TODO: Search
#
# To be common to all PowerTrack ruby (RESTful) clients: Historical, Rehydration, Search.
# Stateless.
# A RESTful set of HTTP methods.
#
#Current PowerTrack products this object works with:
# * Historical
# * Rehydration
# * Search
require "net/https" #HTTP gem.
require "uri" #HTTP gem.
require "open-uri" #Used in downloadFiles method.
class PtRESTful
attr_accessor :url, :user_name, :password_encoded, :headers, :data, :data_agent
def initialize(url=nil, user_name=nil, password_encoded=nil, headers=nil)
if not url.nil?
@url = url
end
if not user_name.nil?
@user_name = user_name
end
if not password_encoded.nil?
@password_encoded = password_encoded
@password = Base64.decode64(@password_encoded)
end
if not headers.nil?
@headers = headers
end
end
def url=(value)
@url = value
@uri = URI.parse(@url)
end
def password_encoded=(value)
@password_encoded=value
if not @password_encoded.nil? then
@password = Base64.decode64(@password_encoded)
end
end
#Helper functions for building URLs
def getHistoricalURL(account_name=nil)
@url = "https://historical.gnip.com:443/accounts/" #Root url for Historical PowerTrack API.
if account_name.nil? then #using object account_name attribute.
if @account_name.nil?
p "No account name set. Can not set url."
else
@url = @url + @account_name + "/jobs.json"
end
else #account_name passed in, so use that...
@url = @url + account_name + "/jobs.json"
end
end
def getRehydrationURL(account_name=nil)
@url = "https://rehydration.gnip.com:443/accounts/" #Root url for Rehydration PowerTrack.
if account_name.nil? then #using object account_name attribute.
if @account_name.nil?
p "No account name set. Can not set url."
else
@url = @url + @account_name + "/publishers/twitter/rehydration/activities.json?ids="
end
else #account_name passed in, so use that...
@url = @url + account_name + "/publishers/twitter/rehydration/activities.json?ids="
end
end
#Fundamental REST API methods
def POST(data=nil)
if not data.nil? #if request data passed in, use it.
@data = data
end
uri = URI(@url)
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Post.new(uri.path)
request.body = @data
request.basic_auth(@user_name, @password)
response = http.request(request)
return response
end
def PUT(data=nil)
if not data.nil? #if request data passed in, use it.
@data = data
end
uri = URI(@url)
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Put.new(uri.path)
request.body = @data
request.basic_auth(@user_name, @password)
response = http.request(request)
return response
end
def GET(params=nil)
uri = URI(@url)
#params are passed in as a hash.
#Example: params["max"] = 100, params["since_date"] = 20130321000000
if not params.nil?
uri.query = URI.encode_www_form(params)
end
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Get.new(uri.request_uri)
request.basic_auth(@user_name, @password)
response = http.request(request)
return response
end
def DELETE(data=nil)
if not data.nil?
@data = data
end
uri = URI(@url)
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Delete.new(uri.path)
request.body = @data
request.basic_auth(@user_name, @password)
response = http.request(request)
return response
end
end