rest.js 4 KB
/*
 * Copyright 2015 Open Networking Laboratory
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/*
 ONOS GUI -- Remote Communications Module -- REST Service
 */
(function () {
    'use strict';

    var $log;


    // TODO: remove temporary test code
    var fakeData = {
        '1': {
            "devices": [{
                "id": "of:0000000000000001",
                "available": true,
                "_iconid_available": "deviceOnline",
                "role": "MASTER",
                "mfr": "Nicira, Inc.",
                "hw": "Open vSwitch",
                "sw": "2.0.1",
                "serial": "None",
                "annotations": {
                    "protocol": "OF_10"
                }
            },
            {
                "id": "of:0000000000000004",
                "available": false,
                "_iconid_available": "deviceOffline",
                "role": "MASTER",
                "mfr": "Nicira, Inc.",
                "hw": "Open vSwitch",
                "sw": "2.0.1",
                "serial": "None",
                "annotations": {
                    "protocol": "OF_10"
                }
            },
            {
                "id": "of:0000000000000092",
                "available": false,
                "_iconid_available": "deviceOffline",
                "role": "MASTER",
                "mfr": "Nicira, Inc.",
                "hw": "Open vSwitch",
                "sw": "2.0.1",
                "serial": "None",
                "annotations": {
                    "protocol": "OF_10"
                }
            }]
        },
        '2': {
            "devices": [{
                "id": "of:0000000000000002",
                "available": true,
                "_iconid_available": "deviceOnline",
                "role": "MASTER",
                "mfr": "Nicira, Inc.",
                "hw": "Open vSwitch",
                "sw": "2.0.0",
                "serial": "None",
                "annotations": {
                    "protocol": "OF_10"
                }
            },
            {
                "id": "of:0000000000000006",
                "available": true,
                "_iconid_available": "deviceOnline",
                "role": "MASTER",
                "mfr": "Nicira, Inc.",
                "hw": "Open vSwitch",
                "sw": "2.1.1",
                "serial": "None",
                "annotations": {
                    "protocol": "OF_10"
                }
            }]
        },
        'empty': {
            devices: []
        }
    };

    function getFakeData(url) {
        var id = url.slice(5);

        return fakeData[id] || fakeData.empty;
    }

    angular.module('onosRemote')
        .factory('RestService', ['$log', '$http', 'UrlFnService',
        function (_$log_, $http, ufs) {
            $log = _$log_;

            function get(url, callback) {
                // TODO: remove temporary test code
                if (url.match(/^test\//)) {
                    callback(getFakeData(url));
                    return;
                }
                var fullUrl = ufs.rsUrl(url);

                $http.get(fullUrl).then(function (response) {
                    // success
                    callback(response.data);
                }, function (response) {
                    // error
                    $log.warn('Failed to retrieve JSON data: ' + fullUrl,
                        response.status, response.data);
                });
            }

            return {
                get: get
            };
        }]);

}());