class MessageApi

Public Class Methods

new(configuration) click to toggle source
# File lib/ozeki_libs_rest.rb, line 41
def initialize(configuration)
    @_configuration = configuration
end

Public Instance Methods

create_authorization_header(username, password) click to toggle source
# File lib/ozeki_libs_rest.rb, line 45
def create_authorization_header(username, password)
    username_password = username + ':' + password
    username_password_encoded = Base64.encode64(username_password)
    'Basic ' + username_password_encoded
end
create_request_body(messages) click to toggle source
# File lib/ozeki_libs_rest.rb, line 51
def create_request_body(messages)
    messages_array= Array.new
    messages_hash = Hash.new
    if messages.kind_of?(Array)
        messages.each do |message|
            if message.kind_of?(Message)
                messages_array.append(message.get_hash)
            end
        end
        messages_hash[:messages] = messages_array
        messages_hash.to_json
    elsif messages.kind_of?(Message)
        messages_array.append(messages.get_hash)
        messages_hash[:messages] = messages_array
        messages_hash.to_json
    else
        messages_hash[:messages] = messages_array
        messages_hash.to_json
    end
end
create_request_body_to_manipualte(messages, folder) click to toggle source
# File lib/ozeki_libs_rest.rb, line 72
def create_request_body_to_manipualte(messages, folder)
    message_ids_array= Array.new
    message_ids_hash = Hash.new
    if messages.kind_of?(Array)
        messages.each do |message|
            if message.kind_of?(Message)
                message_ids_array.append(message.id)
            end
        end
        message_ids_hash[:folder] = folder
        message_ids_hash[:message_ids] = message_ids_array
        message_ids_hash.to_json
    elsif messages.kind_of?(Message)
        message_ids_array.append(messages.id)
        message_ids_hash[:folder] = folder
        message_ids_hash[:message_ids] = message_ids_array
        message_ids_hash.to_json
    else
        message_ids_hash[:folder] = folder
        message_ids_hash[:message_ids] = message_ids_array
        message_ids_hash.to_json
    end
end
create_uri_to_delete_sms(url) click to toggle source
# File lib/ozeki_libs_rest.rb, line 333
def create_uri_to_delete_sms(url)
    base_url = url.split('?')[0]
    '%s?action=deletemsg' % [base_url]
end
create_uri_to_mark_sms(url) click to toggle source
# File lib/ozeki_libs_rest.rb, line 338
def create_uri_to_mark_sms(url)
    base_url = url.split('?')[0]
    '%s?action=markmsg' % [base_url]
end
create_uri_to_receive_sms(url, folder) click to toggle source
# File lib/ozeki_libs_rest.rb, line 343
def create_uri_to_receive_sms(url, folder)
    base_url = url.split('?')[0]
    '%s?action=receivemsg&folder=%s' % [base_url, folder]
end
create_uri_to_send_sms(url) click to toggle source
# File lib/ozeki_libs_rest.rb, line 328
def create_uri_to_send_sms(url)
    base_url = url.split('?')[0]
    '%s?action=sendmsg' % [base_url]
end
delete(folder, messages) click to toggle source
# File lib/ozeki_libs_rest.rb, line 381
def delete(folder, messages)
    authorization_header = self.create_authorization_header(@_configuration.username, @_configuration.password)
    request_body = self.create_request_body_to_manipualte(messages, folder)
    response = self.do_request_post(self.create_uri_to_delete_sms(@_configuration.apiurl), authorization_header, request_body)
    result = self.get_response_delete(response, messages)
    if messages.kind_of?(Message)
        if result.total_count.eql? 1 and result.failed_count.eql? 0
            result = true
        else
            result = false
        end
    end
    result
end
do_request_get(url, authorization_header) click to toggle source
# File lib/ozeki_libs_rest.rb, line 360
def do_request_get(url, authorization_header)
    headers = {
        'Authorization' => authorization_header,
        'Accept' => 'application/json'
    }
    response = Faraday.get(url, nil, headers)
    response.body
