1// Copyright 2016-2020 The Libsacloud Authors
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//      http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15package api
16
17import (
18	"encoding/json"
19
20	"github.com/sacloud/libsacloud/sacloud"
21)
22
23// NewsFeedAPI フィード(障害/メンテナンス情報)API
24type NewsFeedAPI struct {
25	client *Client
26}
27
28// NewsFeedURL フィード取得URL
29var NewsFeedURL = "https://secure.sakura.ad.jp/rss/sakuranews/getfeeds.php?service=cloud&format=json"
30
31// NewNewsFeedAPI フィード(障害/メンテナンス情報)API
32func NewNewsFeedAPI(client *Client) *NewsFeedAPI {
33	return &NewsFeedAPI{
34		client: client,
35	}
36}
37
38// GetFeed フィード全件取得
39func (api *NewsFeedAPI) GetFeed() ([]sacloud.NewsFeed, error) {
40
41	var res = []sacloud.NewsFeed{}
42	data, err := api.client.newRequest("GET", NewsFeedURL, nil)
43	if err != nil {
44		return res, err
45	}
46
47	if err := json.Unmarshal(data, &res); err != nil {
48		return nil, err
49	}
50	return res, nil
51}
52
53// GetFeedByURL 指定のURLを持つフィードを取得
54func (api *NewsFeedAPI) GetFeedByURL(url string) (*sacloud.NewsFeed, error) {
55	res, err := api.GetFeed()
56	if err != nil {
57		return nil, err
58	}
59	for _, r := range res {
60		if r.URL == url {
61			return &r, nil
62		}
63	}
64	return nil, nil
65}
66