end
do_request_post(url, authorization_header, request_body) click to toggle source
# File lib/ozeki_libs_rest.rb, line 350
def do_request_post(url, authorization_header, request_body)
    headers = {
        'Authorization' => authorization_header,
        'Content-Type' => 'application/json',
        'Accept' => 'application/json'
    }
    response = Faraday.post(url, request_body, headers)
    response.body
end
download_incoming() click to toggle source
# File lib/ozeki_libs_rest.rb, line 411
def download_incoming()
    authorization_header = self.create_authorization_header(@_configuration.username, @_configuration.password)
    response = self.do_request_get(self.create_uri_to_receive_sms(@_configuration.apiurl, Folder.new().inbox), authorization_header)
    result = self.get_response_receive(response)
    result
end
get_response_delete(response, messages) click to toggle source
# File lib/ozeki_libs_rest.rb, line 96
def get_response_delete(response, messages)
    if messages.kind_of?(Array)
        json = JSON.parse(response)
        result = MessageDeleteResult.new(json['data']['folder'])
        message_ids = json['data']['message_ids']
        messages.each do |message|
            success = false
            message_ids.each do |id|
                if id.eql? message.id
                    success = true
                end
            end
            if success
                result.add_message_id_remove_succeeded(message.id)
            else
                result.add_message_id_remove_failed(message.id)
            end
        end
    elsif messages.kind_of?(Message)
        json = JSON.parse(response)
        result = MessageDeleteResult.new(json['data']['folder'])
        message_ids = json['data']['message_ids']
        success = false
        message_ids.each do |id|
            if messages.id.eql? id
                success = true
            end
        end
        if success
            result.add_message_id_remove_succeeded(messages.id)
        else
            result.add_message_id_remove_failed(messages.id)
        end
    else
        result = MessageDeleteResult.new('')
    end
    result
end
get_response_mark(response, messages) click to toggle source
# File lib/ozeki_libs_rest.rb, line 135
def get_response_mark(response, messages)
    if messages.kind_of?(Array)
        json = JSON.parse(response)
        result = MessageMarkResult.new(json['data']['folder'])
        message_ids = json['data']['message_ids']
        messages.each do |message|
            success = false
            message_ids.each do |id|
                if id.eql? message.id
                    success = true
                end
            end
            if success
                result.add_message_id_mark_succeeded(message.id)
            else
                result.add_message_id_mark_failed(message.id)
            end
        end
    elsif messages.kind_of?(Message)
        json = JSON.parse(response)
        result = MessageMarkResult.new(json['data']['folder'])
        message_ids = json['data']['message_ids']
        success = false
        message_ids.each do |id|
            if messages.id.eql? id
                success = true
            end
        end
        if success
            result.add_message_id_mark_succeeded(messages.id)
        else
            result.add_message_id_mark_failed(messages.id)
        end
    else
        result = MessageMarkResult.new('')
    end
    result
end
get_response_receive(response) click to toggle source
# File lib/ozeki_libs_rest.rb, line 255
def get_response_receive(response)
    json_object = JSON.parse(response)
    result = MessageReceiveResult.new(json_object['data']['folder'], json_object['data']['limit'])
    messages = json_object['data']['data']
    messages.each do |message|
        msg = Message.new
        if message['message_id']
            msg.id = message['message_id']
        end
        if message['from_connection']
            msg.from_connection = message['from_connection']
        end
        if message['from_address']
            msg.from_address = message['from_address']
        end
        if message['from_station']
            msg.from_station = message['from_station']
        end
        if message['to_connection']
            msg.to_connection = message['to_connection']
        end
        if message['to_address']
            msg.to_address = message['to_address']
        end
        if message['to_station']
            msg.to_station = message['to_station']
        end
        if message['text']
            msg.text = message['text']
        end
        if message['create_date']
            msg.create_date = message['create_date']
        end
        if message['valid_until']
            msg.valid_until = message['valid_until']
        end
        if message['time_to_send']
            msg.time_to_send = message['time_to_send']
        end
        if message['submit_report_requested']
            if message['submit_report_requested'].eql? 'true'
                msg.is_submit_report_requested = true
            else
                msg.is_submit_report_requested = false
            end
        end
        if message['delivery_report_requested']
            if message['delivery_report_requested'].eql? 'true'
                msg.is_delivery_report_requested= true
            else
                msg.is_delivery_report_requested = false
            end
        end
        if message['view_report_requested']
            if message['view_report_requested'].eql? 'true'
                msg.is_view_report_requested = true
            else
                msg.is_view_report_requested = false
            end
        end
        if message['tags']
            message['tags'].each do |tag|
                key = tag['name']
                value = tag['value']
                msg.add_tag(key, value)
            end
        end
        result.append_message(msg)
    end
    self.delete(json_object['data']['folder'], result.messages)
    result
end
get_response_send(response) click to toggle source
# File lib/ozeki_libs_rest.rb, line 174
def get_response_send(response)
    json_object = JSON.parse(response)
    total_count = json_object['data']['total_count']
    success_count = json_object['data']['success_count']
    failed_count = json_object['data']['failed_count']
    messages = json_object['data']['messages']
    results_array = Array.new
    messages.each do |message|
        msg = Message.new
        if message['message_id']
            msg.id = message['message_id']
        end
        if message['from_connection']
            msg.from_connection = message['from_connection']
        end
        if message['from_address']
            msg.from_address = message['from_address']
        end
        if message['from_station']
            msg.from_station = message['from_station']
        end
        if message['to_connection']
            msg.to_connection = message['to_connection']
        end
        if message['to_address']
            msg.to_address = message['to_address']
        end
        if message['to_station']
            msg.to_station = message['to_station']
        end
        if message['text']
            msg.text = message['text']
        end
        if message['create_date']
            msg.create_date = message['create_date']
        end
        if message['valid_until']
            msg.valid_until = message['valid_until']
        end
        if message['time_to_send']
            msg.time_to_send = message['time_to_send']
        end
        if message['submit_report_requested']
            if message['submit_report_requested'].eql? 'true'
                msg.is_submit_report_requested = true
            else
                msg.is_submit_report_requested = false
            end
        end
        if message['delivery_report_requested']
            if message['delivery_report_requested'].eql? 'true'
                msg.is_delivery_report_requested= true
            else
                msg.is_delivery_report_requested = false
            end
        end
        if message['view_report_requested']
            if message['view_report_requested'].eql? 'true'
                msg.is_view_report_requested = true
            else
                msg.is_view_report_requested = false
            end
        end
        if message['tags']
            message['tags'].each do |tag|
                key = tag['name']
                value = tag['value']
                msg.add_tag(key, value)
            end
        end
        if message['status'].eql? 'SUCCESS'
            result = MessageSendResult.new(msg, DeliveryStatus.new().success, '')
            results_array.append(result)
        else
            result = MessageSendResult.new(msg, DeliveryStatus.new().failed, message['status'])
            results_array.append(result)
        end
    end
    MessageSendResults.new(total_count, success_count, failed_count, results_array)
end
mark(folder, messages) click to toggle source
# File lib/ozeki_libs_rest.rb, line 396
def mark(folder, messages)
    authorization_header = self.create_authorization_header(@_configuration.username, @_configuration.password)
    request_body = self.create_request_body_to_manipualte(messages, folder)
    response = self.do_request_post(self.create_uri_to_mark_sms(@_configuration.apiurl), authorization_header, request_body)
    result = self.get_response_mark(response, messages)
    if messages.kind_of?(Message)
        if result.total_count.eql? 1 and result.failed_count.eql? 0
            result = true
        else
            result = false
        end
    end
    result
end
send(messages) click to toggle source
# File lib/ozeki_libs_rest.rb, line 369
def send(messages)
    authorization_header = self.create_authorization_header(@_configuration.username, @_configuration.password)
    request_body = self.create_request_body(messages)
    response = self.do_request_post(self.create_uri_to_send_sms(@_configuration.apiurl), authorization_header, request_body)
    if self.get_response_send(response).total_count.eql? 1
        result = self.get_response_send(response).results[0]
    else
        result = self.get_response_send(response)
    end
    result
end